513
ulonglong retrieve_auto_increment(MI_INFO *info,const uchar *record)
513
uint64_t retrieve_auto_increment(MI_INFO *info,const uchar *record)
515
ulonglong value= 0; /* Store unsigned values here */
516
longlong s_value= 0; /* Store signed values here */
515
uint64_t value= 0; /* Store unsigned values here */
516
int64_t s_value= 0; /* Store signed values here */
517
517
HA_KEYSEG *keyseg= info->s->keyinfo[info->s->base.auto_key-1].seg;
518
518
const uchar *key= (uchar*) record + keyseg->start;
520
520
switch (keyseg->type) {
521
521
case HA_KEYTYPE_INT8:
522
s_value= (longlong) *(char*)key;
522
s_value= (int64_t) *(char*)key;
524
524
case HA_KEYTYPE_BINARY:
525
value=(ulonglong) *(uchar*) key;
525
value=(uint64_t) *(uchar*) key;
527
527
case HA_KEYTYPE_SHORT_INT:
528
s_value= (longlong) sint2korr(key);
528
s_value= (int64_t) sint2korr(key);
530
530
case HA_KEYTYPE_USHORT_INT:
531
value=(ulonglong) uint2korr(key);
531
value=(uint64_t) uint2korr(key);
533
533
case HA_KEYTYPE_LONG_INT:
534
s_value= (longlong) sint4korr(key);
534
s_value= (int64_t) sint4korr(key);
536
536
case HA_KEYTYPE_ULONG_INT:
537
value=(ulonglong) uint4korr(key);
537
value=(uint64_t) uint4korr(key);
539
539
case HA_KEYTYPE_INT24:
540
s_value= (longlong) sint3korr(key);
540
s_value= (int64_t) sint3korr(key);
542
542
case HA_KEYTYPE_UINT24:
543
value=(ulonglong) uint3korr(key);
543
value=(uint64_t) uint3korr(key);
545
545
case HA_KEYTYPE_FLOAT: /* This shouldn't be used */
548
548
float4get(f_1,key);
549
549
/* Ignore negative values */
550
value = (f_1 < (float) 0.0) ? 0 : (ulonglong) f_1;
550
value = (f_1 < (float) 0.0) ? 0 : (uint64_t) f_1;
553
553
case HA_KEYTYPE_DOUBLE: /* This shouldn't be used */