~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to drizzled/field.cc

MergedĀ fromĀ Felipe

Show diffs side-by-side

added added

removed removed

Lines of Context:
656
656
    char buff[128];
657
657
    String tmp(buff, (uint32_t) sizeof(buff), system_charset_info);
658
658
    tmp.copy(str, length, system_charset_info);
659
 
    push_warning_printf(table->in_use, MYSQL_ERROR::WARN_LEVEL_WARN,
 
659
    push_warning_printf(table->in_use, DRIZZLE_ERROR::WARN_LEVEL_WARN,
660
660
                        ER_TRUNCATED_WRONG_VALUE_FOR_FIELD, 
661
661
                        ER(ER_TRUNCATED_WRONG_VALUE_FOR_FIELD),
662
662
                        "integer", tmp.c_ptr(), field_name,
666
666
  /* Test if we have garbage at the end of the given string. */
667
667
  if (test_if_important_data(cs, int_end, str + length))
668
668
  {
669
 
    set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_TRUNCATED, 1);
 
669
    set_warning(DRIZZLE_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_TRUNCATED, 1);
670
670
    return 2;
671
671
  }
672
672
  return 0;
734
734
  return 0;
735
735
 
736
736
out_of_range:
737
 
  set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_OUT_OF_RANGE, 1);
 
737
  set_warning(DRIZZLE_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_OUT_OF_RANGE, 1);
738
738
  return 1;
739
739
}
740
740
 
754
754
{
755
755
  if (op_result == E_DEC_OVERFLOW)
756
756
  {
757
 
    set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_OUT_OF_RANGE, 1);
 
757
    set_warning(DRIZZLE_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_OUT_OF_RANGE, 1);
758
758
    return 1;
759
759
  }
760
760
  if (op_result == E_DEC_TRUNCATED)
761
761
  {
762
 
    set_warning(MYSQL_ERROR::WARN_LEVEL_NOTE, ER_WARN_DATA_TRUNCATED, 1);
 
762
    set_warning(DRIZZLE_ERROR::WARN_LEVEL_NOTE, ER_WARN_DATA_TRUNCATED, 1);
763
763
    /* We return 0 here as this is not a critical issue */
764
764
  }
765
765
  return 0;
1110
1110
  {
1111
1111
    if (val->sign())
1112
1112
    {
1113
 
      set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_OUT_OF_RANGE, 1);
 
1113
      set_warning(DRIZZLE_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_OUT_OF_RANGE, 1);
1114
1114
      i= 0;
1115
1115
      *err= 1;
1116
1116
    }
1374
1374
    if (nr < 0.0)
1375
1375
    {
1376
1376
      *ptr=0;
1377
 
      set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_OUT_OF_RANGE, 1);
 
1377
      set_warning(DRIZZLE_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_OUT_OF_RANGE, 1);
1378
1378
      error= 1;
1379
1379
    }
1380
1380
    else if (nr > 255.0)
1381
1381
    {
1382
1382
      *ptr=(char) 255;
1383
 
      set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_OUT_OF_RANGE, 1);
 
1383
      set_warning(DRIZZLE_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_OUT_OF_RANGE, 1);
1384
1384
      error= 1;
1385
1385
    }
1386
1386
    else
1391
1391
    if (nr < -128.0)
1392
1392
    {
1393
1393
      *ptr= (char) -128;
1394
 
      set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_OUT_OF_RANGE, 1);
 
1394
      set_warning(DRIZZLE_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_OUT_OF_RANGE, 1);
1395
1395
      error= 1;
1396
1396
    }
1397
1397
    else if (nr > 127.0)
1398
1398
    {
1399
1399
      *ptr=127;
1400
 
      set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_OUT_OF_RANGE, 1);
 
1400
      set_warning(DRIZZLE_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_OUT_OF_RANGE, 1);
1401
1401
      error= 1;
1402
1402
    }
1403
1403
    else
1416
1416
    if (nr < 0 && !unsigned_val)
