What's the right way to use update/commit/rollback hooks to produce a
replay log?
Currently I'm doing it at a high level by just recording all SQL
statements into a replay log, and that works really well except fails in
some cases like with the use of CURRENT_TIMESTAMP. (Replaying that will
insert at the time of replay, and not the time of original insert.)
I'm considering switching to a low-level replay log using the hook
functions. What's the recommended way to do this?
In particular:
1) How do I hook schema and index changes? The docs say the update hook
ignores changes to system tables.
2) Is there any way to determine which columns of a row changed?
3) Replaying INSERT/DELETE is straightforward, where the replay log
would simply contain something like:
DELETE FROM <table> WHERE rowid=<rowid>;
And:
INSERT INTO <table> VALUES ( <rowid>, ... );
But what's the best way to replay an UPDATE? If I can't determine which
columns were modified, is there any choice but to update everything? If
so, is there any more compact way to do this than:
UPDATE <table> SET <col1>=<val1>, <col2>=<val2>, ... WHERE rowid=<rowid>;
My tables are rather wide, so this will be pretty inefficient,
especially if I were to update a single column of an entire table.
Thanks for your suggestions!
-david
_______________________________________________
sqlite-users mailing list
[email protected]
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users