Re: Circle references

From: Andrus Adamchik (andru..bjectstyle.org)
Date: Fri Jul 10 2009 - 05:04:33 EDT

  • Next message: Zissis Trabaris: "Progress ODBC/JDBC support"

    I didn't write this code, but I recall there is at least an attempt
    there to order objects of the same type to address a resolvable cycle
    like the one you've mentioned. Not sure what the limitations are... 1
    step cycle maybe (a parent-child relationship to self), but I really
    have no idea without looking at the code.

    Andrus

    On Jul 10, 2009, at 11:47 AM, Andrey Razumovsky wrote:

    > It is possible to handle the incomplete circle situation, but in
    > case of
    > complete circle it becomes very very tricky. Imagine situation
    > A1->B->C->A2
    > The correct (and only) insert order is A2, C, B, A1. But Cayenne can
    > never
    > support this currently, because it is insering all records of one
    > entity at
    > once (?).
    >
    > 2009/7/10 Andrus Adamchik <andru..bjectstyle.org>
    >
    >> Ok, so seems like my understanding is matching yours. Looks like a
    >> bug.
    >>
    >> Andrus
    >>
    >>
    >> On Jul 10, 2009, at 11:36 AM, Andrey Razumovsky wrote:
    >>
    >> //dev
    >>> There is no cycle between CDO, but there is cycle in DataMap between
    >>> DbEntities. AshwoodEntitySorter sorts entities that were changed,
    >>> not data
    >>> objects. For entities in same circle comparison result is zero
    >>>
    >>> 2009/7/10 Andrus Adamchik <andru..bjectstyle.org>
    >>>
    >>> Let me see if I get this right... In this example there is
    >>> obviously no
    >>>> closed cycle. So you are saying AshwoodEntitySorter still assumes
    >>>> there
    >>>> is
    >>>> one, and gives up on ordering? Then this is a bug.
    >>>>
    >>>> Andrus
    >>>>
    >>>>
    >>>>
    >>>> On Jul 10, 2009, at 11:20 AM, Andrey Razumovsky wrote:
    >>>>
    >>>> Imagine references avaliable A->B->C->A
    >>>>
    >>>>>
    >>>>> 1. Create dependant entity B
    >>>>> 2. Create master entity A
    >>>>> 3. b.setA(a)
    >>>>> 4. Commit.
    >>>>>
    >>>>> C is even never used.
    >>>>>
    >>>>>
    >>>>
    >>>>
    >>



    This archive was generated by hypermail 2.0.0 : Fri Jul 10 2009 - 05:05:40 EDT