• Neeraj Bisht's avatar
    Bug#11745891 - LAST_INSERT(ID) DOES NOT SUPPORT BIGINT UNSIGNED · fb60e4b0
    Neeraj Bisht authored
    Problem:-
    using last_insert_id() on an auto_incremented bigint unsigned does
    not work for values which are greater than max-bigint-signed.
    
    Analysis:-
    last_insert_id() returns the first auto_incremented value for a column
    and an auto_incremented value can have only positive values.
    
    In our code, when we are initializing a last_insert_id object, we are
    taking it as a signed BIGINT, So when the auto_incremented value reaches
    greater than max signed bigint, last_insert_id gives negative result.
    
    Solution:
    When we are fetching the value from last_insert_id, We are setting the 
    unsigned_flag, so that it take only unsigned BIGINT value.
    
    sql/item_func.cc:
      here unsigned value is converted to signed value.
    sql/item_func.h:
      last_insert_id() gives an auto_incremented value which can be
      positive only,so defined it as a unsigned longlong sets the
      unsigned_flag to 1.
    fb60e4b0
item_func.h 53.1 KB