Fossil SCM
Experimental after_dephantomize() enhancement checks out, so pull it into the trunk.
Commit
62d114ee12c7f405479a15d35fa61f2761676419
Parent
752895d916594ae…
1 file changed
+8
-2
+8
-2
| --- src/content.c | ||
| +++ src/content.c | ||
| @@ -385,13 +385,19 @@ | ||
| 385 | 385 | if( nChildUsed ){ |
| 386 | 386 | db_multi_exec("DELETE FROM orphan WHERE baseline=%d", rid); |
| 387 | 387 | } |
| 388 | 388 | |
| 389 | 389 | /* Recursively dephantomize all artifacts that are derived by |
| 390 | - ** delta from artifact rid */ | |
| 390 | + ** delta from artifact rid and which have not already been | |
| 391 | + ** cross-linked. */ | |
| 391 | 392 | nChildUsed = 0; |
| 392 | - db_prepare(&q, "SELECT rid FROM delta WHERE srcid=%d", rid); | |
| 393 | + db_prepare(&q, | |
| 394 | + "SELECT rid FROM delta" | |
| 395 | + " WHERE srcid=%d" | |
| 396 | + " AND NOT EXISTS(SELECT 1 FROM mlink WHERE mid=delta.rid)", | |
| 397 | + rid | |
| 398 | + ); | |
| 393 | 399 | while( db_step(&q)==SQLITE_ROW ){ |
| 394 | 400 | int child = db_column_int(&q, 0); |
| 395 | 401 | if( nChildUsed>=nChildAlloc ){ |
| 396 | 402 | nChildAlloc = nChildAlloc*2 + 10; |
| 397 | 403 | aChild = fossil_realloc(aChild, nChildAlloc*sizeof(aChild)); |
| 398 | 404 |
| --- src/content.c | |
| +++ src/content.c | |
| @@ -385,13 +385,19 @@ | |
| 385 | if( nChildUsed ){ |
| 386 | db_multi_exec("DELETE FROM orphan WHERE baseline=%d", rid); |
| 387 | } |
| 388 | |
| 389 | /* Recursively dephantomize all artifacts that are derived by |
| 390 | ** delta from artifact rid */ |
| 391 | nChildUsed = 0; |
| 392 | db_prepare(&q, "SELECT rid FROM delta WHERE srcid=%d", rid); |
| 393 | while( db_step(&q)==SQLITE_ROW ){ |
| 394 | int child = db_column_int(&q, 0); |
| 395 | if( nChildUsed>=nChildAlloc ){ |
| 396 | nChildAlloc = nChildAlloc*2 + 10; |
| 397 | aChild = fossil_realloc(aChild, nChildAlloc*sizeof(aChild)); |
| 398 |
| --- src/content.c | |
| +++ src/content.c | |
| @@ -385,13 +385,19 @@ | |
| 385 | if( nChildUsed ){ |
| 386 | db_multi_exec("DELETE FROM orphan WHERE baseline=%d", rid); |
| 387 | } |
| 388 | |
| 389 | /* Recursively dephantomize all artifacts that are derived by |
| 390 | ** delta from artifact rid and which have not already been |
| 391 | ** cross-linked. */ |
| 392 | nChildUsed = 0; |
| 393 | db_prepare(&q, |
| 394 | "SELECT rid FROM delta" |
| 395 | " WHERE srcid=%d" |
| 396 | " AND NOT EXISTS(SELECT 1 FROM mlink WHERE mid=delta.rid)", |
| 397 | rid |
| 398 | ); |
| 399 | while( db_step(&q)==SQLITE_ROW ){ |
| 400 | int child = db_column_int(&q, 0); |
| 401 | if( nChildUsed>=nChildAlloc ){ |
| 402 | nChildAlloc = nChildAlloc*2 + 10; |
| 403 | aChild = fossil_realloc(aChild, nChildAlloc*sizeof(aChild)); |
| 404 |