@@ -253,11 +253,13 @@
Blob x;
Stmt s;
content_get(rid, &x);
db_prepare(&s, "UPDATE blob SET content=:c WHERE rid=%d", rid);
+ blob_compress(&x, &x);
db_bind_blob(&s, ":c", &x);
db_exec(&s);
db_finalize(&s);
+ blob_reset(&x);
db_multi_exec("DELETE FROM delta WHERE rid=%d", rid);
}
}
@@ -285,9 +287,9 @@
*/
void content_deltify(int rid, int srcid, int force){
int s;
Blob data, src, delta;
- static Stmt s1, s2;
+ Stmt s1, s2;
if( srcid==rid ) return;
if( !force && findSrcid(rid, 0)>0 ) return;
s = srcid;
while( (s = findSrcid(s, 0))>0 ){
@@ -301,18 +303,17 @@
blob_delta_create(&src, &data, &delta);
if( blob_size(&src)>=50 && blob_size(&data)>=50 &&
blob_size(&delta) < blob_size(&data)*0.75 ){
blob_compress(&delta, &delta);
- db_static_prepare(&s1, "UPDATE blob SET content=:data WHERE rid=:rid");
- db_static_prepare(&s2, "REPLACE INTO delta(rid,srcid)VALUES(:rid,:sid)");
- db_bind_int(&s1, ":rid", rid);
- db_bind_blob(&s1, ":data", &delta);
- db_bind_int(&s2, ":rid", rid);
- db_bind_int(&s2, ":sid", srcid);
+ db_prepare(&s1, "UPDATE blob SET content=:data WHERE rid=%d", rid);
+ db_prepare(&s2, "REPLACE INTO delta(rid,srcid)VALUES(%d,%d)", rid, srcid);
+ db_bind_blob(&s1, ":data", &delta);
db_begin_transaction();
db_exec(&s1);
db_exec(&s2);
db_end_transaction(0);
+ db_finalize(&s1);
+ db_finalize(&s2);
}
blob_reset(&src);
blob_reset(&data);
blob_reset(&delta);