~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to drizzled/field.cc

  • Committer: Brian Aker
  • Date: 2008-07-31 19:57:34 UTC
  • mfrom: (236.1.27 codestyle)
  • Revision ID: brian@tangent.org-20080731195734-c7cu4gx70xgjr68o
Merge from Monty.

Show diffs side-by-side

added added

removed removed

Lines of Context:
27
27
 
28
28
#include "mysql_priv.h"
29
29
#include "sql_select.h"
30
 
#include <m_ctype.h>
31
30
#include <errno.h>
32
31
 
33
32
// Maximum allowed exponent value for converting string to decimal
666
665
  /* Test if we have garbage at the end of the given string. */
667
666
  if (test_if_important_data(cs, int_end, str + length))
668
667
  {
669
 
    set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, WARN_DATA_TRUNCATED, 1);
 
668
    set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_TRUNCATED, 1);
670
669
    return 2;
671
670
  }
672
671
  return 0;
759
758
  }
760
759
  if (op_result == E_DEC_TRUNCATED)
761
760
  {
762
 
    set_warning(MYSQL_ERROR::WARN_LEVEL_NOTE, WARN_DATA_TRUNCATED, 1);
 
761
    set_warning(MYSQL_ERROR::WARN_LEVEL_NOTE, ER_WARN_DATA_TRUNCATED, 1);
763
762
    /* We return 0 here as this is not a critical issue */
764
763
  }
765
764
  return 0;
1257
1256
}
1258
1257
 
1259
1258
 
1260
 
bool Field::get_date(MYSQL_TIME *ltime,uint fuzzydate)
 
1259
bool Field::get_date(DRIZZLE_TIME *ltime,uint fuzzydate)
1261
1260
{
1262
1261
  char buff[40];
1263
1262
  String tmp(buff,sizeof(buff),&my_charset_bin),*res;
1264
1263
  if (!(res=val_str(&tmp)) ||
1265
1264
      str_to_datetime_with_warn(res->ptr(), res->length(),
1266
 
                                ltime, fuzzydate) <= MYSQL_TIMESTAMP_ERROR)
 
1265
                                ltime, fuzzydate) <= DRIZZLE_TIMESTAMP_ERROR)
1267
1266
    return 1;
1268
1267
  return 0;
1269
1268
}
1270
1269
 
1271
 
bool Field::get_time(MYSQL_TIME *ltime)
 
1270
bool Field::get_time(DRIZZLE_TIME *ltime)
1272
1271
{
1273
1272
  char buff[40];
1274
1273
  String tmp(buff,sizeof(buff),&my_charset_bin),*res;
1285
1284
    Needs to be changed if/when we want to support different time formats.
1286
1285
*/
1287
1286
 
1288
 
int Field::store_time(MYSQL_TIME *ltime,
 
1287
int Field::store_time(DRIZZLE_TIME *ltime,
1289
1288
                      timestamp_type type_arg __attribute__((unused)))
1290
1289
{
1291
1290
  char buff[MAX_DATE_STRING_REP_LENGTH];
1634
1633
      if (table->in_use->abort_on_warning)
1635
1634
        set_warning(MYSQL_ERROR::WARN_LEVEL_ERROR, ER_DATA_TOO_LONG, 1);
1636
1635
      else
1637
 
        set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, WARN_DATA_TRUNCATED, 1);
 
1636
        set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_TRUNCATED, 1);
1638
1637
    }
1639
1638
    else /* If we lost only spaces then produce a NOTE, not a WARNING */
1640
 
      set_warning(MYSQL_ERROR::WARN_LEVEL_NOTE, WARN_DATA_TRUNCATED, 1);
 
1639
      set_warning(MYSQL_ERROR::WARN_LEVEL_NOTE, ER_WARN_DATA_TRUNCATED, 1);
1641
1640
    return 2;
1642
1641
  }
1643
1642
  return 0;
1657
1656
  char buff[DOUBLE_TO_STRING_CONVERSION_BUFFER_SIZE];
1658
1657
  uint local_char_length= field_length / charset()->mbmaxlen;
1659
1658
  size_t length;
1660
 
  my_bool error;
 
1659
  bool error;
1661
1660
 
1662
1661
  length= my_gcvt(nr, MY_GCVT_ARG_DOUBLE, local_char_length, buff, &error);
1663
1662
  if (error)
1665
1664
    if (table->in_use->abort_on_warning)
1666
1665
      set_warning(MYSQL_ERROR::WARN_LEVEL_ERROR, ER_DATA_TOO_LONG, 1);
1667
1666
    else
1668
 
      set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, WARN_DATA_TRUNCATED, 1);
 
1667
      set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_TRUNCATED, 1);
1669
1668
  }
1670
1669
  return store(buff, length, charset());
1671
1670
}
1803
1802
      if (err || end != from+length || tmp > typelib->count)
1804
1803
      {
1805
1804
        tmp=0;
1806
 
        set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, WARN_DATA_TRUNCATED, 1);
 
1805
        set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_TRUNCATED, 1);
1807
1806
      }
1808
1807
      if (!table->in_use->count_cuted_fields)
1809
1808
        err= 0;
1810
1809
    }
1811
1810
    else
1812
 
      set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, WARN_DATA_TRUNCATED, 1);
 
1811
      set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_TRUNCATED, 1);
1813
1812
  }
1814
1813
  store_type((uint64_t) tmp);
1815
1814
  return err;
1828
1827
  int error= 0;
1829
1828
  if ((uint64_t) nr > typelib->count || nr == 0)
1830
1829
  {
1831
 
    set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, WARN_DATA_TRUNCATED, 1);
 
1830
    set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_TRUNCATED, 1);
1832
1831
    if (nr != 0 || table->in_use->count_cuted_fields)
1833
1832
    {
1834
1833
      nr= 0;
2696
2695
*/
2697
2696
 
2698
2697
void 
2699
 
Field::set_datetime_warning(MYSQL_ERROR::enum_warning_level level, uint code, 
 
2698
Field::set_datetime_warning(MYSQL_ERROR::enum_warning_level level, 
 
2699
                            unsigned int code, 
2700
2700
                            const char *str, uint str_length, 
2701
2701
                            timestamp_type ts_type, int cuted_increment)
2702
2702
{