diff options
Diffstat (limited to 'platform/default/mbgl/storage/offline_database.cpp')
-rw-r--r-- | platform/default/mbgl/storage/offline_database.cpp | 29 |
1 files changed, 17 insertions, 12 deletions
diff --git a/platform/default/mbgl/storage/offline_database.cpp b/platform/default/mbgl/storage/offline_database.cpp index 6476834c1b..9bd731df74 100644 --- a/platform/default/mbgl/storage/offline_database.cpp +++ b/platform/default/mbgl/storage/offline_database.cpp @@ -608,24 +608,29 @@ OfflineRegionDefinition OfflineDatabase::getRegionDefinition(int64_t regionID) { OfflineRegionStatus OfflineDatabase::getRegionCompletedStatus(int64_t regionID) { OfflineRegionStatus result; - Statement stmt = getStatement( + Statement stmtRes = getStatement( "SELECT COUNT(*), SUM(size) FROM ( " " SELECT LENGTH(data) as size " " FROM region_resources, resources " " WHERE region_id = ?1 " " AND resource_id = resources.id " - " UNION ALL " - " SELECT LENGTH(data) as size " - " FROM region_tiles, tiles " - " WHERE region_id = ?1 " - " AND tile_id = tiles.id " ") "); - - stmt->bind(1, regionID); - stmt->run(); - - result.completedResourceCount = stmt->get<int64_t>(0); - result.completedResourceSize = stmt->get<int64_t>(1); + stmtRes->bind(1, regionID); + stmtRes->run(); + + Statement stmtTile = getStatement( + "SELECT COUNT(*), SUM(size) FROM ( " + " SELECT LENGTH(data) as size " + " FROM region_tiles, tiles " + " WHERE region_id = ?1 " + " AND tile_id = tiles.id " + ") "); + stmtTile->bind(1, regionID); + stmtTile->run(); + + result.completedTileSize = stmtTile->get<int64_t>(1); + result.completedResourceCount = stmtTile->get<int64_t>(0) + stmtRes->get<int64_t>(0); + result.completedResourceSize = result.completedTileSize + stmtRes->get<int64_t>(1); return result; } |