Hi Alexey, Thank you for this extension which could be quite interesting to many SQLite users. Is there any documentation on this available, possibly in your new book? I couldn't find any with the source at http://mobigroup.ru/files/sqlite-ext/
Also you have used the GNU License which means we cannot use this in any commercial applications. It also goes against the Public Domain license used by SQLite itself - see http://www.sqlite.org/copyright.html It would be great if this could be changed. Tuesday, July 14, 2009, 10:17:18 PM, you wrote: AP> Hello! AP> This may be used for table versioning and replication. AP> Source code is available here AP> http://mobigroup.ru/files/sqlite-ext/ AP> You can get from the debian repository the SQLite build with some extra extensions: AP> deb http://mobigroup.ru/debian/ lenny main contrib non-free AP> deb-src http://mobigroup.ru/debian/ lenny main contrib non-free AP> =========Test script============== AP> CREATE TABLE sessions ( AP> key text not null, AP> value text not null AP> ); AP> insert into sessions (key,value) values ('test key 0','test value 0'); AP> select versioning_table('sessions'); AP> .schema AP> select * from _versioning_sessions; AP> insert into sessions (key,value) values ('test key 1','test value 1'); AP> insert into sessions (key,value) values ('test key 2','test value 2'); AP> select * from _versioning_sessions; AP> delete from sessions; AP> select * from _versioning_sessions; AP> select unversioning_table('sessions'); AP> .schema AP> ==========Test script results========= sqlite>> CREATE TABLE sessions ( AP> ...> key text not null, AP> ...> value text not null AP> ...> ); sqlite>> insert into sessions (key,value) values ('test key 0','test value 0'); sqlite>> sqlite>> select versioning_table('sessions'); sqlite>> .schema AP> CREATE TABLE _undo(sql TEXT, status TEXT); AP> CREATE TABLE _versioning_sessions(key text,value text, _date AP> REAL, _action TEXT, _rowid INTEGER); AP> CREATE TABLE sessions ( AP> key text not null, AP> value text not null AP> ); AP> CREATE TRIGGER _versioning_sessions_d AFTER DELETE ON sessions AP> BEGIN INSERT INTO _versioning_sessions (_date, _action, _rowid) AP> values (julianday('now'), 'D', old.rowid);END; AP> CREATE TRIGGER _versioning_sessions_i AFTER INSERT ON sessions AP> BEGIN INSERT INTO _versioning_sessions SELECT *, julianday('now') AP> as _date, 'I' as _action, new.rowid as _rowid FROM sessions WHERE rowid=new.rowid;END; AP> CREATE TRIGGER _versioning_sessions_u AFTER UPDATE ON sessions AP> BEGIN INSERT INTO _versioning_sessions SELECT *, julianday('now') AP> as _date, 'U' as _action, new.rowid as _rowid FROM sessions WHERE rowid=new.rowid;END; sqlite>> select * from _versioning_sessions; AP> test key 0|test value 0|2455027.00753221|I|1 sqlite>> sqlite>> insert into sessions (key,value) values ('test key 1','test value 1'); sqlite>> insert into sessions (key,value) values ('test key 2','test value 2'); sqlite>> select * from _versioning_sessions; AP> test key 0|test value 0|2455027.00753221|I|1 AP> test key 1|test value 1|2455027.00753347|I|2 AP> test key 2|test value 2|2455027.00753368|I|3 sqlite>> sqlite>> delete from sessions; sqlite>> select * from _versioning_sessions; AP> test key 0|test value 0|2455027.00753221|I|1 AP> test key 1|test value 1|2455027.00753347|I|2 AP> test key 2|test value 2|2455027.00753368|I|3 AP> ||2455027.00753382|D|1 AP> ||2455027.00753382|D|2 AP> ||2455027.00753382|D|3 sqlite>> sqlite>> select unversioning_table('sessions'); sqlite>> .schema AP> CREATE TABLE _undo(sql TEXT, status TEXT); AP> CREATE TABLE _versioning_sessions(key text,value text, _date AP> REAL, _action TEXT, _rowid INTEGER); AP> CREATE TABLE sessions ( AP> key text not null, AP> value text not null AP> ); sqlite>> select * from _versioning_sessions; AP> test key 0|test value 0|2455027.00753221|I|1 AP> test key 1|test value 1|2455027.00753347|I|2 AP> test key 2|test value 2|2455027.00753368|I|3 AP> ||2455027.00753382|D|1 AP> ||2455027.00753382|D|2 AP> ||2455027.00753382|D|3 AP> ============================== AP> Best regards, Alexey Pechnikov. AP> http://pechnikov.tel/ AP> _______________________________________________ AP> sqlite-users mailing list AP> sqlite-users@sqlite.org AP> http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users -- Best regards, Neville Franks, http://www.surfulater.com http://blog.surfulater.com _______________________________________________ sqlite-users mailing list sqlite-users@sqlite.org http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users