Issue information

Issue ID
#8346
Status
Confirmed
Severity
None
Started
AnyThing
Sep 17, 2014 12:26
Last Post
Ind
Sep 20, 2014 19:46
Confirmation
N/A

AnyThing - Sep 17, 2014 12:26

I enable very high level (up to 1000), and some of player mysql data in table 'char' on the 'base_exp' column has more than 4 billion values (let's say, 6966857840). The mysql field somehow support it since it's bigint(20), but char server will print below message:
[17/Sep 20:12:05][SQL]: DB error - data of field 'base_exp' was truncated.
[17/Sep 20:12:05][Debug]: column - 6
[17/Sep 20:12:05][Debug]: data - type=UNSIGNED MYSQL_TYPE_LONGLONG, length=4
[17/Sep 20:12:05][Debug]: buffer - type=UNSIGNED MYSQL_TYPE_LONG, length=4

And in client-side, this character AND ANY character after this character will not visible anymore in char select.

For example, in char select we have:
1. Name1
2. Name2
3. Name3

If Name2 base_exp value is more than 4 billion, only Name1 will be visible. Name2 and Name3 is not visible anymore.

Frost - Sep 17, 2014 14:14

what is your revision?

4144 - Sep 17, 2014 14:45

This look like more than 32 bit value, and server using internally 32 bit variables.
Max value for exp and many other fields is 4294967296.

Ind - Sep 20, 2014 18:44

I confirm the sql file differs from the expected size in the char server sql loaders, as well as from the data size it is stored into ingame (base_exp/job_exp are all unsigned int). I'm however inclined to say it's actually working as intended and the .sql file is the one thats wrong, I'll check in with other devs

Ind - Sep 20, 2014 19:46

AnnieRuru made a very good point, that the game client does not expect to receive a u/int64 and thus display area of experience data would be broken (packet fields are sized for u/int32), the question then becomes whether to fix the BIGINT field or not, as values >= uint32 are not supported by the game client for this kind of data.