Hi all,

found some more bugs I think.

session-create.sql:

Because in sqlite, FOREIGN KEY constraints are parsed but are not enforced, a trigger is needed to mimick ON DELETE CASCADE. I added the following statement at the end of session-create.sql (Found this hint at http://www.justatheory.com/computers/databases/sqlite/):

create trigger fkd_session_id
before DELETE ON rivet_session
for each row begin
   DELETE FROM rivet_session_cache WHERE session_id = OLD.session_id;
end;


dio_Sqlite.tcl:

Sqlite doesn't know about timestamp type or function (See http://www.sqlite.org/cvstrac/wiki?p=DateAndTimeFunctions), so I added a bit of code before actually running the sql statements (See the code snippet enclosed in comment):

   method exec {req} {
       open

       if {[$dbcmd complete $req] == 0} {
       append req ";"
           if {[$dbcmd complete $req] == 0} {
               return -code error "Incomplete SQL"
       }
       }

        ### convert to valid statements for sqlite

if {[::string match -nocase "delete from rivet_session where timestamp 'now'*" $req]} { set req "DELETE FROM rivet_session WHERE julianday('now','localtime')*86400 - julianday(session_update_time)*86400 > 86400;"
        }\
        else {
       regsub -all -- {'now'} $req {datetime('now','localtime')} req
        }

        ### end convert

       set obj [::DIO::SqliteResult #auto -request $req -dbcmd $dbcmd]
       ...
       ...


Oliver


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to