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 sqlite-users@sqlite.org http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users