Fossil SCM

Fix a problem with file delta detection in extra_compression().

drh 2017-09-19 04:05 trunk
Commit 4fd147f8154fc774a2922f92b8bc44addd99229411695c45b907c45ffe6c6514
1 file changed +2 -1
+2 -1
--- src/rebuild.c
+++ src/rebuild.c
@@ -495,11 +495,11 @@
495495
/* For individual files that have not been deltaed, try to find
496496
** a parent which is an undeltaed file with the same name in a
497497
** more recent branch.
498498
*/
499499
db_prepare(&q,
500
- "SELECT blob.rid, mlink.fnid FROM blob, mlink, plink"
500
+ "SELECT DISTINCT blob.rid, mlink.fnid FROM blob, mlink, plink"
501501
" WHERE NOT EXISTS(SELECT 1 FROM delta WHERE rid=blob.rid)"
502502
" AND mlink.fid=blob.rid"
503503
" AND mlink.mid=plink.cid"
504504
" AND plink.cid=mlink.mid"
505505
" ORDER BY mlink.fnid, plink.mtime DESC"
@@ -507,10 +507,11 @@
507507
prevfnid = 0;
508508
while( db_step(&q)==SQLITE_ROW ){
509509
rid = db_column_int(&q, 0);
510510
fnid = db_column_int(&q, 1);
511511
if( fnid!=prevfnid ) nPrev = 0;
512
+ prevfnid = fnid;
512513
if( nPrev>0 ){
513514
content_deltify(rid, aPrev, nPrev, 0);
514515
}
515516
if( nPrev<N_NEIGHBOR ){
516517
aPrev[nPrev++] = rid;
517518
--- src/rebuild.c
+++ src/rebuild.c
@@ -495,11 +495,11 @@
495 /* For individual files that have not been deltaed, try to find
496 ** a parent which is an undeltaed file with the same name in a
497 ** more recent branch.
498 */
499 db_prepare(&q,
500 "SELECT blob.rid, mlink.fnid FROM blob, mlink, plink"
501 " WHERE NOT EXISTS(SELECT 1 FROM delta WHERE rid=blob.rid)"
502 " AND mlink.fid=blob.rid"
503 " AND mlink.mid=plink.cid"
504 " AND plink.cid=mlink.mid"
505 " ORDER BY mlink.fnid, plink.mtime DESC"
@@ -507,10 +507,11 @@
507 prevfnid = 0;
508 while( db_step(&q)==SQLITE_ROW ){
509 rid = db_column_int(&q, 0);
510 fnid = db_column_int(&q, 1);
511 if( fnid!=prevfnid ) nPrev = 0;
 
512 if( nPrev>0 ){
513 content_deltify(rid, aPrev, nPrev, 0);
514 }
515 if( nPrev<N_NEIGHBOR ){
516 aPrev[nPrev++] = rid;
517
--- src/rebuild.c
+++ src/rebuild.c
@@ -495,11 +495,11 @@
495 /* For individual files that have not been deltaed, try to find
496 ** a parent which is an undeltaed file with the same name in a
497 ** more recent branch.
498 */
499 db_prepare(&q,
500 "SELECT DISTINCT blob.rid, mlink.fnid FROM blob, mlink, plink"
501 " WHERE NOT EXISTS(SELECT 1 FROM delta WHERE rid=blob.rid)"
502 " AND mlink.fid=blob.rid"
503 " AND mlink.mid=plink.cid"
504 " AND plink.cid=mlink.mid"
505 " ORDER BY mlink.fnid, plink.mtime DESC"
@@ -507,10 +507,11 @@
507 prevfnid = 0;
508 while( db_step(&q)==SQLITE_ROW ){
509 rid = db_column_int(&q, 0);
510 fnid = db_column_int(&q, 1);
511 if( fnid!=prevfnid ) nPrev = 0;
512 prevfnid = fnid;
513 if( nPrev>0 ){
514 content_deltify(rid, aPrev, nPrev, 0);
515 }
516 if( nPrev<N_NEIGHBOR ){
517 aPrev[nPrev++] = rid;
518

Keyboard Shortcuts

Open search /
Next entry (timeline) j
Previous entry (timeline) k
Open focused entry Enter
Show this help ?
Toggle theme Top nav button