Fossil

Check-in [bf681039e2]
Login

Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

Overview
Comment:During shutdown, check to see if the check-out database (".fslckout") contains a lot of free space, and if it does, VACUUM it.
Downloads: Tarball | ZIP archive
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA1: bf681039e2a29672a6652531dc14a6a389060d0e
User & Date: drh 2015-01-20 00:03:15.242
Context
2015-01-20
16:44
When attempting to open the configuration, permit the 'FOSSIL_HOME' environment variable (if present), to override 'HOME'. check-in: c97a085a0e user: mistachkin tags: trunk
00:03
During shutdown, check to see if the check-out database (".fslckout") contains a lot of free space, and if it does, VACUUM it. check-in: bf681039e2 user: drh tags: trunk
2015-01-19
23:27
Make it easier to override the directory for OpenSSL when compiling with MinGW. check-in: af8c8c67af user: mistachkin tags: trunk
Changes
Unified Diff Ignore Whitespace Patch
Changes to src/db.c.
1353
1354
1355
1356
1357
1358
1359












1360
1361
1362
1363
1364
1365
1366
  pStmt = 0;
  if( reportErrors ){
    while( (pStmt = sqlite3_next_stmt(g.db, pStmt))!=0 ){
      fossil_warning("unfinalized SQL statement: [%s]", sqlite3_sql(pStmt));
    }
  }
  db_close_config();












  if( g.db ){
    sqlite3_wal_checkpoint(g.db, 0);
    sqlite3_close(g.db);
    g.db = 0;
    g.zMainDbType = 0;
  }
  g.repositoryOpen = 0;







>
>
>
>
>
>
>
>
>
>
>
>







1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
  pStmt = 0;
  if( reportErrors ){
    while( (pStmt = sqlite3_next_stmt(g.db, pStmt))!=0 ){
      fossil_warning("unfinalized SQL statement: [%s]", sqlite3_sql(pStmt));
    }
  }
  db_close_config();

  /* If the localdb (the check-out database) is open and if it has
  ** a lot of unused free space, then VACUUM it as we shut down.
  */
  if( g.localOpen && strcmp(db_name("localdb"),"main")==0 ){
    int nFree = db_int(0, "PRAGMA main.freelist_count");
    int nTotal = db_int(0, "PRAGMA main.page_count");
    if( nFree>nTotal/4 ){
      db_multi_exec("VACUUM;");
    }
  }

  if( g.db ){
    sqlite3_wal_checkpoint(g.db, 0);
    sqlite3_close(g.db);
    g.db = 0;
    g.zMainDbType = 0;
  }
  g.repositoryOpen = 0;