~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to storage/myisam/mi_key.c

MergeĀ fromĀ trunk

Show diffs side-by-side

added added

removed removed

Lines of Context:
502
502
    less than zero.
503
503
*/
504
504
 
505
 
ulonglong retrieve_auto_increment(MI_INFO *info,const uchar *record)
 
505
uint64_t retrieve_auto_increment(MI_INFO *info,const uchar *record)
506
506
{
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;
511
511
 
512
512
  switch (keyseg->type) {
513
513
  case HA_KEYTYPE_INT8:
514
 
    s_value= (longlong) *(char*)key;
 
514
    s_value= (int64_t) *(char*)key;
515
515
    break;
516
516
  case HA_KEYTYPE_BINARY:
517
 
    value=(ulonglong)  *(uchar*) key;
 
517
    value=(uint64_t)  *(uchar*) key;
518
518
    break;
519
519
  case HA_KEYTYPE_SHORT_INT:
520
 
    s_value= (longlong) sint2korr(key);
 
520
    s_value= (int64_t) sint2korr(key);
521
521
    break;
522
522
  case HA_KEYTYPE_USHORT_INT:
523
 
    value=(ulonglong) uint2korr(key);
 
523
    value=(uint64_t) uint2korr(key);
524
524
    break;
525
525
  case HA_KEYTYPE_LONG_INT:
526
 
    s_value= (longlong) sint4korr(key);
 
526
    s_value= (int64_t) sint4korr(key);
527
527
    break;
528
528
  case HA_KEYTYPE_ULONG_INT:
529
 
    value=(ulonglong) uint4korr(key);
 
529
    value=(uint64_t) uint4korr(key);
530
530
    break;
531
531
  case HA_KEYTYPE_INT24:
532
 
    s_value= (longlong) sint3korr(key);
 
532
    s_value= (int64_t) sint3korr(key);
533
533
    break;
534
534
  case HA_KEYTYPE_UINT24:
535
 
    value=(ulonglong) uint3korr(key);
 
535
    value=(uint64_t) uint3korr(key);
536
536
    break;
537
537
  case HA_KEYTYPE_FLOAT:                        /* This shouldn't be used */
538
538
  {
539
539
    float f_1;
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;
543
543
    break;
544
544
  }
545
545
  case HA_KEYTYPE_DOUBLE:                       /* This shouldn't be used */
547
547
    double f_1;
548
548
    float8get(f_1,key);
549
549
    /* Ignore negative values */
550
 
    value = (f_1 < 0.0) ? 0 : (ulonglong) f_1;
 
550
    value = (f_1 < 0.0) ? 0 : (uint64_t) f_1;
551
551
    break;
552
552
  }
553
553
  case HA_KEYTYPE_LONGLONG:
567
567
    and if s_value == 0 then value will contain either s_value or the
568
568
    correct value.
569
569
  */
570
 
  return (s_value > 0) ? (ulonglong) s_value : value;
 
570
  return (s_value > 0) ? (uint64_t) s_value : value;
571
571
}