1417
1417
    {
1418
1418
      *ptr= 0;
1419
 
      set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_OUT_OF_RANGE, 1);
 
1419
      set_warning(DRIZZLE_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_OUT_OF_RANGE, 1);
1420
1420
      error= 1;
1421
1421
    }
1422
1422
    else if ((uint64_t) nr > (uint64_t) 255)
1423
1423
    {
1424
1424
      *ptr= (char) 255;
1425
 
      set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_OUT_OF_RANGE, 1);
 
1425
      set_warning(DRIZZLE_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_OUT_OF_RANGE, 1);
1426
1426
      error= 1;
1427
1427
    }
1428
1428
    else
1435
1435
    if (nr < -128)
1436
1436
    {
1437
1437
      *ptr= (char) -128;
1438
 
      set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_OUT_OF_RANGE, 1);
 
1438
      set_warning(DRIZZLE_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_OUT_OF_RANGE, 1);
1439
1439
      error= 1;
1440
1440
    }
1441
1441
    else if (nr > 127)
1442
1442
    {
1443
1443
      *ptr=127;
1444
 
      set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_OUT_OF_RANGE, 1);
 
1444
      set_warning(DRIZZLE_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_OUT_OF_RANGE, 1);
1445
1445
      error= 1;
1446
1446
    }
1447
1447
    else
1596
1596
  *t= '\0';
1597
1597
  push_warning_printf(field->table->in_use, 
1598
1598
                      field->table->in_use->abort_on_warning ?
1599
 
                      MYSQL_ERROR::WARN_LEVEL_ERROR :
1600
 
                      MYSQL_ERROR::WARN_LEVEL_WARN,
 
1599
                      DRIZZLE_ERROR::WARN_LEVEL_ERROR :
 
1600
                      DRIZZLE_ERROR::WARN_LEVEL_WARN,
1601
1601
                      ER_TRUNCATED_WRONG_VALUE_FOR_FIELD, 
1602
1602
                      ER(ER_TRUNCATED_WRONG_VALUE_FOR_FIELD),
1603
1603
                      "string", tmp, field->field_name,
1632
1632
    if (test_if_important_data(field_charset, ptr, end))
1633
1633
    {
1634
1634
      if (table->in_use->abort_on_warning)
1635
 
        set_warning(MYSQL_ERROR::WARN_LEVEL_ERROR, ER_DATA_TOO_LONG, 1);
 
1635
        set_warning(DRIZZLE_ERROR::WARN_LEVEL_ERROR, ER_DATA_TOO_LONG, 1);
1636
1636
      else
1637
 
        set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_TRUNCATED, 1);
 
1637
        set_warning(DRIZZLE_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_TRUNCATED, 1);
1638
1638
    }
1639
1639
    else /* If we lost only spaces then produce a NOTE, not a WARNING */
1640
 
      set_warning(MYSQL_ERROR::WARN_LEVEL_NOTE, ER_WARN_DATA_TRUNCATED, 1);
 
1640
      set_warning(DRIZZLE_ERROR::WARN_LEVEL_NOTE, ER_WARN_DATA_TRUNCATED, 1);
1641
1641
    return 2;
1642
1642
  }
1643
1643
  return 0;
1663
1663
  if (error)
1664
1664
  {
1665
1665
    if (table->in_use->abort_on_warning)
1666
 
      set_warning(MYSQL_ERROR::WARN_LEVEL_ERROR, ER_DATA_TOO_LONG, 1);
 
1666
      set_warning(DRIZZLE_ERROR::WARN_LEVEL_ERROR, ER_DATA_TOO_LONG, 1);
1667
1667
    else
1668
 
      set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_TRUNCATED, 1);
 
1668
      set_warning(DRIZZLE_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_TRUNCATED, 1);
1669
1669
  }
1670
1670
  return store(buff, length, charset());
1671
1671
}
1803
1803
      if (err || end != from+length || tmp > typelib->count)
1804
1804
      {
1805
1805
        tmp=0;
1806
 
        set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_TRUNCATED, 1);
 
