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:
P0nk
2021-04-03 15:52:07 +02:00
parent 86b70728c7
commit a36c7c5057

View File

@@ -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);