Fix loading pet ignores slowly
Explained by me on Discord, 20 February 2020: "Found a bug that causes characters to load slower based on the number of items in their inventory. Every item causes a query to be executed in the db. On my local machine, the specific section of code is now ~40ms faster when loading 1 character full of items. Here is what I'm referring to: "AND petid IS NOT NULL" should be "AND petid > 0" or something similar Basically, the petid field is not a boolean. The check will always pass since -1 is not null, and the number -1 is used to indicate if the item is a pet or not."
This commit is contained in:
@@ -7223,14 +7223,11 @@ public class MapleCharacter extends AbstractMapleCharacterObject {
|
||||
PreparedStatement ps2, ps3;
|
||||
ResultSet rs2, rs3;
|
||||
|
||||
ps3 = con.prepareStatement("SELECT petid FROM inventoryitems WHERE characterid = ? AND petid IS NOT NULL");
|
||||
ps3 = con.prepareStatement("SELECT petid FROM inventoryitems WHERE characterid = ? AND petid > -1");
|
||||
ps3.setInt(1, charid);
|
||||
rs3 = ps3.executeQuery();
|
||||
while(rs3.next()) {
|
||||
int petId = rs3.getInt("petid");
|
||||
if (rs3.wasNull()) {
|
||||
petId = -1;
|
||||
}
|
||||
while (rs3.next()) {
|
||||
final int petId = rs3.getInt("petid");
|
||||
|
||||
ps2 = con.prepareStatement("SELECT itemid FROM petignores WHERE petid = ?");
|
||||
ps2.setInt(1, petId);
|
||||
|
||||
Reference in New Issue
Block a user