Re: SQLTemplate / inExp

From: Cris Daniluk (cris.danilu..mail.com)
Date: Tue Feb 07 2006 - 11:53:44 EST

  • Next message: Dave Merrin: "RE: Query using foreign objects"

    In a comma delimited statement, though not in a inner-select within
    the IN. Anyway, as mentioned, this patch only modifies SQLTemplate
    behavior to be consistent with the existing expression code, which
    does not address any potential limit issues.

    If we wanted to address this issue, we'd need to in several places.

    By the way, that default varies between versions :)

    On 2/7/06, Joshua Pyle <joshua.t.pyl..mail.com> wrote:
    > This may be a bit off topic but in Oracle by default there is a limit
    > of 250 elements in comma delimited in statement. My only reason for
    > bringing this up was to account for this when building any patch.
    >
    >
    >
    > --
    > Joshua T. Pyle
    > Go has always existed.
    >
    >
    > On 2/7/06, Cris Daniluk <cris.danilu..mail.com> wrote:
    > > I've seen Oracle data warehouse queries that push upward of tens of
    > > thousands in a single IN, using a join index.
    > >
    > > So I agree - most likely there are limits set by the DBA. Maybe
    > > Cayenne could issue a info notice if you are above some size?
    > >
    > > Cris
    > >
    > > On 2/7/06, Gentry, Michael (Contractor) <michael_gentr..anniemae.com> wrote:
    > > > I've hit hard limits in Oracle before. I believe they are set by the
    > > > DBA. Of course, that's been a while ago, so the DB world may have
    > > > changed quite a bit. I always operate under the assumption I can't do
    > > > more than about 250 items in an IN clause ...
    > > >
    > > > /dev/mrg
    > > >
    > > >
    > > > -----Original Message-----
    > > > From: Cris Daniluk [mailto:cris.danilu..mail.com]
    > > > Sent: Monday, February 06, 2006 7:50 PM
    > > > To: cayenne-use..bjectstyle.org
    > > > Subject: Re: SQLTemplate / inExp
    > > >
    > > >
    > > > More importantly, we use IN in all sorts of other places, namely
    > > > inExp. That's a great point and a conversation worth having, but I
    > > > don't think its relevant to this specific issue :)
    > > >
    > > > In general, it seems like most DBMS have no hard limit, but definitely
    > > > a practical limit.
    > > >
    > > > On 2/6/06, Andrus Adamchik <andru..bjectstyle.org> wrote:
    > > > > I wouldn't be surprised. But then this is SQLTemplate we are talking
    > > > > about, and Cayenne shouldn't try to second-guess the user. Any better
    > > > > ideas?
    > > > >
    > > > > Andrus
    > > > >
    > > > >
    > > > > On Feb 6, 2006, at 7:26 PM, Joshua Pyle wrote:
    > > > >
    > > > > > Some Databases have size limits for the IN statement
    > > > > >
    > > > > > --
    > > > > > Joshua T. Pyle
    > > > > > Go has always existed.
    > > > > >
    > > > > >
    > > > > > On 2/6/06, Cris Daniluk <cris.danilu..mail.com> wrote:
    > > > > >> I'm experimenting with a patch I created to do just that.
    > > > > >> Hopefully it works :)
    > > > > >>
    > > > > >> On 2/6/06, Andrus Adamchik <andru..bjectstyle.org> wrote:
    > > > > >>> For now Velocity #foreach is your friend.
    > > > > >>>
    > > > > >>> Also I would happily commit a patch to the
    > > > > >>> org.objectstyle.cayenne.access.jdbc.BindDirective that would
    > > > > >>> internally expand a list of objects the the comma-separated
    > > > > >>> syntax :-)
    > > > > >>>
    > > > > >>> So that you could write "WHERE field IN (#bind($list CHAR))"
    > > > > >>>
    > > > > >>> Andrus
    > > > > >>>
    > > > > >>>
    > > > > >>> On Feb 6, 2006, at 3:43 PM, Cris Daniluk wrote:
    > > > > >>>
    > > > > >>>> Apologies if I've overlooked something simple, but for the life
    > > > > >>>> of me
    > > > > >>>> I can't figure out how to bind a list to a query using something
    > > > > >>>> like
    > > > > >>>> #bind().
    > > > > >>>>
    > > > > >>>> I'd basically like to do a simple IN query:
    > > > > >>>>
    > > > > >>>> SELECT * FROM table WHERE field IN ($list)
    > > > > >>>>
    > > > > >>>> It doesn't seem like SQLTemplateProcessor and BindDirective
    > > > > >>>> support it
    > > > > >>>> now, but it seems like it could by simply detecting Collection
    > > > and
    > > > > >>>> making a few simple changes to the query output.
    > > > > >>>>
    > > > > >>>> Is there another way?
    > > > > >>>>
    > > > > >>>> Cris
    > > > > >>>>
    > > > > >>>
    > > > > >>>
    > > > > >>
    > > > > >
    > > > >
    > > > >
    > > >
    > >
    >



    This archive was generated by hypermail 2.0.0 : Tue Feb 07 2006 - 11:53:46 EST