mirror of
https://github.com/MariaDB/server.git
synced 2025-01-18 04:53:01 +01:00
Merge spetrunia@bk-internal.mysql.com:/home/bk/mysql-4.1
into mysql.com:/home/psergey/mysql-4.1-bug14139
This commit is contained in:
commit
f220d87476
5 changed files with 41 additions and 2 deletions
|
@ -621,3 +621,14 @@ create table if not exists t1 (a int);
|
|||
Warnings:
|
||||
Note 1050 Table 't1' already exists
|
||||
drop table t1;
|
||||
create table t1 (
|
||||
a varchar(112) charset utf8 collate utf8_bin not null,
|
||||
primary key (a)
|
||||
) select 'test' as a ;
|
||||
show create table t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`a` varchar(112) character set utf8 collate utf8_bin NOT NULL default '',
|
||||
PRIMARY KEY (`a`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
drop table t1;
|
||||
|
|
|
@ -526,4 +526,12 @@ create table t1 (a int);
|
|||
create table if not exists t1 (a int);
|
||||
drop table t1;
|
||||
|
||||
# BUG#14139
|
||||
create table t1 (
|
||||
a varchar(112) charset utf8 collate utf8_bin not null,
|
||||
primary key (a)
|
||||
) select 'test' as a ;
|
||||
show create table t1;
|
||||
drop table t1;
|
||||
|
||||
# End of 4.1 tests
|
||||
|
|
12
sql/field.cc
12
sql/field.cc
|
@ -6511,8 +6511,20 @@ bool Field_num::eq_def(Field *field)
|
|||
** Handling of field and create_field
|
||||
*****************************************************************************/
|
||||
|
||||
/*
|
||||
Convert create_field::length from number of characters to number of bytes
|
||||
|
||||
SYNOPSIS
|
||||
create_field::create_length_to_internal_length()
|
||||
|
||||
DESCRIPTION
|
||||
Convert create_field::length from number of characters to number of bytes,
|
||||
save original value in chars_length.
|
||||
*/
|
||||
|
||||
void create_field::create_length_to_internal_length(void)
|
||||
{
|
||||
chars_length= length;
|
||||
switch (sql_type) {
|
||||
case MYSQL_TYPE_TINY_BLOB:
|
||||
case MYSQL_TYPE_MEDIUM_BLOB:
|
||||
|
|
|
@ -1180,7 +1180,15 @@ public:
|
|||
LEX_STRING comment; // Comment for field
|
||||
Item *def; // Default value
|
||||
enum enum_field_types sql_type;
|
||||
/*
|
||||
At various stages in execution this can be length of field in bytes or
|
||||
max number of characters.
|
||||
*/
|
||||
uint32 length;
|
||||
/*
|
||||
The value of 'length' before a call to create_length_to_internal_length
|
||||
*/
|
||||
uint32 chars_length;
|
||||
uint decimals,flags,pack_length;
|
||||
Field::utype unireg_check;
|
||||
TYPELIB *interval; // Which interval to use
|
||||
|
|
|
@ -643,8 +643,8 @@ int mysql_prepare_table(THD *thd, HA_CREATE_INFO *create_info,
|
|||
sql_field->charset= (dup_field->charset ?
|
||||
dup_field->charset :
|
||||
create_info->default_table_charset);
|
||||
sql_field->length= dup_field->length;
|
||||
sql_field->pack_length= dup_field->pack_length;
|
||||
sql_field->length= dup_field->chars_length;
|
||||
sql_field->pack_length= dup_field->pack_length;
|
||||
sql_field->create_length_to_internal_length();
|
||||
sql_field->decimals= dup_field->decimals;
|
||||
sql_field->flags= dup_field->flags;
|
||||
|
|
Loading…
Reference in a new issue