> -----Original Message-----
> From: Bert Huijben [mailto:[email protected]]
> Sent: maandag 22 april 2013 17:18
> To: 'Julian Foad'; 'Johan Corveleyn'
> Cc: 'Subversion Development'
> Subject: RE: Pristine text missing - cleanup doesn't work
>
>
>
> > -----Original Message-----
> > From: Julian Foad [mailto:[email protected]]
> > Sent: maandag 22 april 2013 16:34
> > To: Johan Corveleyn
> > Cc: Bert Huijben; Subversion Development
> > Subject: Re: Pristine text missing - cleanup doesn't work
> >
> > I have filed this as issue #4357, "Pristine text missing - cleanup doesn't
> work",
> > with a reference to this email thread.
> >
> > I thought of the following possible improvements, which I have noted in
> the
> > doc string of pristine_cleanup_wcroot():
> >
> > * TODO: At least check that any zero refcount is really correct, before
> > * using it.
>
> We already do this in debug builds.
>
> The foreign key check enforces this, but at a certainly not-null performance
> cost (understatement). This is why I haven't enabled this for release builds.
> (The original reason for not enabling them was that it required a newer Sqlite
> version)
>
> You can't delete a PRISTINE row that is used with foreign keys enabled. (That
> part is currently not backed by an index... the performance killer. And
> optimized away by our reference counting via triggers)
If we perform a check to verify the reference count before using it for cleanup
we should just remove the reference count updating triggers. This gives a few
percent performance boost to every update/add/delete on the NODES table.
Given that we never update the reference count manually I would be very
surprised if we could ever find a reason why somebody not using the Sqlite db
directly (via Sqlite or a third party sqlite db implementation) would get the
refcount in a broken state.
Bert