~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to storage/myisam/mi_key.c

MergedĀ fromĀ trunk.

Show diffs side-by-side

added added

removed removed

Lines of Context:
510
510
    less than zero.
511
511
*/
512
512
 
513
 
ulonglong retrieve_auto_increment(MI_INFO *info,const uchar *record)
 
513
uint64_t retrieve_auto_increment(MI_INFO *info,const uchar *record)
514
514
{
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;
519
519
 
520
520
  switch (keyseg->type) {
521
521
  case HA_KEYTYPE_INT8:
522
 
    s_value= (longlong) *(char*)key;
 
522
    s_value= (int64_t) *(char*)key;
523
523
    break;
524
524
  case HA_KEYTYPE_BINARY:
525
 
    value=(ulonglong)  *(uchar*) key;
 
525
    value=(uint64_t)  *(uchar*) key;
526
526
    break;
527
527
  case HA_KEYTYPE_SHORT_INT:
528
 
    s_value= (longlong) sint2korr(key);
 
528
    s_value= (int64_t) sint2korr(key);
529
529
    break;
530
530
  case HA_KEYTYPE_USHORT_INT:
531
 
    value=(ulonglong) uint2korr(key);
 
531
    value=(uint64_t) uint2korr(key);
532
532
    break;
533
533
  case HA_KEYTYPE_LONG_INT:
534
 
    s_value= (longlong) sint4korr(key);
 
534
    s_value= (int64_t) sint4korr(key);
535
535
    break;
536
536
  case HA_KEYTYPE_ULONG_INT:
537
 
    value=(ulonglong) uint4korr(key);
 
537
    value=(uint64_t) uint4korr(key);
538
538
    break;
539
539
  case HA_KEYTYPE_INT24:
540
 
    s_value= (longlong) sint3korr(key);
 
540
    s_value= (int64_t) sint3korr(key);
541
541
    break;
542
542
  case HA_KEYTYPE_UINT24:
543
 
    value=(ulonglong) uint3korr(key);
 
543
    value=(uint64_t) uint3korr(key);
544
544
    break;
545
545
  case HA_KEYTYPE_FLOAT:                        /* This shouldn't be used */
546
546
  {
547
547
    float f_1;
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;
551
551
    break;
552
552
  }
553
553
  case HA_KEYTYPE_DOUBLE:                       /* This shouldn't be used */
555
555
    double f_1;
556
556
    float8get(f_1,key);
557
557
    /* Ignore negative values */
558
 
    value = (f_1 < 0.0) ? 0 : (ulonglong) f_1;
 
558
    value = (f_1 < 0.0) ? 0 : (uint64_t) f_1;
559
559
    break;
560
560
  }
561
561
  case HA_KEYTYPE_LONGLONG:
575
575
    and if s_value == 0 then value will contain either s_value or the
576
576
    correct value.
577
577
  */
578
 
  return (s_value > 0) ? (ulonglong) s_value : value;
 
578
  return (s_value > 0) ? (uint64_t) s_value : value;
579
579
}