Differences From:
File
src/xfer.c
part of check-in
[8010bb41e1]
- Speed enhancement in the findSrcid() routine of content.c. Allow 5
digit numbers on counts while syncing.
by
drh on
2008-03-08 18:59:00.
[view]
To:
File
src/xfer.c
part of check-in
[043d63d4aa]
- Additional speed improvements for clone and rebuild.
by
drh on
2008-03-08 19:42:53.
[view]
@@ -57,11 +57,21 @@
** Compare to uuid_to_rid(). This routine takes a blob argument
** and does less error checking.
*/
static int rid_from_uuid(Blob *pUuid, int phantomize){
- int rid = db_int(0, "SELECT rid FROM blob WHERE uuid='%b'", pUuid);
+ static Stmt q;
+ int rid;
+
+ db_static_prepare(&q, "SELECT rid FROM blob WHERE uuid=:uuid");
+ db_bind_str(&q, ":uuid", pUuid);
+ if( db_step(&q)==SQLITE_ROW ){
+ rid = db_column_int(&q, 0);
+ }else{
+ rid = 0;
+ }
+ db_reset(&q);
if( rid==0 && phantomize ){
- rid = content_put(0, blob_str(pUuid), 0);
+ rid = content_new(blob_str(pUuid));
}
return rid;
}
@@ -841,18 +851,12 @@
if( xfer.nToken==2
&& blob_eq(&xfer.aToken[0], "igot")
&& blob_is_uuid(&xfer.aToken[1])
){
- int rid = 0;
- if( pullFlag || cloneFlag ){
- if( !db_exists("SELECT 1 FROM blob WHERE uuid='%b' AND size>=0",
- &xfer.aToken[1]) ){
- rid = content_put(0, blob_str(&xfer.aToken[1]), 0);
- newPhantom = 1;
- }
- }
- if( rid==0 ){
- rid = rid_from_uuid(&xfer.aToken[1], 0);
+ int rid = rid_from_uuid(&xfer.aToken[1], 0);
+ if( rid==0 && (pullFlag || cloneFlag) ){
+ rid = content_new(blob_str(&xfer.aToken[1]));
+ newPhantom = 1;
}
remote_has(rid);
}else