~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to drizzled/field/fdecimal.cc

  • Committer: Monty Taylor
  • Date: 2008-08-02 01:03:15 UTC
  • mto: (236.1.42 codestyle)
  • mto: This revision was merged to the branch mainline in revision 261.
  • Revision ID: monty@inaugust.com-20080802010315-65h5938pymg9d99z
Moved m4 macros to top-level m4 dir, per GNU standards (and where gettext wanted it :)

Show diffs side-by-side

added added

removed removed

Lines of Context:
22
22
#pragma implementation                          // gcc: Class implementation
23
23
#endif
24
24
 
25
 
#include <drizzled/server_includes.h>
26
25
#include <drizzled/field/fdecimal.h>
27
26
#include <drizzled/drizzled_error_messages.h>
28
27
 
117
116
  /* check that we do not try to write negative value in unsigned field */
118
117
  if (unsigned_flag && decimal_value->sign())
119
118
  {
120
 
    set_warning(DRIZZLE_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_OUT_OF_RANGE, 1);
 
119
    set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_OUT_OF_RANGE, 1);
121
120
    error= 1;
122
121
    decimal_value= &decimal_zero;
123
122
  }
135
134
 
136
135
 
137
136
int Field_new_decimal::store(const char *from, uint length,
138
 
                             const CHARSET_INFO * const charset_arg)
 
137
                             CHARSET_INFO *charset_arg)
139
138
{
140
139
  int err;
141
140
  my_decimal decimal_value;
150
149
    String from_as_str;
151
150
    from_as_str.copy(from, length, &my_charset_bin);
152
151
 
153
 
    push_warning_printf(table->in_use, DRIZZLE_ERROR::WARN_LEVEL_ERROR,
 
152
    push_warning_printf(table->in_use, MYSQL_ERROR::WARN_LEVEL_ERROR,
154
153
                        ER_TRUNCATED_WRONG_VALUE_FOR_FIELD,
155
154
                        ER(ER_TRUNCATED_WRONG_VALUE_FOR_FIELD),
156
155
                        "decimal", from_as_str.c_ptr(), field_name,
157
 
                        (uint32_t) table->in_use->row_count);
 
156
                        (ulong) table->in_use->row_count);
158
157
 
159
158
    return(err);
160
159
  }
161
160
 
162
161
  switch (err) {
163
162
  case E_DEC_TRUNCATED:
164
 
    set_warning(DRIZZLE_ERROR::WARN_LEVEL_NOTE, ER_WARN_DATA_TRUNCATED, 1);
 
163
    set_warning(MYSQL_ERROR::WARN_LEVEL_NOTE, ER_WARN_DATA_TRUNCATED, 1);
165
164
    break;
166
165
  case E_DEC_OVERFLOW:
167
 
    set_warning(DRIZZLE_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_OUT_OF_RANGE, 1);
 
166
    set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_OUT_OF_RANGE, 1);
168
167
    set_value_on_overflow(&decimal_value, decimal_value.sign());
169
168
    break;
170
169
  case E_DEC_BAD_NUM:
173
172
      String from_as_str;
174
173
      from_as_str.copy(from, length, &my_charset_bin);
175
174
 
176
 
    push_warning_printf(table->in_use, DRIZZLE_ERROR::WARN_LEVEL_WARN,
 
175
    push_warning_printf(table->in_use, MYSQL_ERROR::WARN_LEVEL_WARN,
177
176
                        ER_TRUNCATED_WRONG_VALUE_FOR_FIELD,
178
177
                        ER(ER_TRUNCATED_WRONG_VALUE_FOR_FIELD),
179
178
                          "decimal", from_as_str.c_ptr(), field_name,
180
 
                        (uint32_t) table->in_use->row_count);
 
179
                        (ulong) table->in_use->row_count);
181
180
    my_decimal_set_zero(&decimal_value);
182
181
 
183
182
    break;
305
304
 
306
305
void Field_new_decimal::sql_type(String &str) const
307
306
{
308
 
  const CHARSET_INFO * const cs= str.charset();
 
307
  CHARSET_INFO *cs= str.charset();
309
308
  str.length(cs->cset->snprintf(cs, (char*) str.ptr(), str.alloced_length(),
310
309
                                "decimal(%d,%d)", precision, (int)dec));
311
310
  add_unsigned(str);