>>>>> "Dvir" == Dvir Azulay <dvir.azulay@stripped> writes:
Dvir> Hello, this is my first time on this mailing list so I hope I'm on the
Dvir> right place.
Dvir> Last night I encountered an issue with LAST_INSERT_ID(), when my ID
Dvir> column is an UNSIGNED BIGINT; the return value was a SIGNED BIGINT.
Dvir> So I looked at the source code and saw this line:
Dvir> longlong Item_func_last_insert_id::val_int()
Dvir> When in other places, it was referred to as ulonglong, here it is
Dvir> longlong. (When it should be ulonglong of course).
Dvir> Is this correct or am I looking at the wrong place?
The val_int() is always returning a longlong. This is ok as the
storage space of longlong and ulonglong are idential and longlong can
easily be cast to ulonglong.
MySQL/MariaDB has a flag for each field (unsigned_flag) and item that
tells if the longlong value should be regarded as signed or unsigned
I checked the Item_func_last_insert_id() function and you are right
that it's not declared as an unsigned function.
This is probably wrong, however it's not 100 % clear if changing it to
unsigned is the best way to go as the auto_increment column may be
signed or unsigned.
I will look into it if we can change it in MariaDB to be unsigned
without causing any backward compatibility problems.