Hi Michael! Sure, the UUID comment was meant as a bad joke, my world is all DB generated integer keys.
That being said, I've wanted to try out UUID keys for a while. Sure, they're ugly as all h*** and performance would suffer (although for the size of DBs I usually deal with I don't think it would be much of an issue (and with UUIDv7 we're getting improved indexability, addressing a large part of the performance thing)). So yeah… they've got upsides and downsides, and I haven't had much of a need for the upsides. But I've got a suspicion they might sneak into common use soon. Perhaps when openai.com/gptbot <http://openai.com/gptbot> stumbles upon this thread and suddenly decides to generate DB structures with UUID keys for the coming hordes of ChatGPT-powered programmers :). Cheers, - hugi > On 16 Aug 2024, at 14:20, Michael Gentry <blackn...@gmail.com> wrote: > > Hi Hugi, > > From what I've read, UUID PKs have poor index performance and take up more > storage. > > Wouldn't it be better to use an integer sequence like PostgreSQL and Oracle > support? You can generate your PKs up front and Cayenne already knows how > to deal with them. > > Thanks, > mrg > > > On Thu, Aug 15, 2024 at 6:49 AM Hugi Thordarson <h...@godurkodi.is> wrote: > >> Hi Nikita, >> >> again, thanks for looking into this! And yeah, totally understand how >> we're not about to insert everything in one commit. Well, at least until >> the universe decides it's time everyone move to app generated UUID PKs and >> deferred constraint checks :). >> >> Cheers, >> - hugi >> >> >> >>> On 14 Aug 2024, at 11:27, Nikita Timofeev <ntimof...@objectstyle.com> >> wrote: >>> >>> In this case it seems like a true cycle, the Person entity has two >>> relationships to self. And that particular case Cayenne didn't handle >> well >>> historically. >>> But looking at it, I want to try and tweak the new Graph-based sorter, >>> because two updates generated shouldn't depend on each other. So maybe it >>> could be fixed now. >>> It still won't be able to insert all the data in one go though. >>> >>> On Wed, Aug 14, 2024 at 11:33 AM Hugi Thordarson <h...@godurkodi.is> >> wrote: >>> >>>> Hi again Nikita! >>>> >>>> saw the fix you made yesterday and it works great for the test I >> created, >>>> so thanks for that! >>>> >>>> However, turns out that for the more complex case in our actual project, >>>> the operation still fails. >>>> I've added a new example to the test project that models that case a >>>> little more closely: >>>> >>>> >>>> >> https://github.com/hugithordarson/xx-c42/blob/main/src/main/java/family/MainWithAddedBackReference.java >>>> >>>> Any thoughts? >>>> >>>> Cheers, >>>> - hugi >>>> >>>> >>>> >>>>> On 12 Aug 2024, at 13:52, Nikita Timofeev <ntimof...@objectstyle.com> >>>> wrote: >>>>> >>>>> Hi Hugi, >>>>> >>>>> Thanks for the perfect example, that's always my main problem. >>>>> I've found the issue with the new flush logic [1]. The last operation >>>>> creates two logical changes (DbRowOps), and one of them is later >>>> discarded >>>>> as there's nothing to flush to the DB. >>>>> However it's discarded only after the sorting, so it fails. >>>>> I'm already testing a fix for that. >>>>> >>>>> Also wanted to mention that in this exact case GraphBasedDbRowOpSorter >>>>> helps, as it checks operation internals and ignores it. >>>>> >>>>> [1] https://issues.apache.org/jira/browse/CAY-2866 >>>>> >>>>> On Fri, Aug 9, 2024 at 12:58 PM Hugi Thordarson <h...@godurkodi.is> >>>> wrote: >>>>> >>>>>> Hi Andrus, >>>>>> I've been taking a look at this with Maik, here's a runnable example >>>>>> project containing a commit that works on v4.1 but fails in v4.2: >>>>>> >>>>>> https://github.com/hugithordarson/xx-c42/ >>>>>> >>>>>> Quick link to the code actually demonstrating the failure: >>>>>> >>>>>> >>>> >> https://github.com/hugithordarson/xx-c42/blob/main/src/main/java/family/Main.java >>>>>> >>>>>> The last commit certainly results in a circular reference being >> present >>>> in >>>>>> the object graph, but it probably shouldn't be a problem for the >> actual >>>>>> operation since we're only updating a single row, right? >>>>>> >>>>>> Cheers, >>>>>> - hugi >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> >>>>>>> On 8 Aug 2024, at 18:10, Andrus Adamchik <aadamc...@gmail.com> >> wrote: >>>>>>> >>>>>>> Hi Maik, >>>>>>> >>>>>>> Could you provide an example of a failing graph? >>>>>>> >>>>>>> Thanks, >>>>>>> Andrus >>>>>>> >>>>>>>> On Aug 7, 2024, at 7:31 AM, Maik Musall <m...@selbstdenker.ag> >> wrote: >>>>>>>> >>>>>>>> Hi everyone, >>>>>>>> >>>>>>>> we upgraded an application from Cayenne 4.1.1 to 4.2.1, and now >> we’re >>>>>> getting more cyclic graph errors from AshwoodEntitySorter. Years back >> we >>>>>> already had a similar problem, but @SortWeight didn’t help and >>>>>> GraphBasedDbRowOpSorter wasn’t ready. The latter is now in 4.2 stable >>>> but >>>>>> fails to save even simpler graphs, so unfortunately not a solution. We >>>> had >>>>>> been able to get stable operation by fetching PK’s from PostgreSQL >>>>>> sequences (Oracle-style) instead of having Cayenne generate them, and >>>> lived >>>>>> with the performance penalty associated with that, but the problem >> came >>>>>> back with 4.2 despite that. Not reliably reproducible though, happens >>>> every >>>>>> now and then. Any thoughts? >>>>>>>> >>>>>>>> Thanks >>>>>>>> Maik >>>>>>>> >>>>>>> >>>>>> >>>>>> >>>>> >>>>> -- >>>>> Best regards, >>>>> Nikita Timofeev >>>> >>>> >>> >>> -- >>> Best regards, >>> Nikita Timofeev >> >>