I am running a LAMP stack on a raspberry pi 3 (64-bit SoC) with 32-bit PIXEL OS (a Raspbian version).
I created a new table in MySQL and I set the Primary Key as unsigned BIGINT(20). Initially I thought that the database will just truncate the overflowing digits or something but it can actually store bigger numbers than ~4 billion. To be more precise I stored the number 5201702020.
How is that possible?
解决方案
Looking in the MySQL source code, I found at least 4 references to BIGINT:
1) "BIGINT":
que retorna "PARS_BIGINT_TOKEN":
2) As a struct:
3) As int64_t or uint64_t in many places
4) Java language type, in all java files.
And, to answer your question:
The situations (1) and (2) will be handled by source code implementation/logics.
The situation (3) will be handled by the compiler, not the OS. The compiler will make all the necessary transformations to BigInt variables and values to accomplish the job.
The situation (4) will be handled by JVM, not the OS, as the compiler does.