Overview
Comment: | Add the write_lump() function (uses upsert, which SQLite recently added) |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
a55e51e10053ba27ea308951b3423de0 |
User & Date: | user on 2018-06-09 00:42:29 |
Other Links: | manifest | tags |
Context
2018-06-10
| ||
05:27 | Corrections and completions of class loading; implement -x switch; correction to schema check-in: 08625cbba0 user: user tags: trunk | |
2018-06-09
| ||
00:42 | Add the write_lump() function (uses upsert, which SQLite recently added) check-in: a55e51e100 user: user tags: trunk | |
2018-06-08
| ||
21:15 | More class loading codes; correction to user cache check-in: 81d74d79e1 user: user tags: trunk | |
Changes
Modified heromesh.h from [89943d20fd] to [e6403c7a41].
︙ | ︙ | |||
38 39 40 41 42 43 44 45 46 47 48 49 50 51 | extern xrm_db*resourcedb; extern const char*basefilename; extern xrm_quark optionquery[16]; extern Uint32 generation_number; extern char main_options[128]; unsigned char*read_lump(int sol,int lvl,long*sz,sqlite3_value**us); void set_cursor(int id); #define FIL_SOLUTION 1 #define FIL_LEVEL 0 #define LUMP_LEVEL_IDX (-1) #define LUMP_CLASS_DEF (-2) | > | 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 | extern xrm_db*resourcedb; extern const char*basefilename; extern xrm_quark optionquery[16]; extern Uint32 generation_number; extern char main_options[128]; unsigned char*read_lump(int sol,int lvl,long*sz,sqlite3_value**us); void write_lump(int sol,int lvl,long sz,const unsigned char*data); void set_cursor(int id); #define FIL_SOLUTION 1 #define FIL_LEVEL 0 #define LUMP_LEVEL_IDX (-1) #define LUMP_CLASS_DEF (-2) |
︙ | ︙ |
Modified main.c from [91b8dc3f22] to [af17e022b5].
︙ | ︙ | |||
171 172 173 174 175 176 177 178 179 180 181 182 183 184 | } else { *sz=0; if(us) *us=0; } sqlite3_reset(readusercachest); return buf; } static void init_usercache(void) { sqlite3_stmt*st; int z; sqlite3_int64 t1,t2; char*nam1; char*nam2; | > > > > > > > > > > > > > > > > | 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 | } else { *sz=0; if(us) *us=0; } sqlite3_reset(readusercachest); return buf; } void write_lump(int sol,int lvl,long sz,const unsigned char*data) { // Writes a lump to the user cache. // The actual Hamster archive files will be updated when the program terminates. sqlite3_stmt*st; int e; if(e=sqlite3_prepare_v2(userdb,"INSERT INTO `USERCACHEDATA`(`FILE`,`LEVEL`,`NAME`,`DATA`) VALUES(?1,?2,CASE WHEN ?2 < 0 THEN ?3 ELSE ?2 || ?3 END,?4)" " ON CONFLICT(`FILE`,`LEVEL`) DO UPDATE SET `DATA` = ?4;",-1,&st,0)) fatal("SQL error (%d): %s\n",e,sqlite3_errmsg(userdb)); sqlite3_bind_int64(st,1,sol?solutionuc:leveluc); sqlite3_bind_int(st,2,lvl); sqlite3_bind_text(st,3,lvl==LUMP_CLASS_DEF?"CLASS.DEF":lvl==LUMP_LEVEL_IDX?"LEVEL.IDX":sol?".SOL":".LVL",-1,SQLITE_STATIC); sqlite3_bind_blob64(st,4,data,sz,0); while((e=sqlite3_step(st))==SQLITE_ROW); if(e!=SQLITE_DONE) fatal("SQL error (%d): %s\n",e,sqlite3_errmsg(userdb)); sqlite3_finalize(st); } static void init_usercache(void) { sqlite3_stmt*st; int z; sqlite3_int64 t1,t2; char*nam1; char*nam2; |
︙ | ︙ |