Hi Henrik,

> I wiped everything and switched to 64bit, clean slate.
> 
> How would it be possible to walk through all relations in all classes
> and delete objects referencing missing objects without breaking in the
> process?

You mean, to repair the broken state (because otherwise missing objects
should never be referenced)? The easiest way would be to go through all
objects is with 'dbMap' (from "lib/too.l"), e.g.:

   (dbMap '((Obj) (unless (ext? Obj) .. something is wrong ..)))

'dbMap' is also used internally by checking tools like 'dbCheck' or
'dangling'. It iterates over all reachable objects and trees in the
database.

In any case, the first thing to do is just call (dbCheck), and see if
and where it breaks. I run this each time I stop a production app to
install an upgrade or to do other maintenance work.


> Or better yet, simply ignore and return NIL instead of the missing
> referenced object, to make things more forgiving?

This may be trickier, as this must be done at runtime of the app.
Anyway, here too, 'ext?' can be used to see if an object is real.

Cheers,
- Alex
-- 
UNSUBSCRIBE: mailto:picolisp@software-lab.de?subject=Unsubscribe

Reply via email to