Overview
| Comment: | Move around some BEGIN and COMMIT commands to avoid misnested transactions in some cases |
|---|---|
| Downloads: | Tarball | ZIP archive |
| Timelines: | family | ancestors | descendants | both | trunk |
| Files: | files | file ages | folders |
| SHA1: |
b4a4337c4ace814315df7bc4bba02504 |
| User & Date: | user on 2018-06-10 06:10:45.623 |
| Other Links: | manifest | tags |
Context
|
2018-06-10
| ||
| 16:34 | Add some SQL functions check-in: 81f52e6f42 user: user tags: trunk | |
| 06:10 | Move around some BEGIN and COMMIT commands to avoid misnested transactions in some cases check-in: b4a4337c4a user: user tags: trunk | |
| 05:27 | Corrections and completions of class loading; implement -x switch; correction to schema check-in: 08625cbba0 user: user tags: trunk | |
Changes
Modified main.c
from [4a37978eeb]
to [8ee65d5a1a].
| ︙ | |||
71 72 73 74 75 76 77 | 71 72 73 74 75 76 77 78 79 80 81 82 83 84 | - |
}
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;
|
| ︙ | |||
132 133 134 135 136 137 138 | 131 132 133 134 135 136 137 138 139 140 141 142 143 144 | - |
}
while((z=sqlite3_step(st))==SQLITE_ROW);
if(z!=SQLITE_DONE) fatal("SQL error (%d): %s\n",z,sqlite3_errmsg(userdb));
fseek(fp,t,SEEK_CUR);
}
done:
sqlite3_finalize(st);
|
| ︙ | |||
201 202 203 204 205 206 207 208 209 210 211 212 213 214 | 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 | + |
int z;
sqlite3_int64 t1,t2;
char*nam1;
char*nam2;
char*nam3;
struct stat fst;
fprintf(stderr,"Initializing user cache...\n");
if(z=sqlite3_exec(userdb,"BEGIN;",0,0,0)) fatal("SQL error (%d): %s\n",z,sqlite3_errmsg(userdb));
if(z=sqlite3_prepare_v2(userdb,"SELECT `ID`, `TIME` FROM `USERCACHEINDEX` WHERE `NAME` = ?1;",-1,&st,0)) fatal("SQL error (%d): %s\n",z,sqlite3_errmsg(userdb));
nam1=sqlite3_mprintf("%s.level",basefilename);
if(!nam1) fatal("Allocation failed\n");
nam2=realpath(nam1,0);
if(!nam2) fatal("Cannot find real path of '%s': %m\n",nam1);
levelfp=fopen(nam2,"r");
if(!levelfp) fatal("Cannot open '%s' for reading: %m\n",nam2);
|
| ︙ | |||
250 251 252 253 254 255 256 257 258 259 260 261 262 263 | 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 | + |
if(!fst.st_size) fatal("File '%s' has zero size\n",nam2);
if(fst.st_mtime>t2 || fst.st_ctime>t2) solutionuc=reset_usercache(solutionfp,nam3,&fst,".SOL");
free(nam2);
free(nam3);
if(z=sqlite3_prepare_v3(userdb,"SELECT * FROM `USERCACHEDATA` WHERE `FILE` = ?1 AND `LEVEL` = ?2;",-1,SQLITE_PREPARE_PERSISTENT,&readusercachest,0)) {
fatal("SQL error (%d): %s\n",z,sqlite3_errmsg(userdb));
}
if(z=sqlite3_exec(userdb,"COMMIT;",0,0,0)) fatal("SQL error (%d): %s\n",z,sqlite3_errmsg(userdb));
fprintf(stderr,"Done\n");
}
static void init_sql(void) {
char*s;
char*p;
const char*v;
|
| ︙ |
Modified picture.c
from [95be04510a]
to [6b3d3ff78d].
| ︙ | |||
227 228 229 230 231 232 233 | 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 | - + |
i=j=0;
sscanf(v," %d %n",&i,&j);
if(!j) break;
if(i<2 || i>255) fatal("Invalid picture size %d\n",i);
wantsize[nwantsize++]=i;
v+=j;
}
|
| ︙ | |||
295 296 297 298 299 300 301 | 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 | - + |
for(i=0;i<n;i++) {
if((j=sqlite3_step(st))!=SQLITE_ROW) fatal("SQL error (%d): %s\n",j,j==SQLITE_DONE?"Incorrect number of rows in a temporary table":sqlite3_errmsg(userdb));
fseek(fp,sqlite3_column_int64(st,1),SEEK_SET);
load_one_picture(fp,sqlite3_column_int(st,0),altImage);
}
sqlite3_finalize(st);
fclose(fp);
|
| ︙ |