@@ -339,10 +339,67 @@
339 339 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if(!g.fQuiet && ttyOutput ){
340 340 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
printf("\n");
341 341 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
342 342 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return errCnt;
343 343 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
344 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
345 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /*
346 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Attempt to convert more full-text blobs into delta-blobs for
347 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** storage efficiency.
348 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
349 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static void extra_deltification(void){
350 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ Stmt q;
351 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int topid, previd, rid;
352 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int prevfnid, fnid;
353 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ db_begin_transaction();
354 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ db_prepare(&q,
355 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ "SELECT rid FROM event, blob"
356 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ " WHERE blob.rid=event.objid"
357 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ " AND event.type='ci'"
358 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ " AND NOT EXISTS(SELECT 1 FROM delta WHERE rid=blob.rid)"
359 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ " ORDER BY event.mtime DESC"
360 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ );
361 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ topid = previd = 0;
362 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ while( db_step(&q)==SQLITE_ROW ){
363 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ rid = db_column_int(&q, 0);
364 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( topid==0 ){
365 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ topid = previd = rid;
366 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else{
367 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( content_deltify(rid, previd, 0)==0 && previd!=topid ){
368 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ content_deltify(rid, topid, 0);
369 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
370 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ previd = rid;
371 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
372 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
373 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ db_finalize(&q);
374 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
375 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ db_prepare(&q,
376 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ "SELECT blob.rid, mlink.fnid FROM blob, mlink, plink"
377 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ " WHERE NOT EXISTS(SELECT 1 FROM delta WHERE rid=blob.rid)"
378 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ " AND mlink.fid=blob.rid"
379 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ " AND mlink.mid=plink.cid"
380 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ " AND plink.cid=mlink.mid"
381 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ " ORDER BY mlink.fnid, plink.mtime DESC"
382 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ );
383 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ prevfnid = 0;
384 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ while( db_step(&q)==SQLITE_ROW ){
385 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ rid = db_column_int(&q, 0);
386 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ fnid = db_column_int(&q, 1);
387 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( prevfnid!=fnid ){
388 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ prevfnid = fnid;
389 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ topid = previd = rid;
390 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else{
391 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( content_deltify(rid, previd, 0)==0 && previd!=topid ){
392 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ content_deltify(rid, topid, 0);
393 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
394 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ previd = rid;
395 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
396 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
397 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ db_finalize(&q);
398 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
399 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ db_end_transaction(0);
400 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
344 401 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
345 402 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
346 403 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** COMMAND: rebuild
347 404 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
348 405 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Usage: %fossil rebuild ?REPOSITORY?
@@ -357,10 +414,11 @@
357 414 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** --force Force the rebuild to complete even if errors are seen
358 415 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** --randomize Scan artifacts in a random order
359 416 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** --cluster Compute clusters for unclustered artifacts
360 417 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** --pagesize N Set the database pagesize to N. (512..65536 and power of 2)
361 418 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** --wal Set Write-Ahead-Log journalling mode on the database
419 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** --compress Strive to make the database as small as possible
362 420 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** --vacuum Run VACUUM on the database after rebuilding
363 421 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
364 422 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
void rebuild_database(void){
365 423 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int forceFlag;
366 424 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int randomizeFlag;
@@ -369,16 +427,18 @@
369 427 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int doClustering;
370 428 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const char *zPagesize;
371 429 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int newPagesize = 0;
372 430 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int activateWal;
373 431 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int runVacuum;
432 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int runCompress;
374 433 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
375 434 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
omitVerify = find_option("noverify",0,0)!=0;
376 435 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
forceFlag = find_option("force","f",0)!=0;
377 436 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
randomizeFlag = find_option("randomize", 0, 0)!=0;
378 437 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
doClustering = find_option("cluster", 0, 0)!=0;
379 438 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
runVacuum = find_option("vacuum",0,0)!=0;
439 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ runCompress = find_option("compress",0,0)!=0;
380 440 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zPagesize = find_option("pagesize",0,1);
381 441 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( zPagesize ){
382 442 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
newPagesize = atoi(zPagesize);
383 443 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( newPagesize<512 || newPagesize>65536
384 444 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
|| (newPagesize&(newPagesize-1))!=0
@@ -408,12 +468,18 @@
408 468 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( errCnt && !forceFlag ){
409 469 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
printf("%d errors. Rolling back changes. Use --force to force a commit.\n",
410 470 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
errCnt);
411 471 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db_end_transaction(1);
412 472 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
473 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( runCompress ){
474 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ printf("Extra delta compression... "); fflush(stdout);
475 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ extra_deltification();
476 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ runVacuum = 1;
477 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
413 478 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( omitVerify ) verify_cancel();
414 479 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db_end_transaction(0);
480 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( runCompress ) printf("done\n");
415 481 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db_close(0);
416 482 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db_open_repository(g.zRepositoryName);
417 483 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( newPagesize ){
418 484 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db_multi_exec("PRAGMA page_size=%d", newPagesize);
419 485 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
runVacuum = 1;
420 486 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!