mirror of
https://github.com/MariaDB/server.git
synced 2025-07-29 05:21:33 +03:00
Merge bk-internal.mysql.com:/home/bk/mysql-5.0-build
into zippy.cornsilk.net:/home/cmiller/work/mysql/mysql-5.0-build sql/item_create.cc: Auto merged sql/share/errmsg.txt: Auto merged sql/sql_yacc.yy: Auto merged
This commit is contained in:
@ -821,4 +821,152 @@ LENGTH(c) CHAR_LENGTH(c)
|
||||
65535 65535
|
||||
65535 65535
|
||||
DROP TABLE t;
|
||||
drop table if exists b15776;
|
||||
create table b15776 (data blob(2147483647));
|
||||
drop table b15776;
|
||||
create table b15776 (data blob(-1));
|
||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '-1))' at line 1
|
||||
create table b15776 (data blob(2147483648));
|
||||
drop table b15776;
|
||||
create table b15776 (data blob(4294967294));
|
||||
drop table b15776;
|
||||
create table b15776 (data blob(4294967295));
|
||||
drop table b15776;
|
||||
create table b15776 (data blob(4294967296));
|
||||
ERROR 42000: Display width out of range for column 'data' (max = 4294967295)
|
||||
CREATE TABLE b15776 (a blob(2147483647), b blob(2147483648), c blob(4294967295), a1 text(2147483647), b1 text(2147483648), c1 text(4294967295) );
|
||||
show columns from b15776;
|
||||
Field Type Null Key Default Extra
|
||||
a longblob YES NULL
|
||||
b longblob YES NULL
|
||||
c longblob YES NULL
|
||||
a1 longtext YES NULL
|
||||
b1 longtext YES NULL
|
||||
c1 longtext YES NULL
|
||||
drop table b15776;
|
||||
CREATE TABLE b15776 (a blob(4294967296));
|
||||
ERROR 42000: Display width out of range for column 'a' (max = 4294967295)
|
||||
CREATE TABLE b15776 (a text(4294967296));
|
||||
ERROR 42000: Display width out of range for column 'a' (max = 4294967295)
|
||||
CREATE TABLE b15776 (a blob(999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999));
|
||||
ERROR 42000: Display width out of range for column 'a' (max = 4294967295)
|
||||
CREATE TABLE b15776 (a text(999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999));
|
||||
ERROR 42000: Display width out of range for column 'a' (max = 4294967295)
|
||||
CREATE TABLE b15776 (a int(0));
|
||||
INSERT INTO b15776 values (NULL), (1), (42), (654);
|
||||
SELECT * from b15776 ORDER BY a;
|
||||
a
|
||||
NULL
|
||||
1
|
||||
42
|
||||
654
|
||||
DROP TABLE b15776;
|
||||
CREATE TABLE b15776 (a int(-1));
|
||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '-1))' at line 1
|
||||
CREATE TABLE b15776 (a int(255));
|
||||
DROP TABLE b15776;
|
||||
CREATE TABLE b15776 (a int(256));
|
||||
ERROR 42000: Display width out of range for column 'a' (max = 255)
|
||||
CREATE TABLE b15776 (data blob(-1));
|
||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '-1))' at line 1
|
||||
CREATE TABLE b15776 (a char(2147483647));
|
||||
ERROR 42000: Column length too big for column 'a' (max = 255); use BLOB or TEXT instead
|
||||
CREATE TABLE b15776 (a char(2147483648));
|
||||
ERROR 42000: Column length too big for column 'a' (max = 255); use BLOB or TEXT instead
|
||||
CREATE TABLE b15776 (a char(4294967295));
|
||||
ERROR 42000: Column length too big for column 'a' (max = 255); use BLOB or TEXT instead
|
||||
CREATE TABLE b15776 (a char(4294967296));
|
||||
ERROR 42000: Display width out of range for column 'a' (max = 4294967295)
|
||||
CREATE TABLE b15776 (a year(4294967295));
|
||||
INSERT INTO b15776 VALUES (42);
|
||||
SELECT * FROM b15776;
|
||||
a
|
||||
2042
|
||||
DROP TABLE b15776;
|
||||
CREATE TABLE b15776 (a year(4294967296));
|
||||
ERROR 42000: Display width out of range for column 'a' (max = 4294967295)
|
||||
CREATE TABLE b15776 (a year(0));
|
||||
DROP TABLE b15776;
|
||||
CREATE TABLE b15776 (a year(-2));
|
||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '-2))' at line 1
|
||||
CREATE TABLE b15776 (a timestamp(4294967294));
|
||||
Warnings:
|
||||
Warning 1287 'TIMESTAMP(4294967294)' is deprecated; use 'TIMESTAMP' instead
|
||||
DROP TABLE b15776;
|
||||
CREATE TABLE b15776 (a timestamp(4294967295));
|
||||
ERROR 42000: Display width out of range for column 'a' (max = 255)
|
||||
CREATE TABLE b15776 (a timestamp(4294967296));
|
||||
ERROR 42000: Display width out of range for column 'a' (max = 4294967295)
|
||||
CREATE TABLE b15776 (a timestamp(-2));
|
||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '-2))' at line 1
|
||||
CREATE TABLE b15776 (a int(999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999));
|
||||
ERROR 42000: Display width out of range for column 'a' (max = 4294967295)
|
||||
CREATE TABLE b15776 (a char(999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999));
|
||||
ERROR 42000: Display width out of range for column 'a' (max = 4294967295)
|
||||
CREATE TABLE b15776 (a year(999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999));
|
||||
ERROR 42000: Display width out of range for column 'a' (max = 4294967295)
|
||||
CREATE TABLE b15776 (a timestamp(999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999));
|
||||
ERROR 42000: Display width out of range for column 'a' (max = 4294967295)
|
||||
CREATE TABLE b15776 select cast(null as char(4294967295));
|
||||
show columns from b15776;
|
||||
Field Type Null Key Default Extra
|
||||
cast(null as char(4294967295)) char(0) YES NULL
|
||||
drop table b15776;
|
||||
CREATE TABLE b15776 select cast(null as nchar(4294967295));
|
||||
show columns from b15776;
|
||||
Field Type Null Key Default Extra
|
||||
cast(null as nchar(4294967295)) char(0) YES NULL
|
||||
drop table b15776;
|
||||
CREATE TABLE b15776 select cast(null as binary(4294967295));
|
||||
show columns from b15776;
|
||||
Field Type Null Key Default Extra
|
||||
cast(null as binary(4294967295)) binary(0) YES NULL
|
||||
drop table b15776;
|
||||
explain select cast(1 as char(4294967295));
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL No tables used
|
||||
explain select cast(1 as nchar(4294967295));
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL No tables used
|
||||
explain select cast(1 as binary(4294967295));
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL No tables used
|
||||
explain select cast(1 as char(4294967296));
|
||||
ERROR 42000: Display width out of range for column 'cast as char' (max = 4294967295)
|
||||
explain select cast(1 as nchar(4294967296));
|
||||
ERROR 42000: Display width out of range for column 'cast as char' (max = 4294967295)
|
||||
explain select cast(1 as binary(4294967296));
|
||||
ERROR 42000: Display width out of range for column 'cast as char' (max = 4294967295)
|
||||
explain select cast(1 as decimal(-1));
|
||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '-1))' at line 1
|
||||
explain select cast(1 as decimal(64, 30));
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL No tables used
|
||||
explain select cast(1 as decimal(64, 999999999999999999999999999999));
|
||||
Got one of the listed errors
|
||||
explain select cast(1 as decimal(4294967296));
|
||||
Got one of the listed errors
|
||||
explain select cast(1 as decimal(999999999999999999999999999999999999));
|
||||
Got one of the listed errors
|
||||
explain select convert(1, char(4294967295));
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL No tables used
|
||||
explain select convert(1, char(4294967296));
|
||||
ERROR 42000: Display width out of range for column 'cast as char' (max = 4294967295)
|
||||
explain select convert(1, char(999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999));
|
||||
ERROR 42000: Display width out of range for column 'cast as char' (max = 4294967295)
|
||||
explain select convert(1, nchar(4294967295));
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL No tables used
|
||||
explain select convert(1, nchar(4294967296));
|
||||
ERROR 42000: Display width out of range for column 'cast as char' (max = 4294967295)
|
||||
explain select convert(1, nchar(999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999));
|
||||
ERROR 42000: Display width out of range for column 'cast as char' (max = 4294967295)
|
||||
explain select convert(1, binary(4294967295));
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL No tables used
|
||||
explain select convert(1, binary(4294967296));
|
||||
ERROR 42000: Display width out of range for column 'cast as char' (max = 4294967295)
|
||||
explain select convert(1, binary(999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999));
|
||||
ERROR 42000: Display width out of range for column 'cast as char' (max = 4294967295)
|
||||
End of 5.0 tests
|
||||
|
@ -446,5 +446,167 @@ INSERT INTO t (c) VALUES (REPEAT('2',65536));
|
||||
INSERT INTO t (c) VALUES (REPEAT('3',65535));
|
||||
SELECT LENGTH(c), CHAR_LENGTH(c) FROM t;
|
||||
DROP TABLE t;
|
||||
# Bug#15776: 32-bit signed int used for length of blob
|
||||
# """LONGBLOB: A BLOB column with a maximum length of 4,294,967,295 or 4GB."""
|
||||
#
|
||||
# Conditions should be in this order:
|
||||
# A size is not in the allowed bounds.
|
||||
# If the type is char-ish AND size is within the max blob size:
|
||||
# raise ER_TOO_BIG_FIELDLENGTH (suggest using BLOB)
|
||||
# If size is too small:
|
||||
# raise ER_PARSE_ERROR
|
||||
# raise ER_TOO_BIG_DISPLAYWIDTH
|
||||
|
||||
# BLOB and TEXT types
|
||||
--disable_warnings
|
||||
drop table if exists b15776;
|
||||
--enable_warnings
|
||||
create table b15776 (data blob(2147483647));
|
||||
drop table b15776;
|
||||
--error ER_PARSE_ERROR
|
||||
create table b15776 (data blob(-1));
|
||||
create table b15776 (data blob(2147483648));
|
||||
drop table b15776;
|
||||
create table b15776 (data blob(4294967294));
|
||||
drop table b15776;
|
||||
create table b15776 (data blob(4294967295));
|
||||
drop table b15776;
|
||||
--error ER_TOO_BIG_DISPLAYWIDTH
|
||||
create table b15776 (data blob(4294967296));
|
||||
|
||||
CREATE TABLE b15776 (a blob(2147483647), b blob(2147483648), c blob(4294967295), a1 text(2147483647), b1 text(2147483648), c1 text(4294967295) );
|
||||
show columns from b15776;
|
||||
drop table b15776;
|
||||
|
||||
--error ER_TOO_BIG_DISPLAYWIDTH
|
||||
CREATE TABLE b15776 (a blob(4294967296));
|
||||
--error ER_TOO_BIG_DISPLAYWIDTH
|
||||
CREATE TABLE b15776 (a text(4294967296));
|
||||
--error ER_TOO_BIG_DISPLAYWIDTH
|
||||
CREATE TABLE b15776 (a blob(999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999));
|
||||
--error ER_TOO_BIG_DISPLAYWIDTH
|
||||
CREATE TABLE b15776 (a text(999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999));
|
||||
|
||||
# Int types
|
||||
# "Another extension is supported by MySQL for optionally specifying the
|
||||
# display width of integer data types in parentheses following the base keyword
|
||||
# for the type (for example, INT(4)). This optional display width is used to
|
||||
# display integer values having a width less than the width specified for the
|
||||
# column by left-padding them with spaces." § Numeric Types
|
||||
CREATE TABLE b15776 (a int(0)); # 0 is special case, means default size
|
||||
INSERT INTO b15776 values (NULL), (1), (42), (654);
|
||||
SELECT * from b15776 ORDER BY a;
|
||||
DROP TABLE b15776;
|
||||
--error ER_PARSE_ERROR
|
||||
CREATE TABLE b15776 (a int(-1));
|
||||
CREATE TABLE b15776 (a int(255));
|
||||
DROP TABLE b15776;
|
||||
--error ER_TOO_BIG_DISPLAYWIDTH
|
||||
CREATE TABLE b15776 (a int(256));
|
||||
--error ER_PARSE_ERROR
|
||||
CREATE TABLE b15776 (data blob(-1));
|
||||
|
||||
# Char types
|
||||
# Recommend BLOB
|
||||
--error ER_TOO_BIG_FIELDLENGTH
|
||||
CREATE TABLE b15776 (a char(2147483647));
|
||||
--error ER_TOO_BIG_FIELDLENGTH
|
||||
CREATE TABLE b15776 (a char(2147483648));
|
||||
--error ER_TOO_BIG_FIELDLENGTH
|
||||
CREATE TABLE b15776 (a char(4294967295));
|
||||
# Even BLOB won't hold
|
||||
--error ER_TOO_BIG_DISPLAYWIDTH
|
||||
CREATE TABLE b15776 (a char(4294967296));
|
||||
|
||||
|
||||
# Other numeric-ish types
|
||||
## For year, widths not "2" or "4" are silently rewritten to "4". But
|
||||
## When we complain about it, we say that the max is 255. We may be
|
||||
## talking about different things. It's confusing.
|
||||
CREATE TABLE b15776 (a year(4294967295));
|
||||
INSERT INTO b15776 VALUES (42);
|
||||
SELECT * FROM b15776;
|
||||
DROP TABLE b15776;
|
||||
--error ER_TOO_BIG_DISPLAYWIDTH
|
||||
CREATE TABLE b15776 (a year(4294967296));
|
||||
CREATE TABLE b15776 (a year(0)); # 0 is special case, means default size
|
||||
DROP TABLE b15776;
|
||||
--error ER_PARSE_ERROR
|
||||
CREATE TABLE b15776 (a year(-2));
|
||||
|
||||
## For timestamp, we silently rewrite widths to 14 or 19.
|
||||
CREATE TABLE b15776 (a timestamp(4294967294));
|
||||
DROP TABLE b15776;
|
||||
--error ER_TOO_BIG_DISPLAYWIDTH
|
||||
CREATE TABLE b15776 (a timestamp(4294967295));
|
||||
--error ER_TOO_BIG_DISPLAYWIDTH
|
||||
CREATE TABLE b15776 (a timestamp(4294967296));
|
||||
--error ER_PARSE_ERROR
|
||||
CREATE TABLE b15776 (a timestamp(-2));
|
||||
|
||||
|
||||
# We've already tested the case, but this should visually show that
|
||||
# widths that are too large to be interpreted cause DISPLAYWIDTH errors.
|
||||
--error ER_TOO_BIG_DISPLAYWIDTH
|
||||
CREATE TABLE b15776 (a int(999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999));
|
||||
--error ER_TOO_BIG_DISPLAYWIDTH
|
||||
CREATE TABLE b15776 (a char(999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999));
|
||||
--error ER_TOO_BIG_DISPLAYWIDTH
|
||||
CREATE TABLE b15776 (a year(999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999));
|
||||
--error ER_TOO_BIG_DISPLAYWIDTH
|
||||
CREATE TABLE b15776 (a timestamp(999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999));
|
||||
|
||||
## Do not select, too much memory needed.
|
||||
CREATE TABLE b15776 select cast(null as char(4294967295));
|
||||
show columns from b15776;
|
||||
drop table b15776;
|
||||
CREATE TABLE b15776 select cast(null as nchar(4294967295));
|
||||
show columns from b15776;
|
||||
drop table b15776;
|
||||
CREATE TABLE b15776 select cast(null as binary(4294967295));
|
||||
show columns from b15776;
|
||||
drop table b15776;
|
||||
|
||||
explain select cast(1 as char(4294967295));
|
||||
explain select cast(1 as nchar(4294967295));
|
||||
explain select cast(1 as binary(4294967295));
|
||||
|
||||
--error ER_TOO_BIG_DISPLAYWIDTH
|
||||
explain select cast(1 as char(4294967296));
|
||||
--error ER_TOO_BIG_DISPLAYWIDTH
|
||||
explain select cast(1 as nchar(4294967296));
|
||||
--error ER_TOO_BIG_DISPLAYWIDTH
|
||||
explain select cast(1 as binary(4294967296));
|
||||
|
||||
--error ER_PARSE_ERROR
|
||||
explain select cast(1 as decimal(-1));
|
||||
explain select cast(1 as decimal(64, 30));
|
||||
# It's not as important which errors are raised for these, since the
|
||||
# limit is nowhere near 2**32. We may fix these eventually to take
|
||||
# 4294967295 and still reject it because it's greater than 64 or 30,
|
||||
# but that's not a high priority and the parser needn't worry about
|
||||
# such a weird case.
|
||||
--error ER_TOO_BIG_SCALE,ER_PARSE_ERROR
|
||||
explain select cast(1 as decimal(64, 999999999999999999999999999999));
|
||||
--error ER_TOO_BIG_PRECISION,ER_PARSE_ERROR
|
||||
explain select cast(1 as decimal(4294967296));
|
||||
--error ER_TOO_BIG_PRECISION,ER_PARSE_ERROR
|
||||
explain select cast(1 as decimal(999999999999999999999999999999999999));
|
||||
|
||||
explain select convert(1, char(4294967295));
|
||||
--error ER_TOO_BIG_DISPLAYWIDTH
|
||||
explain select convert(1, char(4294967296));
|
||||
--error ER_TOO_BIG_DISPLAYWIDTH
|
||||
explain select convert(1, char(999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999));
|
||||
explain select convert(1, nchar(4294967295));
|
||||
--error ER_TOO_BIG_DISPLAYWIDTH
|
||||
explain select convert(1, nchar(4294967296));
|
||||
--error ER_TOO_BIG_DISPLAYWIDTH
|
||||
explain select convert(1, nchar(999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999));
|
||||
explain select convert(1, binary(4294967295));
|
||||
--error ER_TOO_BIG_DISPLAYWIDTH
|
||||
explain select convert(1, binary(4294967296));
|
||||
--error ER_TOO_BIG_DISPLAYWIDTH
|
||||
explain select convert(1, binary(999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999));
|
||||
|
||||
--echo End of 5.0 tests
|
||||
|
16
sql/field.cc
16
sql/field.cc
@ -8441,8 +8441,20 @@ bool create_field::init(THD *thd, char *fld_name, enum_field_types fld_type,
|
||||
(fld_type_modifier & NOT_NULL_FLAG) && fld_type != FIELD_TYPE_TIMESTAMP)
|
||||
flags|= NO_DEFAULT_VALUE_FLAG;
|
||||
|
||||
if (fld_length && !(length= (uint) atoi(fld_length)))
|
||||
fld_length= 0; /* purecov: inspected */
|
||||
if (fld_length != 0)
|
||||
{
|
||||
errno= 0;
|
||||
length= strtoul(fld_length, NULL, 10);
|
||||
if (errno != 0)
|
||||
{
|
||||
my_error(ER_TOO_BIG_DISPLAYWIDTH, MYF(0), fld_name, MAX_FIELD_BLOBLENGTH);
|
||||
DBUG_RETURN(TRUE);
|
||||
}
|
||||
|
||||
if (length == 0)
|
||||
fld_length= 0; /* purecov: inspected */
|
||||
}
|
||||
|
||||
sign_len= fld_type_modifier & UNSIGNED_FLAG ? 0 : 1;
|
||||
|
||||
switch (fld_type) {
|
||||
|
@ -464,8 +464,42 @@ Item *create_func_cast(Item *a, Cast_target cast_type,
|
||||
case ITEM_CAST_TIME: res= new Item_time_typecast(a); break;
|
||||
case ITEM_CAST_DATETIME: res= new Item_datetime_typecast(a); break;
|
||||
case ITEM_CAST_DECIMAL:
|
||||
len= c_len ? atoi(c_len) : 0;
|
||||
dec= c_dec ? atoi(c_dec) : 0;
|
||||
if (c_len == NULL)
|
||||
{
|
||||
len= 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
ulong decoded_size;
|
||||
errno= 0;
|
||||
decoded_size= strtoul(c_len, NULL, 10);
|
||||
if (errno != 0)
|
||||
{
|
||||
my_error(ER_TOO_BIG_PRECISION, MYF(0), c_len, a->name,
|
||||
DECIMAL_MAX_PRECISION);
|
||||
return NULL;
|
||||
}
|
||||
len= decoded_size;
|
||||
}
|
||||
|
||||
if (c_dec == NULL)
|
||||
{
|
||||
dec= 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
ulong decoded_size;
|
||||
errno= 0;
|
||||
decoded_size= strtoul(c_dec, NULL, 10);
|
||||
if ((errno != 0) || (decoded_size > UINT_MAX))
|
||||
{
|
||||
my_error(ER_TOO_BIG_SCALE, MYF(0), c_dec, a->name,
|
||||
DECIMAL_MAX_SCALE);
|
||||
return NULL;
|
||||
}
|
||||
dec= decoded_size;
|
||||
}
|
||||
|
||||
my_decimal_trim(&len, &dec);
|
||||
if (len < dec)
|
||||
{
|
||||
@ -486,8 +520,25 @@ Item *create_func_cast(Item *a, Cast_target cast_type,
|
||||
}
|
||||
res= new Item_decimal_typecast(a, len, dec);
|
||||
break;
|
||||
|
||||
case ITEM_CAST_CHAR:
|
||||
len= c_len ? atoi(c_len) : -1;
|
||||
if (c_len == NULL)
|
||||
{
|
||||
len= LL(-1);
|
||||
}
|
||||
else
|
||||
{
|
||||
ulong decoded_size;
|
||||
errno= 0;
|
||||
decoded_size= strtoul(c_len, NULL, 10);
|
||||
if (errno != 0)
|
||||
{
|
||||
my_error(ER_TOO_BIG_DISPLAYWIDTH, MYF(0), "cast as char", MAX_FIELD_BLOBLENGTH);
|
||||
return NULL;
|
||||
}
|
||||
len= decoded_size;
|
||||
}
|
||||
|
||||
res= new Item_char_typecast(a, len, cs ? cs :
|
||||
current_thd->variables.collation_connection);
|
||||
break;
|
||||
|
@ -1771,30 +1771,30 @@ ER_BLOB_USED_AS_KEY 42000 S1009
|
||||
swe "En BLOB '%-.64s' kan inte vara nyckel med den anv<6E>nda tabelltypen"
|
||||
ukr "BLOB <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> '%-.64s' <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Φ <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD> <20><>Ц <20><><EFBFBD><EFBFBD><EFBFBD>æ"
|
||||
ER_TOO_BIG_FIELDLENGTH 42000 S1009
|
||||
cze "P-B<><42>li<6C> velk<6C> d<>lka sloupce '%-.64s' (nejv<6A>ce %d). Pou<6F>ijte BLOB"
|
||||
dan "For stor feltl<74>ngde for kolonne '%-.64s' (maks = %d). Brug BLOB i stedet"
|
||||
nla "Te grote kolomlengte voor '%-.64s' (max = %d). Maak hiervoor gebruik van het type BLOB"
|
||||
eng "Column length too big for column '%-.64s' (max = %d); use BLOB or TEXT instead"
|
||||
jps "column '%-.64s' <20><>,<2C>m<EFBFBD>ۂ<EFBFBD><DB82><EFBFBD> column <20>̑傫<CC91><E582AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>܂<EFBFBD>. (<28>ő<EFBFBD> %d <20>܂<EFBFBD>). BLOB <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ɏg<C98E>p<EFBFBD><70><EFBFBD>Ă<EFBFBD><C482><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.",
|
||||
est "Tulba '%-.64s' pikkus on liiga pikk (maksimaalne pikkus: %d). Kasuta BLOB v<>ljat<61><74>pi"
|
||||
fre "Champ '%-.64s' trop long (max = %d). Utilisez un BLOB"
|
||||
ger "Feldl<64>nge f<>r Feld '%-.64s' zu gro<72> (maximal %d). BLOB- oder TEXT-Spaltentyp verwenden!"
|
||||
greek "<22><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> '%-.64s' (max = %d). <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD> BLOB"
|
||||
hun "A(z) '%-.64s' oszlop tul hosszu. (maximum = %d). Hasznaljon BLOB tipust inkabb."
|
||||
ita "La colonna '%-.64s' e` troppo grande (max=%d). Utilizza un BLOB."
|
||||
jpn "column '%-.64s' <20><>,<2C><><EFBFBD>ݤ<EFBFBD><DDA4><EFBFBD> column <20><><EFBFBD>礭<EFBFBD><E7A4AD><EFBFBD><EFBFBD>¿<EFBFBD><C2BF><EFBFBD><EFBFBD><EFBFBD>ޤ<EFBFBD>. (<28><><EFBFBD><EFBFBD> %d <20>ޤ<EFBFBD>). BLOB <20><EFBFBD><F2A4ABA4><EFBFBD><EFBFBD>˻<EFBFBD><CBBB>Ѥ<EFBFBD><D1A4>Ƥ<EFBFBD><C6A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>."
|
||||
kor "Į<><C4AE> '%-.64s'<27><> Į<><C4AE> <20><><EFBFBD>̰<EFBFBD> <20>ʹ<EFBFBD> <20><><EFBFBD>ϴ<EFBFBD> (<28>ִ<EFBFBD> = %d). <20><><EFBFBD>ſ<EFBFBD> BLOB<4F><42> <20><><EFBFBD><EFBFBD><EFBFBD>ϼ<EFBFBD><CFBC><EFBFBD>."
|
||||
nor "For stor n<>kkellengde for kolonne '%-.64s' (maks = %d). Bruk BLOB istedenfor"
|
||||
norwegian-ny "For stor nykkellengde for felt '%-.64s' (maks = %d). Bruk BLOB istadenfor"
|
||||
pol "Zbyt du<64>a d<>ugo?<3F> kolumny '%-.64s' (maks. = %d). W zamian u<>yj typu BLOB"
|
||||
por "Comprimento da coluna '%-.64s' grande demais (max = %d); use BLOB em seu lugar"
|
||||
rum "Lungimea coloanei '%-.64s' este prea lunga (maximum = %d). Foloseste BLOB mai bine"
|
||||
rus "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> '%-.64s' (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> = %d). <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> BLOB <20><><EFBFBD> TEXT <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"
|
||||
serbian "Previ<76>e podataka za kolonu '%-.64s' (maksimum je %d). Upotrebite BLOB polje"
|
||||
slo "Pr<50>li<6C> ve<76>k<EFBFBD> d<><64>ka pre pole '%-.64s' (maximum = %d). Pou<6F>ite BLOB"
|
||||
spa "Longitud de columna demasiado grande para la columna '%-.64s' (maximo = %d).Usar BLOB en su lugar"
|
||||
swe "F<>r stor kolumnl<6E>ngd angiven f<>r '%-.64s' (max= %d). Anv<6E>nd en BLOB inst<73>llet"
|
||||
ukr "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> '%-.64s' (max = %d). <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> BLOB"
|
||||
cze "P-B<><42>li<6C> velk<6C> d<>lka sloupce '%-.64s' (nejv<6A>ce %lu). Pou<6F>ijte BLOB"
|
||||
dan "For stor feltl<74>ngde for kolonne '%-.64s' (maks = %lu). Brug BLOB i stedet"
|
||||
nla "Te grote kolomlengte voor '%-.64s' (max = %lu). Maak hiervoor gebruik van het type BLOB"
|
||||
eng "Column length too big for column '%-.64s' (max = %lu); use BLOB or TEXT instead"
|
||||
jps "column '%-.64s' <20><>,<2C>m<EFBFBD>ۂ<EFBFBD><DB82><EFBFBD> column <20>̑傫<CC91><E582AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>܂<EFBFBD>. (<28>ő<EFBFBD> %lu <20>܂<EFBFBD>). BLOB <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ɏg<C98E>p<EFBFBD><70><EFBFBD>Ă<EFBFBD><C482><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.",
|
||||
est "Tulba '%-.64s' pikkus on liiga pikk (maksimaalne pikkus: %lu). Kasuta BLOB v<>ljat<61><74>pi"
|
||||
fre "Champ '%-.64s' trop long (max = %lu). Utilisez un BLOB"
|
||||
ger "Feldl<64>nge f<>r Feld '%-.64s' zu gro<72> (maximal %lu). BLOB- oder TEXT-Spaltentyp verwenden!"
|
||||
greek "<22><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> '%-.64s' (max = %lu). <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD> BLOB"
|
||||
hun "A(z) '%-.64s' oszlop tul hosszu. (maximum = %lu). Hasznaljon BLOB tipust inkabb."
|
||||
ita "La colonna '%-.64s' e` troppo grande (max=%lu). Utilizza un BLOB."
|
||||
jpn "column '%-.64s' <20><>,<2C><><EFBFBD>ݤ<EFBFBD><DDA4><EFBFBD> column <20><><EFBFBD>礭<EFBFBD><E7A4AD><EFBFBD><EFBFBD>¿<EFBFBD><C2BF><EFBFBD><EFBFBD><EFBFBD>ޤ<EFBFBD>. (<28><><EFBFBD><EFBFBD> %lu <20>ޤ<EFBFBD>). BLOB <20><EFBFBD><F2A4ABA4><EFBFBD><EFBFBD>˻<EFBFBD><CBBB>Ѥ<EFBFBD><D1A4>Ƥ<EFBFBD><C6A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>."
|
||||
kor "Į<><C4AE> '%-.64s'<27><> Į<><C4AE> <20><><EFBFBD>̰<EFBFBD> <20>ʹ<EFBFBD> <20><><EFBFBD>ϴ<EFBFBD> (<28>ִ<EFBFBD> = %lu). <20><><EFBFBD>ſ<EFBFBD> BLOB<4F><42> <20><><EFBFBD><EFBFBD><EFBFBD>ϼ<EFBFBD><CFBC><EFBFBD>."
|
||||
nor "For stor n<>kkellengde for kolonne '%-.64s' (maks = %lu). Bruk BLOB istedenfor"
|
||||
norwegian-ny "For stor nykkellengde for felt '%-.64s' (maks = %lu). Bruk BLOB istadenfor"
|
||||
pol "Zbyt du<64>a d<>ugo?<3F> kolumny '%-.64s' (maks. = %lu). W zamian u<>yj typu BLOB"
|
||||
por "Comprimento da coluna '%-.64s' grande demais (max = %lu); use BLOB em seu lugar"
|
||||
rum "Lungimea coloanei '%-.64s' este prea lunga (maximum = %lu). Foloseste BLOB mai bine"
|
||||
rus "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> '%-.64s' (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> = %lu). <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> BLOB <20><><EFBFBD> TEXT <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"
|
||||
serbian "Previ<76>e podataka za kolonu '%-.64s' (maksimum je %lu). Upotrebite BLOB polje"
|
||||
slo "Pr<50>li<6C> ve<76>k<EFBFBD> d<><64>ka pre pole '%-.64s' (maximum = %lu). Pou<6F>ite BLOB"
|
||||
spa "Longitud de columna demasiado grande para la columna '%-.64s' (maximo = %lu).Usar BLOB en su lugar"
|
||||
swe "F<>r stor kolumnl<6E>ngd angiven f<>r '%-.64s' (max= %lu). Anv<6E>nd en BLOB inst<73>llet"
|
||||
ukr "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> '%-.64s' (max = %lu). <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> BLOB"
|
||||
ER_WRONG_AUTO_KEY 42000 S1009
|
||||
cze "M-B<><42>ete m<>t pouze jedno AUTO pole a to mus<75> b<>t definov<6F>no jako kl<6B><6C>"
|
||||
dan "Der kan kun specificeres eet AUTO_INCREMENT-felt, og det skal v<>re indekseret"
|
||||
@ -5508,11 +5508,11 @@ ER_SP_NO_RECURSION
|
||||
eng "Recursive stored functions and triggers are not allowed."
|
||||
ger "Rekursive gespeicherte Routinen und Triggers sind nicht erlaubt"
|
||||
ER_TOO_BIG_SCALE 42000 S1009
|
||||
eng "Too big scale %d specified for column '%-.64s'. Maximum is %d."
|
||||
ger "Zu gro<72>er Skalierungsfaktor %d f<>r Feld '%-.64s' angegeben. Maximum ist %d"
|
||||
eng "Too big scale %lu specified for column '%-.64s'. Maximum is %d."
|
||||
ger "Zu gro<72>er Skalierungsfaktor %lu f<>r Feld '%-.64s' angegeben. Maximum ist %d"
|
||||
ER_TOO_BIG_PRECISION 42000 S1009
|
||||
eng "Too big precision %d specified for column '%-.64s'. Maximum is %d."
|
||||
ger "Zu gro<72>e Genauigkeit %d f<>r Feld '%-.64s' angegeben. Maximum ist %d"
|
||||
eng "Too big precision %lu specified for column '%-.64s'. Maximum is %lu."
|
||||
ger "Zu gro<72>e Genauigkeit %lu f<>r Feld '%-.64s' angegeben. Maximum ist %lu"
|
||||
ER_M_BIGGER_THAN_D 42000 S1009
|
||||
eng "For float(M,D), double(M,D) or decimal(M,D), M must be >= D (column '%-.64s')."
|
||||
ger "F<>r FLOAT(M,D), DOUBLE(M,D) oder DECIMAL(M,D) muss M >= D sein (Feld '%-.64s')"
|
||||
@ -5550,8 +5550,8 @@ ER_WARN_CANT_DROP_DEFAULT_KEYCACHE
|
||||
eng "Cannot drop default keycache"
|
||||
ger "Der vorgabem<65><6D>ige Schl<68>ssel-Cache kann nicht gel<65>scht werden"
|
||||
ER_TOO_BIG_DISPLAYWIDTH 42000 S1009
|
||||
eng "Display width out of range for column '%-.64s' (max = %d)"
|
||||
ger "Anzeigebreite au<61>erhalb des zul<75>ssigen Bereichs f<>r Spalte '%-.64s' (Maximum: %d)"
|
||||
eng "Display width out of range for column '%-.64s' (max = %lu)"
|
||||
ger "Anzeigebreite au<61>erhalb des zul<75>ssigen Bereichs f<>r Spalte '%-.64s' (Maximum: %lu)"
|
||||
ER_XAER_DUPID XAE08
|
||||
eng "XAER_DUPID: The XID already exists"
|
||||
ger "XAER_DUPID: Die XID existiert bereits"
|
||||
|
@ -1174,7 +1174,7 @@ bool my_yyoverflow(short **a, YYSTYPE **b, ulong *yystacksize);
|
||||
single_multi table_wild_list table_wild_one opt_wild
|
||||
union_clause union_list
|
||||
precision subselect_start opt_and charset
|
||||
subselect_end select_var_list select_var_list_init help opt_len
|
||||
subselect_end select_var_list select_var_list_init help opt_field_length field_length
|
||||
opt_extended_describe
|
||||
prepare prepare_src execute deallocate
|
||||
statement sp_suid
|
||||
@ -3131,45 +3131,38 @@ field_spec:
|
||||
};
|
||||
|
||||
type:
|
||||
int_type opt_len field_options { $$=$1; }
|
||||
int_type opt_field_length field_options { $$=$1; }
|
||||
| real_type opt_precision field_options { $$=$1; }
|
||||
| FLOAT_SYM float_options field_options { $$=FIELD_TYPE_FLOAT; }
|
||||
| BIT_SYM { Lex->length= (char*) "1";
|
||||
$$=FIELD_TYPE_BIT; }
|
||||
| BIT_SYM '(' NUM ')' { Lex->length= $3.str;
|
||||
$$=FIELD_TYPE_BIT; }
|
||||
| BIT_SYM field_length { $$=FIELD_TYPE_BIT; }
|
||||
| BOOL_SYM { Lex->length=(char*) "1";
|
||||
$$=FIELD_TYPE_TINY; }
|
||||
| BOOLEAN_SYM { Lex->length=(char*) "1";
|
||||
$$=FIELD_TYPE_TINY; }
|
||||
| char '(' NUM ')' opt_binary { Lex->length=$3.str;
|
||||
$$=FIELD_TYPE_STRING; }
|
||||
| char field_length opt_binary { $$=FIELD_TYPE_STRING; }
|
||||
| char opt_binary { Lex->length=(char*) "1";
|
||||
$$=FIELD_TYPE_STRING; }
|
||||
| nchar '(' NUM ')' opt_bin_mod { Lex->length=$3.str;
|
||||
$$=FIELD_TYPE_STRING;
|
||||
| nchar field_length opt_bin_mod { $$=FIELD_TYPE_STRING;
|
||||
Lex->charset=national_charset_info; }
|
||||
| nchar opt_bin_mod { Lex->length=(char*) "1";
|
||||
$$=FIELD_TYPE_STRING;
|
||||
Lex->charset=national_charset_info; }
|
||||
| BINARY '(' NUM ')' { Lex->length=$3.str;
|
||||
Lex->charset=&my_charset_bin;
|
||||
| BINARY field_length { Lex->charset=&my_charset_bin;
|
||||
$$=FIELD_TYPE_STRING; }
|
||||
| BINARY { Lex->length= (char*) "1";
|
||||
Lex->charset=&my_charset_bin;
|
||||
$$=FIELD_TYPE_STRING; }
|
||||
| varchar '(' NUM ')' opt_binary { Lex->length=$3.str;
|
||||
$$= MYSQL_TYPE_VARCHAR; }
|
||||
| nvarchar '(' NUM ')' opt_bin_mod { Lex->length=$3.str;
|
||||
$$= MYSQL_TYPE_VARCHAR;
|
||||
| varchar field_length opt_binary { $$= MYSQL_TYPE_VARCHAR; }
|
||||
| nvarchar field_length opt_bin_mod { $$= MYSQL_TYPE_VARCHAR;
|
||||
Lex->charset=national_charset_info; }
|
||||
| VARBINARY '(' NUM ')' { Lex->length=$3.str;
|
||||
Lex->charset=&my_charset_bin;
|
||||
| VARBINARY field_length { Lex->charset=&my_charset_bin;
|
||||
$$= MYSQL_TYPE_VARCHAR; }
|
||||
| YEAR_SYM opt_len field_options { $$=FIELD_TYPE_YEAR; }
|
||||
| YEAR_SYM opt_field_length field_options { $$=FIELD_TYPE_YEAR; }
|
||||
| DATE_SYM { $$=FIELD_TYPE_DATE; }
|
||||
| TIME_SYM { $$=FIELD_TYPE_TIME; }
|
||||
| TIMESTAMP opt_len
|
||||
| TIMESTAMP opt_field_length
|
||||
{
|
||||
if (YYTHD->variables.sql_mode & MODE_MAXDB)
|
||||
$$=FIELD_TYPE_DATETIME;
|
||||
@ -3185,7 +3178,7 @@ type:
|
||||
| DATETIME { $$=FIELD_TYPE_DATETIME; }
|
||||
| TINYBLOB { Lex->charset=&my_charset_bin;
|
||||
$$=FIELD_TYPE_TINY_BLOB; }
|
||||
| BLOB_SYM opt_len { Lex->charset=&my_charset_bin;
|
||||
| BLOB_SYM opt_field_length { Lex->charset=&my_charset_bin;
|
||||
$$=FIELD_TYPE_BLOB; }
|
||||
| spatial_type
|
||||
{
|
||||
@ -3207,7 +3200,7 @@ type:
|
||||
$$=FIELD_TYPE_MEDIUM_BLOB; }
|
||||
| LONG_SYM varchar opt_binary { $$=FIELD_TYPE_MEDIUM_BLOB; }
|
||||
| TINYTEXT opt_binary { $$=FIELD_TYPE_TINY_BLOB; }
|
||||
| TEXT_SYM opt_len opt_binary { $$=FIELD_TYPE_BLOB; }
|
||||
| TEXT_SYM opt_field_length opt_binary { $$=FIELD_TYPE_BLOB; }
|
||||
| MEDIUMTEXT opt_binary { $$=FIELD_TYPE_MEDIUM_BLOB; }
|
||||
| LONGTEXT opt_binary { $$=FIELD_TYPE_LONG_BLOB; }
|
||||
| DECIMAL_SYM float_options field_options
|
||||
@ -3280,7 +3273,7 @@ real_type:
|
||||
|
||||
float_options:
|
||||
/* empty */ { Lex->dec=Lex->length= (char*)0; }
|
||||
| '(' NUM ')' { Lex->length=$2.str; Lex->dec= (char*)0; }
|
||||
| field_length { Lex->dec= (char*)0; }
|
||||
| precision {};
|
||||
|
||||
precision:
|
||||
@ -3303,9 +3296,15 @@ field_option:
|
||||
| UNSIGNED { Lex->type|= UNSIGNED_FLAG;}
|
||||
| ZEROFILL { Lex->type|= UNSIGNED_FLAG | ZEROFILL_FLAG; };
|
||||
|
||||
opt_len:
|
||||
/* empty */ { Lex->length=(char*) 0; } /* use default length */
|
||||
| '(' NUM ')' { Lex->length= $2.str; };
|
||||
opt_field_length:
|
||||
/* empty */ { Lex->length=(char*) NULL; } /* use default length */
|
||||
| field_length {};
|
||||
|
||||
field_length:
|
||||
'(' LONG_NUM ')' { Lex->length= $2.str; }
|
||||
| '(' ULONGLONG_NUM ')' { Lex->length= $2.str; }
|
||||
| '(' DECIMAL_NUM ')' { Lex->length= $2.str; }
|
||||
| '(' NUM ')' { Lex->length= $2.str; };
|
||||
|
||||
opt_precision:
|
||||
/* empty */ {}
|
||||
@ -5574,9 +5573,9 @@ in_sum_expr:
|
||||
};
|
||||
|
||||
cast_type:
|
||||
BINARY opt_len { $$=ITEM_CAST_CHAR; Lex->charset= &my_charset_bin; Lex->dec= 0; }
|
||||
| CHAR_SYM opt_len opt_binary { $$=ITEM_CAST_CHAR; Lex->dec= 0; }
|
||||
| NCHAR_SYM opt_len { $$=ITEM_CAST_CHAR; Lex->charset= national_charset_info; Lex->dec=0; }
|
||||
BINARY opt_field_length { $$=ITEM_CAST_CHAR; Lex->charset= &my_charset_bin; Lex->dec= 0; }
|
||||
| CHAR_SYM opt_field_length opt_binary { $$=ITEM_CAST_CHAR; Lex->dec= 0; }
|
||||
| NCHAR_SYM opt_field_length { $$=ITEM_CAST_CHAR; Lex->charset= national_charset_info; Lex->dec=0; }
|
||||
| SIGNED_SYM { $$=ITEM_CAST_SIGNED_INT; Lex->charset= NULL; Lex->dec=Lex->length= (char*)0; }
|
||||
| SIGNED_SYM INT_SYM { $$=ITEM_CAST_SIGNED_INT; Lex->charset= NULL; Lex->dec=Lex->length= (char*)0; }
|
||||
| UNSIGNED { $$=ITEM_CAST_UNSIGNED_INT; Lex->charset= NULL; Lex->dec=Lex->length= (char*)0; }
|
||||
|
@ -60,6 +60,7 @@
|
||||
#define MAX_MBWIDTH 3 /* Max multibyte sequence */
|
||||
#define MAX_FIELD_CHARLENGTH 255
|
||||
#define MAX_FIELD_VARCHARLENGTH 65535
|
||||
#define MAX_FIELD_BLOBLENGTH UINT_MAX
|
||||
#define CONVERT_IF_BIGGER_TO_BLOB 512 /* Used for CREATE ... SELECT */
|
||||
|
||||
/* Max column width +1 */
|
||||
|
Reference in New Issue
Block a user