1806
        set_warning(DRIZZLE_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_TRUNCATED, 1);
1807
1807
      }
1808
1808
      if (!table->in_use->count_cuted_fields)
1809
1809
        err= 0;
1810
1810
    }
1811
1811
    else
1812
 
      set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_TRUNCATED, 1);
 
1812
      set_warning(DRIZZLE_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_TRUNCATED, 1);
1813
1813
  }
1814
1814
  store_type((uint64_t) tmp);
1815
1815
  return err;
1828
1828
  int error= 0;
1829
1829
  if ((uint64_t) nr > typelib->count || nr == 0)
1830
1830
  {
1831
 
    set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_TRUNCATED, 1);
 
1831
    set_warning(DRIZZLE_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_TRUNCATED, 1);
1832
1832
    if (nr != 0 || table->in_use->count_cuted_fields)
1833
1833
    {
1834
1834
      nr= 0;
2245
2245
        /*
2246
2246
          Otherwise a default of '' is just a warning.
2247
2247
        */
2248
 
        push_warning_printf(thd, MYSQL_ERROR::WARN_LEVEL_WARN,
 
2248
        push_warning_printf(thd, DRIZZLE_ERROR::WARN_LEVEL_WARN,
2249
2249
                            ER_BLOB_CANT_HAVE_DEFAULT,
2250
2250
                            ER(ER_BLOB_CANT_HAVE_DEFAULT),
2251
2251
                            fld_name);
2660
2660
*/
2661
2661
 
2662
2662
bool 
2663
 
Field::set_warning(MYSQL_ERROR::enum_warning_level level, uint code,
 
2663
Field::set_warning(DRIZZLE_ERROR::enum_warning_level level, uint code,
2664
2664
                   int cuted_increment)
2665
2665
{
2666
2666
  /*
2675
2675
                        thd->row_count);
2676
2676
    return 0;
2677
2677
  }
2678
 
  return level >= MYSQL_ERROR::WARN_LEVEL_WARN;
 
2678
  return level >= DRIZZLE_ERROR::WARN_LEVEL_WARN;
2679
2679
}
2680
2680
 
2681
2681
 
2696
2696
*/
2697
2697
 
2698
2698
void 
2699
 
Field::set_datetime_warning(MYSQL_ERROR::enum_warning_level level, 
 
2699
Field::set_datetime_warning(DRIZZLE_ERROR::enum_warning_level level, 
2700
2700
                            unsigned int code, 
2701
2701
                            const char *str, uint str_length, 
2702
2702
                            timestamp_type ts_type, int cuted_increment)
2703
2703
{
2704
2704
  THD *thd= table ? table->in_use : current_thd;
2705
2705
  if ((thd->really_abort_on_warning() &&
2706
 
       level >= MYSQL_ERROR::WARN_LEVEL_WARN) ||
 
2706
       level >= DRIZZLE_ERROR::WARN_LEVEL_WARN) ||
2707
2707
      set_warning(level, code, cuted_increment))
2708
2708
    make_truncated_value_warning(thd, level, str, str_length, ts_type,
2709
2709
                                 field_name);
2726
2726
*/
2727
2727
 
2728
2728
void 
2729
 
Field::set_datetime_warning(MYSQL_ERROR::enum_warning_level level, uint code, 
 
2729
Field::set_datetime_warning(DRIZZLE_ERROR::enum_warning_level level, uint code, 
2730
2730
                            int64_t nr, timestamp_type ts_type,
2731
2731
                            int cuted_increment)
2732
2732
{
2757
2757
*/
2758
2758
 
2759
2759
void 
2760
 
Field::set_datetime_warning(MYSQL_ERROR::enum_warning_level level, uint code, 
 
2760
Field::set_datetime_warning(DRIZZLE_ERROR::enum_warning_level level, uint code, 
2761
2761
                            double nr, timestamp_type ts_type)
2762
2762
{
2763
2763
  THD *thd= table ? table->in_use : current_thd;