505
ulonglong retrieve_auto_increment(MI_INFO *info,const uchar *record)
505
uint64_t retrieve_auto_increment(MI_INFO *info,const uchar *record)
507
ulonglong value= 0; /* Store unsigned values here */
508
longlong s_value= 0; /* Store signed values here */
507
uint64_t value= 0; /* Store unsigned values here */
508
int64_t s_value= 0; /* Store signed values here */
509
509
HA_KEYSEG *keyseg= info->s->keyinfo[info->s->base.auto_key-1].seg;
510
510
const uchar *key= (uchar*) record + keyseg->start;
512
512
switch (keyseg->type) {
513
513
case HA_KEYTYPE_INT8:
514
s_value= (longlong) *(char*)key;
514
s_value= (int64_t) *(char*)key;
516
516
case HA_KEYTYPE_BINARY:
517
value=(ulonglong) *(uchar*) key;
517
value=(uint64_t) *(uchar*) key;
519
519
case HA_KEYTYPE_SHORT_INT:
520
s_value= (longlong) sint2korr(key);
520
s_value= (int64_t) sint2korr(key);
522
522
case HA_KEYTYPE_USHORT_INT:
523
value=(ulonglong) uint2korr(key);
523
value=(uint64_t) uint2korr(key);
525
525
case HA_KEYTYPE_LONG_INT:
526
s_value= (longlong) sint4korr(key);
526
s_value= (int64_t) sint4korr(key);
528
528
case HA_KEYTYPE_ULONG_INT:
529
value=(ulonglong) uint4korr(key);
529
value=(uint64_t) uint4korr(key);
531
531
case HA_KEYTYPE_INT24:
532
s_value= (longlong) sint3korr(key);
532
s_value= (int64_t) sint3korr(key);
534
534
case HA_KEYTYPE_UINT24:
535
value=(ulonglong) uint3korr(key);
535
value=(uint64_t) uint3korr(key);
537
537
case HA_KEYTYPE_FLOAT: /* This shouldn't be used */
540
540
float4get(f_1,key);
541
541
/* Ignore negative values */
542
value = (f_1 < (float) 0.0) ? 0 : (ulonglong) f_1;
542
value = (f_1 < (float) 0.0) ? 0 : (uint64_t) f_1;
545
545
case HA_KEYTYPE_DOUBLE: /* This shouldn't be used */