~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to server/field.cc

Merged in Jay's tree.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1325
1325
                                         ~E_DEC_OVERFLOW & ~E_DEC_TRUNCATED,
1326
1326
                                         val, false, &i)))
1327
1327
  {
1328
 
    i= (val->sign() ? LONGLONG_MIN : LONGLONG_MAX);
 
1328
    i= (val->sign() ? INT64_MIN : INT64_MAX);
1329
1329
    *err= 1;
1330
1330
  }
1331
1331
  return i;
2166
2166
  int error;
2167
2167
  int64_t rnd;
2168
2168
  
2169
 
  error= get_int(cs, from, len, &rnd, UINT_MAX16, INT_MIN16, INT_MAX16);
 
2169
  error= get_int(cs, from, len, &rnd, UINT16_MAX, INT16_MIN, INT16_MAX);
2170
2170
  store_tmp= unsigned_flag ? (int) (uint64_t) rnd : (int) rnd;
2171
2171
#ifdef WORDS_BIGENDIAN
2172
2172
  if (table->s->db_low_byte_first)
2193
2193
      set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_OUT_OF_RANGE, 1);
2194
2194
      error= 1;
2195
2195
    }
2196
 
    else if (nr > (double) UINT_MAX16)
 
2196
    else if (nr > (double) UINT16_MAX)
2197
2197
    {
2198
 
      res=(int16) UINT_MAX16;
 
2198
      res=(int16) UINT16_MAX;
2199
2199
      set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_OUT_OF_RANGE, 1);
2200
2200
      error= 1;
2201
2201
    }
2204
2204
  }
2205
2205
  else
2206
2206
  {
2207
 
    if (nr < (double) INT_MIN16)
 
2207
    if (nr < (double) INT16_MIN)
2208
2208
    {
2209
 
      res=INT_MIN16;
 
2209
      res=INT16_MIN;
2210
2210
      set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_OUT_OF_RANGE, 1);
2211
2211
      error= 1;
2212
2212
    }
2213
 
    else if (nr > (double) INT_MAX16)
 
2213
    else if (nr > (double) INT16_MAX)
2214
2214
    {
2215
 
      res=INT_MAX16;
 
2215
      res=INT16_MAX;
2216
2216
      set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_OUT_OF_RANGE, 1);
2217
2217
      error= 1;
2218
2218
    }
2244
2244
      set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_OUT_OF_RANGE, 1);
2245
2245
      error= 1;
2246
2246
    }
2247
 
    else if ((uint64_t) nr > (uint64_t) UINT_MAX16)
 
2247
    else if ((uint64_t) nr > (uint64_t) UINT16_MAX)
2248
2248
    {
2249
 
      res=(int16) UINT_MAX16;
 
2249
      res=(int16) UINT16_MAX;
2250
2250
      set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_OUT_OF_RANGE, 1);
2251
2251
      error= 1;
2252
2252
    }
2256
2256
  else
2257
2257
  {
2258
2258
    if (nr < 0 && unsigned_val)
2259
 
      nr= UINT_MAX16+1;                         // Generate overflow
 
2259
      nr= UINT16_MAX+1;                         // Generate overflow
2260
2260
 
2261
 
    if (nr < INT_MIN16)
 
2261
    if (nr < INT16_MIN)
2262
2262
    {
2263
 
      res=INT_MIN16;
 
2263
      res=INT16_MIN;
2264
2264
      set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_OUT_OF_RANGE, 1);
2265
2265
      error= 1;
2266
2266
    }
2267
 
    else if (nr > (int64_t) INT_MAX16)
 
2267
    else if (nr > (int64_t) INT16_MAX)
2268
2268
    {
2269
 
      res=INT_MAX16;
 
2269
      res=INT16_MAX;
2270
2270
      set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_OUT_OF_RANGE, 1);
2271
2271
      error= 1;
2272
2272
    }
2407
2407
  int error;
2408
2408
  int64_t rnd;
2409
2409
  
2410
 
  error= get_int(cs, from, len, &rnd, UINT_MAX32, INT_MIN32, INT_MAX32);
 
2410
  error= get_int(cs, from, len, &rnd, UINT32_MAX, INT32_MIN, INT32_MAX);
2411
2411
  store_tmp= unsigned_flag ? (long) (uint64_t) rnd : (long) rnd;
2412
2412
#ifdef WORDS_BIGENDIAN
2413
2413
  if (table->s->db_low_byte_first)
2433
2433
      res=0;
2434
2434
      error= 1;
2435
2435
    }
2436
 
    else if (nr > (double) UINT_MAX32)
 
2436
    else if (nr > (double) UINT32_MAX)
2437
2437
    {
2438
 
      res= INT_MAX32;
 
2438
      res= INT32_MAX;
2439
2439
      set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_OUT_OF_RANGE, 1);
