mirror of
https://github.com/MariaDB/server.git
synced 2025-08-01 03:47:19 +03:00
Merge rkalimullin@bk-internal.mysql.com:/home/bk/mysql-5.0
into ram-book.(none):/home/ram/work/5.0 BitKeeper/etc/logging_ok: auto-union
This commit is contained in:
@ -219,6 +219,7 @@ ram@deer.(none)
|
|||||||
ram@gw.mysql.r18.ru
|
ram@gw.mysql.r18.ru
|
||||||
ram@gw.udmsearch.izhnet.ru
|
ram@gw.udmsearch.izhnet.ru
|
||||||
ram@mysql.r18.ru
|
ram@mysql.r18.ru
|
||||||
|
ram@ram-book.(none)
|
||||||
ram@ram.(none)
|
ram@ram.(none)
|
||||||
ramil@mysql.com
|
ramil@mysql.com
|
||||||
ranger@regul.home.lan
|
ranger@regul.home.lan
|
||||||
|
@ -72,10 +72,11 @@ typedef struct st_HA_KEYSEG /* Key-portion */
|
|||||||
|
|
||||||
#define set_rec_bits(bits, bit_ptr, bit_ofs, bit_len) \
|
#define set_rec_bits(bits, bit_ptr, bit_ofs, bit_len) \
|
||||||
{ \
|
{ \
|
||||||
(bit_ptr)[0]= ((bit_ptr)[0] & ((1 << (bit_ofs)) - 1)) | \
|
(bit_ptr)[0]= ((bit_ptr)[0] & ~(((1 << (bit_len)) - 1) << (bit_ofs))) | \
|
||||||
((bits) << (bit_ofs)); \
|
((bits) << (bit_ofs)); \
|
||||||
if ((bit_ofs) + (bit_len) > 8) \
|
if ((bit_ofs) + (bit_len) > 8) \
|
||||||
(bit_ptr)[1]= ((bits) & ((1 << (bit_len)) - 1)) >> (8 - (bit_ofs)); \
|
(bit_ptr)[1]= ((bit_ptr)[1] & ~((1 << ((bit_len) - 8 + (bit_ofs))) - 1)) | \
|
||||||
|
((bits) >> (8 - (bit_ofs))); \
|
||||||
}
|
}
|
||||||
|
|
||||||
#define clr_rec_bits(bit_ptr, bit_ofs, bit_len) \
|
#define clr_rec_bits(bit_ptr, bit_ofs, bit_len) \
|
||||||
|
@ -437,3 +437,24 @@ a+0 b+0
|
|||||||
2303 2
|
2303 2
|
||||||
12345 4
|
12345 4
|
||||||
drop table t1, t2;
|
drop table t1, t2;
|
||||||
|
create table t1 (a int, b time, c tinyint, d bool, e char(10), f bit(1),
|
||||||
|
g bit(1) NOT NULL default 1, h char(1) default 'a');
|
||||||
|
insert into t1 set a=1;
|
||||||
|
select hex(g), h from t1;
|
||||||
|
hex(g) h
|
||||||
|
1 a
|
||||||
|
drop table t1;
|
||||||
|
create table t1 (a int, b time, c tinyint, d bool, e char(10), f bit(1),
|
||||||
|
g bit(1) NOT NULL default 1);
|
||||||
|
insert into t1 set a=1;
|
||||||
|
select hex(g) from t1;
|
||||||
|
hex(g)
|
||||||
|
1
|
||||||
|
drop table t1;
|
||||||
|
create table t1 (a int, b time, c tinyint, d bool, e char(10), f bit(1),
|
||||||
|
h char(1) default 'a') engine=myisam;
|
||||||
|
insert into t1 set a=1;
|
||||||
|
select h from t1;
|
||||||
|
h
|
||||||
|
a
|
||||||
|
drop table t1;
|
||||||
|
@ -140,3 +140,25 @@ drop table t1;
|
|||||||
create table t1 select * from t2;
|
create table t1 select * from t2;
|
||||||
select a+0, b+0 from t1;
|
select a+0, b+0 from t1;
|
||||||
drop table t1, t2;
|
drop table t1, t2;
|
||||||
|
|
||||||
|
#
|
||||||
|
# Bug #10179: problem with NULLs and default values
|
||||||
|
#
|
||||||
|
|
||||||
|
create table t1 (a int, b time, c tinyint, d bool, e char(10), f bit(1),
|
||||||
|
g bit(1) NOT NULL default 1, h char(1) default 'a');
|
||||||
|
insert into t1 set a=1;
|
||||||
|
select hex(g), h from t1;
|
||||||
|
drop table t1;
|
||||||
|
|
||||||
|
create table t1 (a int, b time, c tinyint, d bool, e char(10), f bit(1),
|
||||||
|
g bit(1) NOT NULL default 1);
|
||||||
|
insert into t1 set a=1;
|
||||||
|
select hex(g) from t1;
|
||||||
|
drop table t1;
|
||||||
|
|
||||||
|
create table t1 (a int, b time, c tinyint, d bool, e char(10), f bit(1),
|
||||||
|
h char(1) default 'a') engine=myisam;
|
||||||
|
insert into t1 set a=1;
|
||||||
|
select h from t1;
|
||||||
|
drop table t1;
|
||||||
|
@ -197,12 +197,6 @@ void key_restore(byte *to_record, byte *from_key, KEY *key_info,
|
|||||||
(key_part->null_bit == 128),
|
(key_part->null_bit == 128),
|
||||||
field->bit_ofs, field->bit_len);
|
field->bit_ofs, field->bit_len);
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
|
||||||
clr_rec_bits(to_record + key_part->null_offset +
|
|
||||||
(key_part->null_bit == 128),
|
|
||||||
field->bit_ofs, field->bit_len);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
if (key_part->key_part_flag & HA_BLOB_PART)
|
if (key_part->key_part_flag & HA_BLOB_PART)
|
||||||
{
|
{
|
||||||
|
@ -647,7 +647,7 @@ static bool make_empty_rec(THD *thd, File file,enum db_type table_type,
|
|||||||
{
|
{
|
||||||
int error;
|
int error;
|
||||||
Field::utype type;
|
Field::utype type;
|
||||||
uint firstpos,null_count,null_length;
|
uint null_count;
|
||||||
uchar *buff,*null_pos;
|
uchar *buff,*null_pos;
|
||||||
TABLE table;
|
TABLE table;
|
||||||
create_field *field;
|
create_field *field;
|
||||||
@ -671,15 +671,14 @@ static bool make_empty_rec(THD *thd, File file,enum db_type table_type,
|
|||||||
table.s->db_low_byte_first= handler->low_byte_first();
|
table.s->db_low_byte_first= handler->low_byte_first();
|
||||||
table.s->blob_ptr_size= portable_sizeof_char_ptr;
|
table.s->blob_ptr_size= portable_sizeof_char_ptr;
|
||||||
|
|
||||||
firstpos=reclength;
|
|
||||||
null_count=0;
|
null_count=0;
|
||||||
if (!(table_options & HA_OPTION_PACK_RECORD))
|
if (!(table_options & HA_OPTION_PACK_RECORD))
|
||||||
{
|
{
|
||||||
null_fields++; // Need one bit for delete mark
|
null_fields++; // Need one bit for delete mark
|
||||||
null_count++;
|
null_count++;
|
||||||
|
*buff|= 1;
|
||||||
}
|
}
|
||||||
bfill(buff,(null_length=(null_fields+7)/8),255);
|
null_pos= buff;
|
||||||
null_pos= buff + null_count / 8;
|
|
||||||
|
|
||||||
List_iterator<create_field> it(create_fields);
|
List_iterator<create_field> it(create_fields);
|
||||||
thd->count_cuted_fields= CHECK_FIELD_WARN; // To find wrong default values
|
thd->count_cuted_fields= CHECK_FIELD_WARN; // To find wrong default values
|
||||||
@ -689,7 +688,7 @@ static bool make_empty_rec(THD *thd, File file,enum db_type table_type,
|
|||||||
regfield don't have to be deleted as it's allocated with sql_alloc()
|
regfield don't have to be deleted as it's allocated with sql_alloc()
|
||||||
*/
|
*/
|
||||||
Field *regfield=make_field((char*) buff+field->offset,field->length,
|
Field *regfield=make_field((char*) buff+field->offset,field->length,
|
||||||
null_pos,
|
null_pos + null_count / 8,
|
||||||
null_count & 7,
|
null_count & 7,
|
||||||
field->pack_flag,
|
field->pack_flag,
|
||||||
field->sql_type,
|
field->sql_type,
|
||||||
@ -703,11 +702,13 @@ static bool make_empty_rec(THD *thd, File file,enum db_type table_type,
|
|||||||
goto err; // End of memory
|
goto err; // End of memory
|
||||||
|
|
||||||
if (!(field->flags & NOT_NULL_FLAG))
|
if (!(field->flags & NOT_NULL_FLAG))
|
||||||
|
{
|
||||||
|
*regfield->null_ptr|= regfield->null_bit;
|
||||||
null_count++;
|
null_count++;
|
||||||
|
}
|
||||||
|
|
||||||
if ((uint) field->offset < firstpos &&
|
if (field->sql_type == FIELD_TYPE_BIT && !f_bit_as_char(field->pack_flag))
|
||||||
regfield->type() != FIELD_TYPE_NULL)
|
null_count+= field->length & 7;
|
||||||
firstpos= field->offset;
|
|
||||||
|
|
||||||
type= (Field::utype) MTYP_TYPENR(field->unireg_check);
|
type= (Field::utype) MTYP_TYPENR(field->unireg_check);
|
||||||
|
|
||||||
@ -737,7 +738,9 @@ static bool make_empty_rec(THD *thd, File file,enum db_type table_type,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Fill not used startpos */
|
/* Fill not used startpos */
|
||||||
bfill((byte*) buff+null_length,firstpos-null_length,255);
|
if (null_count)
|
||||||
|
*(null_pos + null_count / 8)|= ~(((uchar) 1 << (null_count & 7)) - 1);
|
||||||
|
|
||||||
error=(int) my_write(file,(byte*) buff,(uint) reclength,MYF_RW);
|
error=(int) my_write(file,(byte*) buff,(uint) reclength,MYF_RW);
|
||||||
|
|
||||||
err:
|
err:
|
||||||
|
Reference in New Issue
Block a user