Overview
Comment: | Use a SQL trigger to delete cache sets. |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
e8493ef846daa750feeeb563790e9660 |
User & Date: | user on 2021-07-23 03:32:33 |
Other Links: | manifest | tags |
Context
2021-08-05
| ||
18:34 | Avoid segfault in level strings list, when trying to edit or select non-existing strings. check-in: 3b07da3314 user: user tags: trunk | |
2021-07-23
| ||
03:32 | Use a SQL trigger to delete cache sets. check-in: e8493ef846 user: user tags: trunk | |
2021-06-27
| ||
07:23 | If level number specified on command-line exceeds maximum, use maximum level number instead. check-in: 0da277ed18 user: user tags: trunk | |
Changes
Modified TODO from [41f1df8ef0] to [e9c47846b0].
︙ | ︙ | |||
8 9 10 11 12 13 14 15 16 17 18 19 20 21 | * Multiple connected objects moving as a unit * Bizarro world * Testing the deferred movement * String data * A ,PopUp command to use a popup with arguments starting from a mark * "Goto message" instruction (?) * Returning a class from COLLIDE/COLLIDEBY to transform * Editor * Mouse dragging * Level index editor * Bizarro world * Selection rectangles * Table of contents for levels * Can define your own columns | > | 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | * Multiple connected objects moving as a unit * Bizarro world * Testing the deferred movement * String data * A ,PopUp command to use a popup with arguments starting from a mark * "Goto message" instruction (?) * Returning a class from COLLIDE/COLLIDEBY to transform * Coordinate input (may be suitable for some kind of games) * Editor * Mouse dragging * Level index editor * Bizarro world * Selection rectangles * Table of contents for levels * Can define your own columns |
︙ | ︙ | |||
37 38 39 40 41 42 43 | * Command-line switch for batch import/export levels * SQL * Implement the GROUP column in the CLASSES table * Allow multiple SQL statements in one binding * Large fonts (width 8 or 16, height 8-32) * Branching replay recording * Slow movement displaying state between triggers | > | 38 39 40 41 42 43 44 45 | * Command-line switch for batch import/export levels * SQL * Implement the GROUP column in the CLASSES table * Allow multiple SQL statements in one binding * Large fonts (width 8 or 16, height 8-32) * Branching replay recording * Slow movement displaying state between triggers * Warning if file changed when uncommited data exists in the cache database |
Modified main.c from [a2b93bffbe] to [da2b52eaf3].
︙ | ︙ | |||
33 34 35 36 37 38 39 40 41 42 43 44 45 46 | static const char schema[]= "BEGIN;" "PRAGMA APPLICATION_ID(1296388936);" "PRAGMA RECURSIVE_TRIGGERS(1);" "CREATE TABLE IF NOT EXISTS `USERCACHEINDEX`(`ID` INTEGER PRIMARY KEY, `NAME` TEXT, `TIME` INT);" "CREATE TABLE IF NOT EXISTS `USERCACHEDATA`(`ID` INTEGER PRIMARY KEY, `FILE` INT, `LEVEL` INT, `NAME` TEXT COLLATE NOCASE, `OFFSET` INT, `DATA` BLOB, `USERSTATE` BLOB);" "CREATE UNIQUE INDEX IF NOT EXISTS `USERCACHEDATA_I1` ON `USERCACHEDATA`(`FILE`, `LEVEL`);" "CREATE TEMPORARY TABLE `PICTURES`(`ID` INTEGER PRIMARY KEY, `NAME` TEXT COLLATE NOCASE, `OFFSET` INT, `DEPENDENT` INT);" "CREATE TEMPORARY TABLE `VARIABLES`(`ID` INTEGER PRIMARY KEY, `NAME` TEXT);" "COMMIT;" ; sqlite3*userdb; xrm_db*resourcedb; | > | 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 | static const char schema[]= "BEGIN;" "PRAGMA APPLICATION_ID(1296388936);" "PRAGMA RECURSIVE_TRIGGERS(1);" "CREATE TABLE IF NOT EXISTS `USERCACHEINDEX`(`ID` INTEGER PRIMARY KEY, `NAME` TEXT, `TIME` INT);" "CREATE TABLE IF NOT EXISTS `USERCACHEDATA`(`ID` INTEGER PRIMARY KEY, `FILE` INT, `LEVEL` INT, `NAME` TEXT COLLATE NOCASE, `OFFSET` INT, `DATA` BLOB, `USERSTATE` BLOB);" "CREATE UNIQUE INDEX IF NOT EXISTS `USERCACHEDATA_I1` ON `USERCACHEDATA`(`FILE`, `LEVEL`);" "CREATE TRIGGER IF NOT EXISTS `USERCACHEINDEX_DELETION` AFTER DELETE ON `USERCACHEINDEX` BEGIN DELETE FROM `USERCACHEDATA` WHERE `FILE` = OLD.`ID`; END;" "CREATE TEMPORARY TABLE `PICTURES`(`ID` INTEGER PRIMARY KEY, `NAME` TEXT COLLATE NOCASE, `OFFSET` INT, `DEPENDENT` INT);" "CREATE TEMPORARY TABLE `VARIABLES`(`ID` INTEGER PRIMARY KEY, `NAME` TEXT);" "COMMIT;" ; sqlite3*userdb; xrm_db*resourcedb; |
︙ | ︙ | |||
70 71 72 73 74 75 76 | static char*hpath; static sqlite3_int64 reset_usercache(FILE*fp,const char*nam,struct stat*stats,const char*suffix) { sqlite3_stmt*st; sqlite3_int64 t,id; char buf[128]; int i,z; | < < < < < < < | 71 72 73 74 75 76 77 78 79 80 81 82 83 84 | static char*hpath; static sqlite3_int64 reset_usercache(FILE*fp,const char*nam,struct stat*stats,const char*suffix) { sqlite3_stmt*st; sqlite3_int64 t,id; char buf[128]; int i,z; if(z=sqlite3_prepare_v2(userdb,"DELETE FROM `USERCACHEINDEX` WHERE `NAME` = ?1;",-1,&st,0)) fatal("SQL error (%d): %s\n",z,sqlite3_errmsg(userdb)); sqlite3_bind_text(st,1,nam,-1,0); while((z=sqlite3_step(st))==SQLITE_ROW); if(z!=SQLITE_DONE) fatal("SQL error (%d): %s\n",z,sqlite3_errmsg(userdb)); sqlite3_finalize(st); t=stats->st_mtime; if(stats->st_ctime>t) t=stats->st_ctime; |
︙ | ︙ |