2440
2440
      error= 1;
2441
2441
    }
2444
2444
  }
2445
2445
  else
2446
2446
  {
2447
 
    if (nr < (double) INT_MIN32)
 
2447
    if (nr < (double) INT32_MIN)
2448
2448
    {
2449
 
      res=(int32) INT_MIN32;
 
2449
      res=(int32) INT32_MIN;
2450
2450
      error= 1;
2451
2451
    }
2452
 
    else if (nr > (double) INT_MAX32)
 
2452
    else if (nr > (double) INT32_MAX)
2453
2453
    {
2454
 
      res=(int32) INT_MAX32;
 
2454
      res=(int32) INT32_MAX;
2455
2455
      error= 1;
2456
2456
    }
2457
2457
    else
2495
2495
  else
2496
2496
  {
2497
2497
    if (nr < 0 && unsigned_val)
2498
 
      nr= ((int64_t) INT_MAX32) + 1;           // Generate overflow
2499
 
    if (nr < (int64_t) INT_MIN32) 
 
2498
      nr= ((int64_t) INT32_MAX) + 1;           // Generate overflow
 
2499
    if (nr < (int64_t) INT32_MIN) 
2500
2500
    {
2501
 
      res=(int32) INT_MIN32;
 
2501
      res=(int32) INT32_MIN;
2502
2502
      error= 1;
2503
2503
    }
2504
 
    else if (nr > (int64_t) INT_MAX32)
 
2504
    else if (nr > (int64_t) INT32_MAX)
2505
2505
    {
2506
 
      res=(int32) INT_MAX32;
 
2506
      res=(int32) INT32_MAX;
2507
2507
      error= 1;
2508
2508
    }
2509
2509
    else
2683
2683
      res=0;
2684
2684
      error= 1;
2685
2685
    }
2686
 
    else if (nr >= (double) ULONGLONG_MAX)
 
2686
    else if (nr >= (double) UINT64_MAX)
2687
2687
    {
2688
2688
      res= ~(int64_t) 0;
2689
2689
      error= 1;
2693
2693
  }
2694
2694
  else
2695
2695
  {
2696
 
    if (nr <= (double) LONGLONG_MIN)
 
2696
    if (nr <= (double) INT64_MIN)
2697
2697
    {
2698
 
      res= LONGLONG_MIN;
2699
 
      error= (nr < (double) LONGLONG_MIN);
 
2698
      res= INT64_MIN;
 
2699
      error= (nr < (double) INT64_MIN);
2700
2700
    }
2701
 
    else if (nr >= (double) (uint64_t) LONGLONG_MAX)
 
2701
    else if (nr >= (double) (uint64_t) INT64_MAX)
2702
2702
    {
2703
 
      res= LONGLONG_MAX;
2704
 
      error= (nr > (double) LONGLONG_MAX);
 
2703
      res= INT64_MAX;
 
2704
      error= (nr > (double) INT64_MAX);
2705
2705
    }
2706
2706
    else
2707
2707
      res=(int64_t) nr;
2733
2733
    */
2734
2734
    if (unsigned_flag != unsigned_val)
2735
2735
    {
2736
 
      nr= unsigned_flag ? (uint64_t) 0 : (uint64_t) LONGLONG_MAX;
 
2736
      nr= unsigned_flag ? (uint64_t) 0 : (uint64_t) INT64_MAX;
2737
2737
      set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_OUT_OF_RANGE, 1);
2738
2738
      error= 1;
2739
2739
    }
3268
3268
#endif
3269
3269
    doubleget(j,ptr);
3270
3270
  /* Check whether we fit into int64_t range */
3271
 
  if (j <= (double) LONGLONG_MIN)
 
3271
  if (j <= (double) INT64_MIN)
3272
3272
  {
3273
 
    res= (int64_t) LONGLONG_MIN;
 
3273
    res= (int64_t) INT64_MIN;
3274
3274
    goto warn;
3275
3275
  }
3276
 
  if (j >= (double) (uint64_t) LONGLONG_MAX)
 
3276
  if (j >= (double) (uint64_t) INT64_MAX)
3277
3277
  {
3278
 
    res= (int64_t) LONGLONG_MAX;
 
3278
    res= (int64_t) INT64_MAX;
3279
3279
    goto warn;
3280
3280
  }
3281
3281
  return (int64_t) rint(j);
5357
5357
  is 2.
5358
5358
****************************************************************************/
5359
5359
 
5360
 
const uint Field_varstring::MAX_SIZE= UINT_MAX16;
 
5360
const uint Field_varstring::MAX_SIZE= UINT16_MAX;
5361
5361
 
5362
5362
/**
5363
5363
   Save the field metadata for varstring fields.