51
51
#define BLOB_PACK_LENGTH_TO_MAX_LENGH(arg) \
52
52
((ulong) ((1LL << min(arg, 4) * 8) - 1LL))
54
#define ASSERT_COLUMN_MARKED_FOR_READ DBUG_ASSERT(!table || (!table->read_set || bitmap_is_set(table->read_set, field_index)))
55
#define ASSERT_COLUMN_MARKED_FOR_WRITE DBUG_ASSERT(!table || (!table->write_set || bitmap_is_set(table->write_set, field_index)))
58
55
Rules for merging different types of fields in UNION
683
680
enum_field_types Field::field_type_merge(enum_field_types a,
684
681
enum_field_types b)
686
DBUG_ASSERT(a < FIELDTYPE_TEAR_FROM || a > FIELDTYPE_TEAR_TO);
687
DBUG_ASSERT(b < FIELDTYPE_TEAR_FROM || b > FIELDTYPE_TEAR_TO);
683
assert(a < FIELDTYPE_TEAR_FROM || a > FIELDTYPE_TEAR_TO);
684
assert(b < FIELDTYPE_TEAR_FROM || b > FIELDTYPE_TEAR_TO);
688
685
return field_types_merge_rules[field_type2index(a)]
689
686
[field_type2index(b)];
774
771
@param type field type
777
TRUE Type can have a prefixed key
774
true Type can have a prefixed key
779
FALSE Type can not have a prefixed key
776
false Type can not have a prefixed key
782
779
bool Field::type_can_have_key_part(enum enum_field_types type)
1055
1051
key_start(0), part_of_key(0), part_of_key_not_clustered(0),
1056
1052
part_of_sortkey(0), unireg_check(unireg_check_arg),
1057
1053
field_length(length_arg), null_bit(null_bit_arg),
1058
is_created_from_null_item(FALSE)
1054
is_created_from_null_item(false)
1060
1056
flags=null_ptr ? 0: NOT_NULL_FLAG;
1061
1057
comment.str= (char*) "";
1082
1078
Field::do_last_null_byte() const
1084
DBUG_ASSERT(null_ptr == NULL || null_ptr >= table->record[0]);
1080
assert(null_ptr == NULL || null_ptr >= table->record[0]);
1086
1082
return (size_t) (null_ptr - table->record[0]) + 1;
1087
1083
return LAST_NULL_BYTE_UNDEF;
1174
1170
@param low_byte_first
1175
@c TRUE if integers should be stored little-endian, @c FALSE if
1171
@c true if integers should be stored little-endian, @c false if
1176
1172
native format should be used. Note that for little-endian machines,
1177
1173
the value of this flag is a moot point since the native format is
1353
1349
int Field_num::store_decimal(const my_decimal *val)
1355
ASSERT_COLUMN_MARKED_FOR_WRITE;
1357
1352
longlong i= convert_decimal2longlong(val, unsigned_flag, &err);
1358
1353
return test(err | store(i, unsigned_flag));
1376
1371
my_decimal* Field_num::val_decimal(my_decimal *decimal_value)
1378
ASSERT_COLUMN_MARKED_FOR_READ;
1379
DBUG_ASSERT(result_type() == INT_RESULT);
1373
assert(result_type() == INT_RESULT);
1380
1374
longlong nr= val_int();
1381
1375
int2my_decimal(E_DEC_FATAL_ERROR, nr, unsigned_flag, decimal_value);
1382
1376
return decimal_value;
1502
1494
int Field::store_time(MYSQL_TIME *ltime,
1503
1495
timestamp_type type_arg __attribute__((__unused__)))
1505
ASSERT_COLUMN_MARKED_FOR_WRITE;
1506
1497
char buff[MAX_DATE_STRING_REP_LENGTH];
1507
1498
uint length= (uint) my_TIME_to_str(ltime, buff);
1508
1499
return store(buff, length, &my_charset_bin);
1593
1584
precision= my_decimal_length_to_precision(len_arg, dec_arg, unsigned_arg);
1594
1585
set_if_smaller(precision, DECIMAL_MAX_PRECISION);
1595
DBUG_ASSERT((precision <= DECIMAL_MAX_PRECISION) &&
1586
assert((precision <= DECIMAL_MAX_PRECISION) &&
1596
1587
(dec <= DECIMAL_MAX_SCALE));
1597
1588
bin_size= my_decimal_get_binary_size(precision, dec);
1610
1601
precision= my_decimal_length_to_precision(len_arg, dec_arg, unsigned_arg);
1611
1602
set_if_smaller(precision, DECIMAL_MAX_PRECISION);
1612
DBUG_ASSERT((precision <= DECIMAL_MAX_PRECISION) &&
1603
assert((precision <= DECIMAL_MAX_PRECISION) &&
1613
1604
(dec <= DECIMAL_MAX_SCALE));
1614
1605
bin_size= my_decimal_get_binary_size(precision, dec);
1632
1623
void Field_new_decimal::set_value_on_overflow(my_decimal *decimal_value,
1635
DBUG_ENTER("Field_new_decimal::set_value_on_overflow");
1636
1626
max_my_decimal(decimal_value, precision, decimals());
1639
1629
if (unsigned_flag)
1640
1630
my_decimal_set_zero(decimal_value);
1642
decimal_value->sign(TRUE);
1632
decimal_value->sign(true);
1663
1653
bool Field_new_decimal::store_value(const my_decimal *decimal_value)
1665
ASSERT_COLUMN_MARKED_FOR_WRITE;
1667
DBUG_ENTER("Field_new_decimal::store_value");
1670
char dbug_buff[DECIMAL_MAX_STR_LENGTH+1];
1671
DBUG_PRINT("enter", ("value: %s", dbug_decimal_as_string(dbug_buff, decimal_value)));
1675
1657
/* check that we do not try to write negative value in unsigned field */
1676
1658
if (unsigned_flag && decimal_value->sign())
1678
DBUG_PRINT("info", ("unsigned overflow"));
1679
1660
set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_OUT_OF_RANGE, 1);
1681
1662
decimal_value= &decimal_zero;
1685
char dbug_buff[DECIMAL_MAX_STR_LENGTH+1];
1686
DBUG_PRINT("info", ("saving with precision %d scale: %d value %s",
1687
(int)precision, (int)dec,
1688
dbug_decimal_as_string(dbug_buff, decimal_value)));
1692
1665
if (warn_if_overflow(my_decimal2binary(E_DEC_FATAL_ERROR & ~E_DEC_OVERFLOW,
1693
1666
decimal_value, ptr, precision, dec)))
1695
1668
my_decimal buff;
1696
DBUG_PRINT("info", ("overflow"));
1697
1669
set_value_on_overflow(&buff, decimal_value->sign());
1698
1670
my_decimal2binary(E_DEC_FATAL_ERROR, &buff, ptr, precision, dec);
1701
DBUG_EXECUTE("info", print_decimal_buff(decimal_value, (uchar *) ptr,
1707
1677
int Field_new_decimal::store(const char *from, uint length,
1708
1678
CHARSET_INFO *charset_arg)
1710
ASSERT_COLUMN_MARKED_FOR_WRITE;
1712
1681
my_decimal decimal_value;
1713
DBUG_ENTER("Field_new_decimal::store(char*)");
1715
1683
if ((err= str2my_decimal(E_DEC_FATAL_ERROR &
1716
1684
~(E_DEC_OVERFLOW | E_DEC_BAD_NUM),
1760
char dbug_buff[DECIMAL_MAX_STR_LENGTH+1];
1761
DBUG_PRINT("enter", ("value: %s",
1762
dbug_decimal_as_string(dbug_buff, &decimal_value)));
1764
1727
store_value(&decimal_value);
1775
1738
int Field_new_decimal::store(double nr)
1777
ASSERT_COLUMN_MARKED_FOR_WRITE;
1778
1740
my_decimal decimal_value;
1780
DBUG_ENTER("Field_new_decimal::store(double)");
1782
1743
err= double2my_decimal(E_DEC_FATAL_ERROR & ~E_DEC_OVERFLOW, nr,
1783
1744
&decimal_value);
1793
1754
else if (err && !table->in_use->got_warning)
1794
1755
err= warn_if_overflow(err);
1799
1760
int Field_new_decimal::store(longlong nr, bool unsigned_val)
1801
ASSERT_COLUMN_MARKED_FOR_WRITE;
1802
1762
my_decimal decimal_value;
1836
1795
double Field_new_decimal::val_real(void)
1838
ASSERT_COLUMN_MARKED_FOR_READ;
1840
1798
my_decimal decimal_value;
1841
1799
my_decimal2double(E_DEC_FATAL_ERROR, val_decimal(&decimal_value), &dbl);
1846
1804
longlong Field_new_decimal::val_int(void)
1848
ASSERT_COLUMN_MARKED_FOR_READ;
1850
1807
my_decimal decimal_value;
1851
1808
my_decimal2int(E_DEC_FATAL_ERROR, val_decimal(&decimal_value),
1857
1814
my_decimal* Field_new_decimal::val_decimal(my_decimal *decimal_value)
1859
ASSERT_COLUMN_MARKED_FOR_READ;
1860
DBUG_ENTER("Field_new_decimal::val_decimal");
1861
1816
binary2my_decimal(E_DEC_FATAL_ERROR, ptr, decimal_value,
1862
1817
precision, dec);
1863
DBUG_EXECUTE("info", print_decimal_buff(decimal_value, (uchar *) ptr,
1865
DBUG_RETURN(decimal_value);
1818
return(decimal_value);
1869
1822
String *Field_new_decimal::val_str(String *val_buffer,
1870
1823
String *val_ptr __attribute__((unused)))
1872
ASSERT_COLUMN_MARKED_FOR_READ;
1873
1825
my_decimal decimal_value;
1874
1826
uint fixed_precision= zerofill ? precision : 0;
1875
1827
my_decimal2string(E_DEC_FATAL_ERROR, val_decimal(&decimal_value),
2160
2107
String *Field_tiny::val_str(String *val_buffer,
2161
2108
String *val_ptr __attribute__((unused)))
2163
ASSERT_COLUMN_MARKED_FOR_READ;
2164
2110
CHARSET_INFO *cs= &my_charset_bin;
2166
2112
uint mlength=max(field_length+1,5*cs->mbmaxlen);
2372
2313
String *Field_short::val_str(String *val_buffer,
2373
2314
String *val_ptr __attribute__((unused)))
2375
ASSERT_COLUMN_MARKED_FOR_READ;
2376
2316
CHARSET_INFO *cs= &my_charset_bin;
2378
2318
uint mlength=max(field_length+1,7*cs->mbmaxlen);
2603
2539
longlong Field_long::val_int(void)
2605
ASSERT_COLUMN_MARKED_FOR_READ;
2607
2542
/* See the comment in Field_long::store(long long) */
2608
DBUG_ASSERT(table->in_use == current_thd);
2543
assert(table->in_use == current_thd);
2609
2544
#ifdef WORDS_BIGENDIAN
2610
2545
if (table->s->db_low_byte_first)
2611
2546
j=sint4korr(ptr);
2618
2553
String *Field_long::val_str(String *val_buffer,
2619
2554
String *val_ptr __attribute__((unused)))
2621
ASSERT_COLUMN_MARKED_FOR_READ;
2622
2556
CHARSET_INFO *cs= &my_charset_bin;
2624
2558
uint mlength=max(field_length+1,12*cs->mbmaxlen);
2962
2889
Field_real::pack(uchar *to, const uchar *from,
2963
2890
uint max_length, bool low_byte_first)
2965
DBUG_ENTER("Field_real::pack");
2966
DBUG_ASSERT(max_length >= pack_length());
2967
DBUG_PRINT("debug", ("pack_length(): %u", pack_length()));
2892
assert(max_length >= pack_length());
2968
2893
#ifdef WORDS_BIGENDIAN
2969
2894
if (low_byte_first != table->s->db_low_byte_first)
2971
2896
const uchar *dptr= from + pack_length();
2972
2897
while (dptr-- > from)
2978
DBUG_RETURN(Field::pack(to, from, max_length, low_byte_first));
2903
return(Field::pack(to, from, max_length, low_byte_first));
2982
2907
Field_real::unpack(uchar *to, const uchar *from,
2983
2908
uint param_data, bool low_byte_first)
2985
DBUG_ENTER("Field_real::unpack");
2986
DBUG_PRINT("debug", ("pack_length(): %u", pack_length()));
2987
2910
#ifdef WORDS_BIGENDIAN
2988
2911
if (low_byte_first != table->s->db_low_byte_first)
2990
2913
const uchar *dptr= from + pack_length();
2991
2914
while (dptr-- > from)
2993
DBUG_RETURN(from + pack_length());
2916
return(from + pack_length());
2997
DBUG_RETURN(Field::unpack(to, from, param_data, low_byte_first));
2920
return(Field::unpack(to, from, param_data, low_byte_first));
3000
2923
/****************************************************************************
3595
3508
function should be called only for first of them (i.e. the one
3596
3509
having auto-set property).
3598
DBUG_ASSERT(table->timestamp_field == this);
3511
assert(table->timestamp_field == this);
3599
3512
/* Fall-through */
3600
3513
case TIMESTAMP_DNUN_FIELD:
3601
3514
return TIMESTAMP_AUTO_SET_ON_BOTH;
3719
3630
double Field_timestamp::val_real(void)
3721
ASSERT_COLUMN_MARKED_FOR_READ;
3722
3632
return (double) Field_timestamp::val_int();
3725
3635
longlong Field_timestamp::val_int(void)
3727
ASSERT_COLUMN_MARKED_FOR_READ;
3729
3638
MYSQL_TIME time_tmp;
3730
3639
THD *thd= table ? table->in_use : current_thd;
3971
3879
(ltime->minute * 100 + ltime->second);
3972
3880
if (ltime->neg)
3974
return Field_time::store((longlong) tmp, FALSE);
3882
return Field_time::store((longlong) tmp, false);
3978
3886
int Field_time::store(double nr)
3980
ASSERT_COLUMN_MARKED_FOR_WRITE;
3983
3890
if (nr > (double)TIME_MAX_VALUE)
4054
3960
double Field_time::val_real(void)
4056
ASSERT_COLUMN_MARKED_FOR_READ;
4057
3962
uint32 j= (uint32) uint3korr(ptr);
4058
3963
return (double) j;
4061
3966
longlong Field_time::val_int(void)
4063
ASSERT_COLUMN_MARKED_FOR_READ;
4064
3968
return (longlong) sint3korr(ptr);
4074
3978
String *Field_time::val_str(String *val_buffer,
4075
3979
String *val_ptr __attribute__((unused)))
4077
ASSERT_COLUMN_MARKED_FOR_READ;
4078
3981
MYSQL_TIME ltime;
4079
3982
val_buffer->alloc(MAX_DATE_STRING_REP_LENGTH);
4080
3983
long tmp=(long) sint3korr(ptr);
4187
4090
int Field_year::store(const char *from, uint len,CHARSET_INFO *cs)
4189
ASSERT_COLUMN_MARKED_FOR_WRITE;
4192
4094
longlong nr= cs->cset->strntoull10rnd(cs, from, len, 0, &end, &error);
4226
4128
if (nr < 0.0 || nr >= 2155.0)
4228
(void) Field_year::store((longlong) -1, FALSE);
4130
(void) Field_year::store((longlong) -1, false);
4231
return Field_year::store((longlong) nr, FALSE);
4133
return Field_year::store((longlong) nr, false);
4235
4137
int Field_year::store(longlong nr,
4236
4138
bool unsigned_val __attribute__((__unused__)))
4238
ASSERT_COLUMN_MARKED_FOR_WRITE;
4239
4140
if (nr < 0 || (nr >= 100 && nr <= 1900) || nr > 2155)
4372
4270
WARN_DATA_TRUNCATED, nr, MYSQL_TIMESTAMP_DATE);
4375
return Field_newdate::store((longlong) rint(nr), FALSE);
4273
return Field_newdate::store((longlong) rint(nr), false);
4379
4277
int Field_newdate::store(longlong nr,
4380
4278
bool unsigned_val __attribute__((__unused__)))
4382
ASSERT_COLUMN_MARKED_FOR_WRITE;
4383
4280
MYSQL_TIME l_time;
4468
4364
double Field_newdate::val_real(void)
4470
ASSERT_COLUMN_MARKED_FOR_READ;
4471
4366
return (double) Field_newdate::val_int();
4475
4370
longlong Field_newdate::val_int(void)
4477
ASSERT_COLUMN_MARKED_FOR_READ;
4478
4372
ulong j= uint3korr(ptr);
4479
4373
j= (j % 32L)+(j / 32L % 16L)*100L + (j/(16L*32L))*10000L;
4480
4374
return (longlong) j;
4484
4378
String *Field_newdate::val_str(String *val_buffer,
4485
4379
String *val_ptr __attribute__((unused)))
4487
ASSERT_COLUMN_MARKED_FOR_READ;
4488
4381
val_buffer->alloc(field_length);
4489
4382
val_buffer->length(field_length);
4490
4383
uint32 tmp=(uint32) uint3korr(ptr);
4727
4616
String *Field_datetime::val_str(String *val_buffer,
4728
4617
String *val_ptr __attribute__((unused)))
4730
ASSERT_COLUMN_MARKED_FOR_READ;
4731
4619
val_buffer->alloc(field_length);
4732
4620
val_buffer->length(field_length);
4877
4765
"Cannot convert character string: 'xxx' for column 't' at row 1"
4880
FALSE - If errors didn't happen
4881
TRUE - If an error happened
4768
false - If errors didn't happen
4769
true - If an error happened
4938
4826
ER(ER_TRUNCATED_WRONG_VALUE_FOR_FIELD),
4939
4827
"string", tmp, field->field_name,
4940
4828
(ulong) field->table->in_use->row_count);
4985
4873
int Field_string::store(const char *from,uint length,CHARSET_INFO *cs)
4987
ASSERT_COLUMN_MARKED_FOR_WRITE;
4988
4875
uint copy_length;
4989
4876
const char *well_formed_error_pos;
4990
4877
const char *cannot_convert_error_pos;
4991
4878
const char *from_end_pos;
4993
4880
/* See the comment for Field_long::store(long long) */
4994
DBUG_ASSERT(table->in_use == current_thd);
4881
assert(table->in_use == current_thd);
4996
4883
copy_length= well_formed_copy_nchars(field_charset,
4997
4884
(char*) ptr, field_length,
5151
5035
String *Field_string::val_str(String *val_buffer __attribute__((unused)),
5152
5036
String *val_ptr)
5154
ASSERT_COLUMN_MARKED_FOR_READ;
5155
5038
/* See the comment for Field_long::store(long long) */
5156
DBUG_ASSERT(table->in_use == current_thd);
5039
assert(table->in_use == current_thd);
5158
5041
if (table->in_use->variables.sql_mode &
5159
5042
MODE_PAD_CHAR_TO_FULL_LENGTH)
5169
5052
my_decimal *Field_string::val_decimal(my_decimal *decimal_value)
5171
ASSERT_COLUMN_MARKED_FOR_READ;
5172
5054
int err= str2my_decimal(E_DEC_FATAL_ERROR, (char*) ptr, field_length,
5173
5055
charset(), decimal_value);
5174
5056
if (!table->in_use->no_errors && err)
5213
5095
void Field_string::sort_string(uchar *to,uint length)
5215
IF_DBUG(uint tmp=) my_strnxfrm(field_charset,
5097
uint tmp= my_strnxfrm(field_charset,
5217
5099
ptr, field_length);
5218
DBUG_ASSERT(tmp == length);
5100
assert(tmp == length);
5491
5373
int Field_varstring::do_save_field_metadata(uchar *metadata_ptr)
5493
5375
char *ptr= (char *)metadata_ptr;
5494
DBUG_ASSERT(field_length <= 65535);
5376
assert(field_length <= 65535);
5495
5377
int2store(ptr, field_length);
5499
5381
int Field_varstring::store(const char *from,uint length,CHARSET_INFO *cs)
5501
ASSERT_COLUMN_MARKED_FOR_WRITE;
5502
5383
uint copy_length;
5503
5384
const char *well_formed_error_pos;
5504
5385
const char *cannot_convert_error_pos;
5564
5443
String *Field_varstring::val_str(String *val_buffer __attribute__((unused)),
5565
5444
String *val_ptr)
5567
ASSERT_COLUMN_MARKED_FOR_READ;
5568
5446
uint length= length_bytes == 1 ? (uint) *ptr : uint2korr(ptr);
5569
5447
val_ptr->set((const char*) ptr+length_bytes, length, field_charset);
5570
5448
return val_ptr;
5574
5452
my_decimal *Field_varstring::val_decimal(my_decimal *decimal_value)
5576
ASSERT_COLUMN_MARKED_FOR_READ;
5577
5454
uint length= length_bytes == 1 ? (uint) *ptr : uint2korr(ptr);
5578
5455
str2my_decimal(E_DEC_FATAL_ERROR, (char*) ptr+length_bytes, length,
5579
5456
charset(), decimal_value);
5668
5545
tot_length= my_strnxfrm(field_charset,
5669
5546
to, length, ptr + length_bytes,
5671
DBUG_ASSERT(tot_length == length);
5548
assert(tot_length == length);
6172
6049
int Field_blob::store(const char *from,uint length,CHARSET_INFO *cs)
6174
ASSERT_COLUMN_MARKED_FOR_WRITE;
6175
6051
uint copy_length, new_length;
6176
6052
const char *well_formed_error_pos;
6177
6053
const char *cannot_convert_error_pos;
6487
6359
blob_length=my_strnxfrm(field_charset,
6488
6360
to, length, blob, blob_length);
6489
DBUG_ASSERT(blob_length == length);
6361
assert(blob_length == length);
6513
6385
uchar *Field_blob::pack(uchar *to, const uchar *from,
6514
6386
uint max_length, bool low_byte_first)
6516
DBUG_ENTER("Field_blob::pack");
6517
DBUG_PRINT("enter", ("to: 0x%lx; from: 0x%lx;"
6518
" max_length: %u; low_byte_first: %d",
6519
(ulong) to, (ulong) from,
6520
max_length, low_byte_first));
6521
DBUG_DUMP("record", from, table->s->reclength);
6522
6388
uchar *save= ptr;
6523
6389
ptr= (uchar*) from;
6524
6390
uint32 length=get_length(); // Length of from string
6539
6405
memcpy(to+packlength, from,length);
6541
6407
ptr=save; // Restore org row pointer
6542
DBUG_DUMP("packed", to, packlength + length);
6543
DBUG_RETURN(to+packlength+length);
6408
return(to+packlength+length);
6556
6421
@param to Destination of the data
6557
6422
@param from Source of the data
6558
@param param_data @c TRUE if base types should be stored in little-
6559
endian format, @c FALSE if native format should
6423
@param param_data @c true if base types should be stored in little-
6424
endian format, @c false if native format should
6562
6427
@return New pointer into memory based on from + length of the data
6566
6431
uint param_data,
6567
6432
bool low_byte_first)
6569
DBUG_ENTER("Field_blob::unpack");
6570
DBUG_PRINT("enter", ("to: 0x%lx; from: 0x%lx;"
6571
" param_data: %u; low_byte_first: %d",
6572
(ulong) to, (ulong) from, param_data, low_byte_first));
6573
6434
uint const master_packlength=
6574
6435
param_data > 0 ? param_data & 0xFF : packlength;
6575
6436
uint32 const length= get_length(from, master_packlength, low_byte_first);
6576
DBUG_DUMP("packed", from, length + master_packlength);
6577
6437
bitmap_set_bit(table->write_set, field_index);
6578
6438
store(reinterpret_cast<const char*>(from) + master_packlength,
6579
6439
length, field_charset);
6580
DBUG_DUMP("record", to, table->s->reclength);
6581
DBUG_RETURN(from + master_packlength + length);
6440
return(from + master_packlength + length);
6584
6443
/* Keys for blobs are like keys on varchars */
6847
6705
int Field_enum::store(double nr)
6849
return Field_enum::store((longlong) nr, FALSE);
6707
return Field_enum::store((longlong) nr, false);
6853
6711
int Field_enum::store(longlong nr,
6854
6712
bool unsigned_val __attribute__((__unused__)))
6856
ASSERT_COLUMN_MARKED_FOR_WRITE;
6858
6715
if ((uint64_t) nr > typelib->count || nr == 0)
7063
6918
int Field_set::store(longlong nr,
7064
6919
bool unsigned_val __attribute__((__unused__)))
7066
ASSERT_COLUMN_MARKED_FOR_WRITE;
7068
6922
uint64_t max_nr= set_bits(uint64_t, typelib->count);
7069
6923
if ((uint64_t) nr > max_nr)
7354
7206
my_error(ER_TOO_BIG_PRECISION, MYF(0), length, fld_name,
7355
7207
DECIMAL_MAX_PRECISION);
7358
7210
if (length < decimals)
7360
7212
my_error(ER_M_BIGGER_THAN_D, MYF(0), fld_name);
7364
7216
my_decimal_precision_to_length(length, decimals,
7575
7427
ER_TOO_BIG_DISPLAYWIDTH,
7577
7429
fld_name, max_field_charlength); /* purecov: inspected */
7580
7432
fld_type_modifier&= AUTO_INCREMENT_FLAG;
7581
7433
if ((~allowed_type_modifier) & fld_type_modifier)
7583
7435
my_error(ER_WRONG_FIELD_SPEC, MYF(0), fld_name);
7587
DBUG_RETURN(FALSE); /* success */
7439
return(false); /* success */