I just traced down a nasty crash bug with one of my clients that I
really should have known about.  I'm just posting this as a helpful
reminder to other's out there.  This is using the python interface:

My web service is a little too generous in allowing users to change
column types in metakit.  Essentially the following was happening:

stock[shelf:S] was being changed to stock[shelf:I].  The commit
happened just peachy, but the database was essentially corrupt at that
point.  On windows an error message occurs but on OS/X the program
throws a seg fault.

metakit should probably throw a sensible error when you try to change
the type of a column.  This logic seems buried pretty deep in mk so it
might be hard to fix.  If you want to change the type of a column,
look at the recipe I posted a week or so ago.

Anyway, here is a stupid little python script to check for this type
of corruption in a table, I call this after every commit, you don't
have to close the database to run this btw:

def check(db, table):
    code = '"import metakit, sys;st = metakit.storage(\'%s\',0);'\
           'v=st.view(\'%s\');print \'OK\'"'%(db, table)
    r,w = popen2.popen2("python -c %s "%code)
    w.close()
    t = r.read()
    if t.strip() == "OK":
        return True
    return False
_____________________________________________
Metakit mailing list  -  [email protected]
http://www.equi4.com/mailman/listinfo/metakit

Reply via email to