Commit 09a4d0c7 authored by sergefp@mysql.com's avatar sergefp@mysql.com

4.1->5.0 merge

parents 3e76aa38 f220d874
...@@ -118,15 +118,12 @@ extern "C" { ...@@ -118,15 +118,12 @@ extern "C" {
/* do not use the extended time in LibC sys\stat.h */ /* do not use the extended time in LibC sys\stat.h */
#define _POSIX_SOURCE #define _POSIX_SOURCE
/* Kernel call on NetWare that will only yield if our time slice is up */
void kYieldIfTimeSliceUp(void);
/* Some macros for portability */ /* Some macros for portability */
#define set_timespec(ABSTIME,SEC) { (ABSTIME).tv_sec=time(NULL)+(SEC); (ABSTIME).tv_nsec=0; } #define set_timespec(ABSTIME,SEC) { (ABSTIME).tv_sec=time(NULL)+(SEC); (ABSTIME).tv_nsec=0; }
/* extra protection against CPU Hogs on NetWare */ /* extra protection against CPU Hogs on NetWare */
#define NETWARE_YIELD kYieldIfTimeSliceUp() #define NETWARE_YIELD pthread_yield()
/* Screen mode for help texts */ /* Screen mode for help texts */
#define NETWARE_SET_SCREEN_MODE(A) setscreenmode(A) #define NETWARE_SET_SCREEN_MODE(A) setscreenmode(A)
......
...@@ -641,3 +641,14 @@ create table if not exists t1 (a int); ...@@ -641,3 +641,14 @@ create table if not exists t1 (a int);
Warnings: Warnings:
Note 1050 Table 't1' already exists Note 1050 Table 't1' already exists
drop table t1; 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;
...@@ -545,4 +545,12 @@ create table t1 (a int); ...@@ -545,4 +545,12 @@ create table t1 (a int);
create table if not exists t1 (a int); create table if not exists t1 (a int);
drop table t1; 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 # End of 4.1 tests
...@@ -8186,8 +8186,20 @@ void Field_bit_as_char::sql_type(String &res) const ...@@ -8186,8 +8186,20 @@ void Field_bit_as_char::sql_type(String &res) const
Handling of field and create_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) void create_field::create_length_to_internal_length(void)
{ {
chars_length= length;
switch (sql_type) { switch (sql_type) {
case MYSQL_TYPE_TINY_BLOB: case MYSQL_TYPE_TINY_BLOB:
case MYSQL_TYPE_MEDIUM_BLOB: case MYSQL_TYPE_MEDIUM_BLOB:
......
...@@ -1368,6 +1368,11 @@ public: ...@@ -1368,6 +1368,11 @@ public:
LEX_STRING comment; // Comment for field LEX_STRING comment; // Comment for field
Item *def; // Default value Item *def; // Default value
enum enum_field_types sql_type; enum enum_field_types sql_type;
/*
At various stages in execution this can be length of field in bytes or
max number of characters.
*/
ulong length;
ulong length; ulong length;
uint decimals, flags, pack_length, key_length; uint decimals, flags, pack_length, key_length;
Field::utype unireg_check; Field::utype unireg_check;
......
...@@ -839,7 +839,7 @@ static int mysql_prepare_table(THD *thd, HA_CREATE_INFO *create_info, ...@@ -839,7 +839,7 @@ static int mysql_prepare_table(THD *thd, HA_CREATE_INFO *create_info,
sql_field->charset= (dup_field->charset ? sql_field->charset= (dup_field->charset ?
dup_field->charset : dup_field->charset :
create_info->default_table_charset); create_info->default_table_charset);
sql_field->length= dup_field->length; sql_field->length= dup_field->chars_length;
sql_field->pack_length= dup_field->pack_length; sql_field->pack_length= dup_field->pack_length;
sql_field->key_length= dup_field->key_length; sql_field->key_length= dup_field->key_length;
sql_field->create_length_to_internal_length(); sql_field->create_length_to_internal_length();
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment