Fix delete statements doing a full table scan
This commit is contained in:
parent
37dd18190b
commit
a6402850c9
|
@ -113,10 +113,12 @@ public abstract class AbstractCommandSet implements CommandSet {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int deleteMapTile(String mapId, int lod, int x, int z, Compression compression) throws IOException {
|
public int deleteMapTile(String mapId, int lod, int x, int z, Compression compression) throws IOException {
|
||||||
|
int mapKey = mapKey(mapId);
|
||||||
|
int compressionKey = compressionKey(compression);
|
||||||
return db.run(connection -> {
|
return db.run(connection -> {
|
||||||
return executeUpdate(connection,
|
return executeUpdate(connection,
|
||||||
deleteMapTileStatement(),
|
deleteMapTileStatement(),
|
||||||
mapId, lod, x, z, compression.getKey().getFormatted()
|
mapKey, lod, x, z, compressionKey
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -156,10 +158,11 @@ public abstract class AbstractCommandSet implements CommandSet {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int purgeMapTiles(String mapId, int limit) throws IOException {
|
public int purgeMapTiles(String mapId, int limit) throws IOException {
|
||||||
|
int mapKey = mapKey(mapId);
|
||||||
return db.run(connection -> {
|
return db.run(connection -> {
|
||||||
return executeUpdate(connection,
|
return executeUpdate(connection,
|
||||||
purgeMapTilesStatement(),
|
purgeMapTilesStatement(),
|
||||||
mapId, limit
|
mapKey, limit
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -230,10 +233,11 @@ public abstract class AbstractCommandSet implements CommandSet {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int deleteMapMeta(String mapId, String itemName) throws IOException {
|
public int deleteMapMeta(String mapId, String itemName) throws IOException {
|
||||||
|
int mapKey = mapKey(mapId);
|
||||||
return db.run(connection -> {
|
return db.run(connection -> {
|
||||||
return executeUpdate(connection,
|
return executeUpdate(connection,
|
||||||
deleteMapMetaStatement(),
|
deleteMapMetaStatement(),
|
||||||
mapId, itemName
|
mapKey, itemName
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -265,21 +269,22 @@ public abstract class AbstractCommandSet implements CommandSet {
|
||||||
@Override
|
@Override
|
||||||
public void purgeMap(String mapId) throws IOException {
|
public void purgeMap(String mapId) throws IOException {
|
||||||
synchronized (mapKeys) {
|
synchronized (mapKeys) {
|
||||||
|
int mapKey = mapKey(mapId);
|
||||||
db.run(connection -> {
|
db.run(connection -> {
|
||||||
|
|
||||||
executeUpdate(connection,
|
executeUpdate(connection,
|
||||||
purgeMapTileTableStatement(),
|
purgeMapTileTableStatement(),
|
||||||
mapId
|
mapKey
|
||||||
);
|
);
|
||||||
|
|
||||||
executeUpdate(connection,
|
executeUpdate(connection,
|
||||||
purgeMapMetaTableStatement(),
|
purgeMapMetaTableStatement(),
|
||||||
mapId
|
mapKey
|
||||||
);
|
);
|
||||||
|
|
||||||
executeUpdate(connection,
|
executeUpdate(connection,
|
||||||
deleteMapStatement(),
|
deleteMapStatement(),
|
||||||
mapId
|
mapKey
|
||||||
);
|
);
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
|
@ -147,19 +147,11 @@ public class MySQLCommandSet extends AbstractCommandSet {
|
||||||
return """
|
return """
|
||||||
DELETE
|
DELETE
|
||||||
FROM `bluemap_map_tile`
|
FROM `bluemap_map_tile`
|
||||||
WHERE `map` IN (
|
WHERE `map` = ?
|
||||||
SELECT m.`id`
|
|
||||||
FROM `bluemap_map` m
|
|
||||||
WHERE m.`map_id` = ?
|
|
||||||
)
|
|
||||||
AND `lod` = ?
|
AND `lod` = ?
|
||||||
AND `x` = ?
|
AND `x` = ?
|
||||||
AND `z` = ?
|
AND `z` = ?
|
||||||
AND `compression` IN (
|
AND `compression` = ?
|
||||||
SELECT c.`id`
|
|
||||||
FROM `bluemap_map_tile_compression` c
|
|
||||||
WHERE c.`compression` = ?
|
|
||||||
)
|
|
||||||
""";
|
""";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -199,11 +191,7 @@ public class MySQLCommandSet extends AbstractCommandSet {
|
||||||
return """
|
return """
|
||||||
DELETE
|
DELETE
|
||||||
FROM `bluemap_map_tile`
|
FROM `bluemap_map_tile`
|
||||||
WHERE `map` IN (
|
WHERE `map` = ?
|
||||||
SELECT `id`
|
|
||||||
FROM `bluemap_map`
|
|
||||||
WHERE `map_id` = ?
|
|
||||||
)
|
|
||||||
LIMIT ?
|
LIMIT ?
|
||||||
""";
|
""";
|
||||||
}
|
}
|
||||||
|
@ -254,11 +242,7 @@ public class MySQLCommandSet extends AbstractCommandSet {
|
||||||
return """
|
return """
|
||||||
DELETE
|
DELETE
|
||||||
FROM `bluemap_map_meta`
|
FROM `bluemap_map_meta`
|
||||||
WHERE `map` IN (
|
WHERE `map` = ?
|
||||||
SELECT `id`
|
|
||||||
FROM `bluemap_map`
|
|
||||||
WHERE `map_id` = ?
|
|
||||||
)
|
|
||||||
AND `key` = ?
|
AND `key` = ?
|
||||||
""";
|
""";
|
||||||
}
|
}
|
||||||
|
@ -282,11 +266,7 @@ public class MySQLCommandSet extends AbstractCommandSet {
|
||||||
return """
|
return """
|
||||||
DELETE
|
DELETE
|
||||||
FROM `bluemap_map_tile`
|
FROM `bluemap_map_tile`
|
||||||
WHERE `map` IN (
|
WHERE `map` = ?
|
||||||
SELECT m.`id`
|
|
||||||
FROM `bluemap_map` m
|
|
||||||
WHERE m.`map_id` = ?
|
|
||||||
)
|
|
||||||
""";
|
""";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -296,11 +276,7 @@ public class MySQLCommandSet extends AbstractCommandSet {
|
||||||
return """
|
return """
|
||||||
DELETE
|
DELETE
|
||||||
FROM `bluemap_map_meta`
|
FROM `bluemap_map_meta`
|
||||||
WHERE `map` IN (
|
WHERE `map` = ?
|
||||||
SELECT m.`id`
|
|
||||||
FROM `bluemap_map` m
|
|
||||||
WHERE m.`map_id` = ?
|
|
||||||
)
|
|
||||||
""";
|
""";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -310,7 +286,7 @@ public class MySQLCommandSet extends AbstractCommandSet {
|
||||||
return """
|
return """
|
||||||
DELETE
|
DELETE
|
||||||
FROM `bluemap_map`
|
FROM `bluemap_map`
|
||||||
WHERE `map_id` = ?
|
WHERE `map` = ?
|
||||||
""";
|
""";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -141,19 +141,11 @@ public class PostgreSQLCommandSet extends AbstractCommandSet {
|
||||||
return """
|
return """
|
||||||
DELETE
|
DELETE
|
||||||
FROM bluemap_map_tile
|
FROM bluemap_map_tile
|
||||||
WHERE map IN (
|
WHERE map = ?
|
||||||
SELECT m.id
|
|
||||||
FROM bluemap_map m
|
|
||||||
WHERE m.map_id = ?
|
|
||||||
)
|
|
||||||
AND lod = ?
|
AND lod = ?
|
||||||
AND x = ?
|
AND x = ?
|
||||||
AND z = ?
|
AND z = ?
|
||||||
AND compression IN (
|
AND compression = ?
|
||||||
SELECT c.id
|
|
||||||
FROM bluemap_map_tile_compression c
|
|
||||||
WHERE c.compression = ?
|
|
||||||
)
|
|
||||||
""";
|
""";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -196,9 +188,7 @@ public class PostgreSQLCommandSet extends AbstractCommandSet {
|
||||||
WHERE CTID IN (
|
WHERE CTID IN (
|
||||||
SELECT CTID
|
SELECT CTID
|
||||||
FROM bluemap_map_tile t
|
FROM bluemap_map_tile t
|
||||||
INNER JOIN bluemap_map m
|
WHERE t.map = ?
|
||||||
ON t.map = m.id
|
|
||||||
WHERE m.map_id = ?
|
|
||||||
LIMIT ?
|
LIMIT ?
|
||||||
)
|
)
|
||||||
""";
|
""";
|
||||||
|
@ -253,11 +243,7 @@ public class PostgreSQLCommandSet extends AbstractCommandSet {
|
||||||
return """
|
return """
|
||||||
DELETE
|
DELETE
|
||||||
FROM bluemap_map_meta
|
FROM bluemap_map_meta
|
||||||
WHERE map IN (
|
WHERE map = ?
|
||||||
SELECT id
|
|
||||||
FROM bluemap_map
|
|
||||||
WHERE map_id = ?
|
|
||||||
)
|
|
||||||
AND key = ?
|
AND key = ?
|
||||||
""";
|
""";
|
||||||
}
|
}
|
||||||
|
@ -281,11 +267,7 @@ public class PostgreSQLCommandSet extends AbstractCommandSet {
|
||||||
return """
|
return """
|
||||||
DELETE
|
DELETE
|
||||||
FROM bluemap_map_tile
|
FROM bluemap_map_tile
|
||||||
WHERE map IN (
|
WHERE map = ?
|
||||||
SELECT m.id
|
|
||||||
FROM bluemap_map m
|
|
||||||
WHERE m.map_id = ?
|
|
||||||
)
|
|
||||||
""";
|
""";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -295,11 +277,7 @@ public class PostgreSQLCommandSet extends AbstractCommandSet {
|
||||||
return """
|
return """
|
||||||
DELETE
|
DELETE
|
||||||
FROM bluemap_map_meta
|
FROM bluemap_map_meta
|
||||||
WHERE map IN (
|
WHERE map = ?
|
||||||
SELECT m.id
|
|
||||||
FROM bluemap_map m
|
|
||||||
WHERE m.map_id = ?
|
|
||||||
)
|
|
||||||
""";
|
""";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -309,7 +287,7 @@ public class PostgreSQLCommandSet extends AbstractCommandSet {
|
||||||
return """
|
return """
|
||||||
DELETE
|
DELETE
|
||||||
FROM bluemap_map
|
FROM bluemap_map
|
||||||
WHERE map_id = ?
|
WHERE map = ?
|
||||||
""";
|
""";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -143,19 +143,11 @@ public class SqliteCommandSet extends AbstractCommandSet {
|
||||||
return """
|
return """
|
||||||
DELETE
|
DELETE
|
||||||
FROM `bluemap_map_tile`
|
FROM `bluemap_map_tile`
|
||||||
WHERE `map` IN (
|
WHERE `map` = ?
|
||||||
SELECT m.`id`
|
|
||||||
FROM `bluemap_map` m
|
|
||||||
WHERE m.`map_id` = ?
|
|
||||||
)
|
|
||||||
AND `lod` = ?
|
AND `lod` = ?
|
||||||
AND `x` = ?
|
AND `x` = ?
|
||||||
AND `z` = ?
|
AND `z` = ?
|
||||||
AND `compression` IN (
|
AND `compression` = ?
|
||||||
SELECT c.`id`
|
|
||||||
FROM `bluemap_map_tile_compression` c
|
|
||||||
WHERE c.`compression` = ?
|
|
||||||
)
|
|
||||||
""";
|
""";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -198,9 +190,7 @@ public class SqliteCommandSet extends AbstractCommandSet {
|
||||||
WHERE ROWID IN (
|
WHERE ROWID IN (
|
||||||
SELECT t.ROWID
|
SELECT t.ROWID
|
||||||
FROM bluemap_map_tile t
|
FROM bluemap_map_tile t
|
||||||
INNER JOIN bluemap_map m
|
WHERE t.map = ?
|
||||||
ON t.map = m.id
|
|
||||||
WHERE m.map_id = ?
|
|
||||||
LIMIT ?
|
LIMIT ?
|
||||||
)
|
)
|
||||||
""";
|
""";
|
||||||
|
@ -252,11 +242,7 @@ public class SqliteCommandSet extends AbstractCommandSet {
|
||||||
return """
|
return """
|
||||||
DELETE
|
DELETE
|
||||||
FROM `bluemap_map_meta`
|
FROM `bluemap_map_meta`
|
||||||
WHERE `map` IN (
|
WHERE `map` = ?
|
||||||
SELECT `id`
|
|
||||||
FROM `bluemap_map`
|
|
||||||
WHERE `map_id` = ?
|
|
||||||
)
|
|
||||||
AND `key` = ?
|
AND `key` = ?
|
||||||
""";
|
""";
|
||||||
}
|
}
|
||||||
|
@ -280,11 +266,7 @@ public class SqliteCommandSet extends AbstractCommandSet {
|
||||||
return """
|
return """
|
||||||
DELETE
|
DELETE
|
||||||
FROM `bluemap_map_tile`
|
FROM `bluemap_map_tile`
|
||||||
WHERE `map` IN (
|
WHERE `map` = ?
|
||||||
SELECT m.`id`
|
|
||||||
FROM `bluemap_map` m
|
|
||||||
WHERE m.`map_id` = ?
|
|
||||||
)
|
|
||||||
""";
|
""";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -294,11 +276,7 @@ public class SqliteCommandSet extends AbstractCommandSet {
|
||||||
return """
|
return """
|
||||||
DELETE
|
DELETE
|
||||||
FROM `bluemap_map_meta`
|
FROM `bluemap_map_meta`
|
||||||
WHERE `map` IN (
|
WHERE `map` = ?
|
||||||
SELECT m.`id`
|
|
||||||
FROM `bluemap_map` m
|
|
||||||
WHERE m.`map_id` = ?
|
|
||||||
)
|
|
||||||
""";
|
""";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -308,7 +286,7 @@ public class SqliteCommandSet extends AbstractCommandSet {
|
||||||
return """
|
return """
|
||||||
DELETE
|
DELETE
|
||||||
FROM `bluemap_map`
|
FROM `bluemap_map`
|
||||||
WHERE `map_id` = ?
|
WHERE `map` = ?
|
||||||
""";
|
""";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue