List:Internals« Previous MessageNext Message »
From:mikael Date:May 25 2005 2:49pm
Subject:bk commit into 5.0 tree (mronstrom:1.1910)
View as plain text  
Below is the list of changes that have just been committed into a local
5.0 repository of mikron. When mikron does a push these changes will
be propagated to the main repository and, within 24 hours after the
push, to the public repository.
For information on how to access the public repository
see http://dev.mysql.com/doc/mysql/en/installing-source-tree.html

ChangeSet
  1.1910 05/05/25 16:48:17 mronstrom@stripped +3 -0
  Bug 10838
  A bug that caused 255 to be written into the first byte of the first
  field if the number of null fields + delete marker + bit field bits
  was a multiple of 8
  The idea is to set unused bits to zero, when the number of bits is a
  multiple of 8 there are no unused bits so the check is changed to that
  instead of whether there are null bits at all.

  sql/unireg.cc
    1.60 05/05/25 16:40:58 mikron@stripped +5 -2
    Bug 10838
    A bug that caused 255 to be written into the first byte of the first
    field if the number of null fields + delete marker + bit field bits
    was a multiple of 8
    The idea is to set unused bits to zero, when the number of bits is a
    multiple of 8 there are no unused bits so the check is changed to that
    instead of whether there are null bits at all.

  mysql-test/r/bugs.result
    1.1 05/05/25 14:26:56 mronstrom@stripped +138 -0

  mysql-test/r/bugs.result
    1.0 05/05/25 14:26:56 mronstrom@stripped +0 -0
    BitKeeper file /Users/mikron/mysql-5.0/mysql-test/r/bugs.result

  mysql-test/t/bugs.test
    1.1 05/05/25 14:26:44 mronstrom@stripped +85 -0

  mysql-test/t/bugs.test
    1.0 05/05/25 14:26:44 mronstrom@stripped +0 -0
    BitKeeper file /Users/mikron/mysql-5.0/mysql-test/t/bugs.test

# This is a BitKeeper patch.  What follows are the unified diffs for the
# set of deltas contained in the patch.  The rest of the patch, the part
# that BitKeeper cares about, is below these diffs.
# User:	mronstrom
# Host:	mikael-ronstr-ms-dator.local
# Root:	/Users/mikron/mysql-5.0

--- 1.59/sql/unireg.cc	Thu May 19 14:06:45 2005
+++ 1.60/sql/unireg.cc	Wed May 25 16:40:58 2005
@@ -756,8 +756,11 @@
   }
   DBUG_ASSERT(data_offset == ((null_count + 7) / 8));
 
-  /* Fill not used startpos */
-  if (null_count)
+  /*
+    We need to set the unused bits to 1. If the number of bits is a multiple
+    of 8 there are no unused bits.
+  */
+  if (null_count & 7)
     *(null_pos + null_count / 8)|= ~(((uchar) 1 << (null_count & 7)) - 1);
 
   error=(int) my_write(file,(byte*) buff, (uint) reclength,MYF_RW);
--- New file ---
+++ mysql-test/r/bugs.result	05/05/25 14:26:56
drop table if exists t1,t2,t3,t4,t5,t6;
drop database if exists mysqltest;
CREATE TABLE t1 (a varchar(30) binary NOT NULL DEFAULT ' ',
b varchar(1) binary NOT NULL DEFAULT ' ',
c varchar(4) binary NOT NULL DEFAULT '0000',
d tinyblob NULL,
e tinyblob NULL,
f tinyblob NULL,
g tinyblob NULL,
h tinyblob NULL,
i tinyblob NULL,
j tinyblob NULL,
k tinyblob NULL,
l tinyblob NULL,
m tinyblob NULL,
n tinyblob NULL,
o tinyblob NULL,
p tinyblob NULL,
q varchar(30) binary NOT NULL DEFAULT ' ',
r varchar(30) binary NOT NULL DEFAULT ' ',
s tinyblob NULL,
t varchar(4) binary NOT NULL DEFAULT ' ',
u varchar(1) binary NOT NULL DEFAULT ' ',
v varchar(30) binary NOT NULL DEFAULT ' ',
w varchar(30) binary NOT NULL DEFAULT ' ',
x tinyblob NULL,
y varchar(5) binary NOT NULL DEFAULT ' ',
z varchar(20) binary NOT NULL DEFAULT ' ',
a1 varchar(30) binary NOT NULL DEFAULT ' ',
b1 tinyblob NULL)
ENGINE=InnoDB DEFAULT CHARACTER SET = latin1 COLLATE latin1_bin;
SHOW CREATE TABLE t1;
Table	Create Table
t1	CREATE TABLE `t1` (
  `a` varchar(30) collate latin1_bin NOT NULL default ' ',
  `b` varchar(1) collate latin1_bin NOT NULL default ' ',
  `c` varchar(4) collate latin1_bin NOT NULL default '0000',
  `d` tinyblob,
  `e` tinyblob,
  `f` tinyblob,
  `g` tinyblob,
  `h` tinyblob,
  `i` tinyblob,
  `j` tinyblob,
  `k` tinyblob,
  `l` tinyblob,
  `m` tinyblob,
  `n` tinyblob,
  `o` tinyblob,
  `p` tinyblob,
  `q` varchar(30) collate latin1_bin NOT NULL default ' ',
  `r` varchar(30) collate latin1_bin NOT NULL default ' ',
  `s` tinyblob,
  `t` varchar(4) collate latin1_bin NOT NULL default ' ',
  `u` varchar(1) collate latin1_bin NOT NULL default ' ',
  `v` varchar(30) collate latin1_bin NOT NULL default ' ',
  `w` varchar(30) collate latin1_bin NOT NULL default ' ',
  `x` tinyblob,
  `y` varchar(5) collate latin1_bin NOT NULL default ' ',
  `z` varchar(20) collate latin1_bin NOT NULL default ' ',
  `a1` varchar(30) collate latin1_bin NOT NULL default ' ',
  `b1` tinyblob
) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_bin
INSERT into t1 (b) values ('1');
SHOW WARNINGS;
Level	Code	Message
SELECT * from t1;
a	b	c	d	e	f	g	h	i	j	k	l	m	n	o	p	q	r	s	t	u	v	w	x	y	z	a1	b1
 	1	0000	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	 	 	NULL	 	 	 	 	NULL	 	 	 	NULL
CREATE TABLE t2 (a varchar(30) binary NOT NULL DEFAULT ' ',
b varchar(1) binary NOT NULL DEFAULT ' ',
c varchar(4) binary NOT NULL DEFAULT '0000',
d tinyblob NULL,
e tinyblob NULL,
f tinyblob NULL,
g tinyblob NULL,
h tinyblob NULL,
i tinyblob NULL,
j tinyblob NULL,
k tinyblob NULL,
l tinyblob NULL,
m tinyblob NULL,
n tinyblob NULL,
o tinyblob NULL,
p tinyblob NULL,
q varchar(30) binary NOT NULL DEFAULT ' ',
r varchar(30) binary NOT NULL DEFAULT ' ',
s tinyblob NULL,
t varchar(4) binary NOT NULL DEFAULT ' ',
u varchar(1) binary NOT NULL DEFAULT ' ',
v varchar(30) binary NOT NULL DEFAULT ' ',
w varchar(30) binary NOT NULL DEFAULT ' ',
x tinyblob NULL,
y varchar(5) binary NOT NULL DEFAULT ' ',
z varchar(20) binary NOT NULL DEFAULT ' ',
a1 varchar(30) binary NOT NULL DEFAULT ' ',
b1 tinyblob NULL)
ENGINE=MyISAM DEFAULT CHARACTER SET = latin1 COLLATE latin1_bin;
SHOW CREATE TABLE t2;
Table	Create Table
t2	CREATE TABLE `t2` (
  `a` varchar(30) collate latin1_bin NOT NULL default ' ',
  `b` varchar(1) collate latin1_bin NOT NULL default ' ',
  `c` varchar(4) collate latin1_bin NOT NULL default '0000',
  `d` tinyblob,
  `e` tinyblob,
  `f` tinyblob,
  `g` tinyblob,
  `h` tinyblob,
  `i` tinyblob,
  `j` tinyblob,
  `k` tinyblob,
  `l` tinyblob,
  `m` tinyblob,
  `n` tinyblob,
  `o` tinyblob,
  `p` tinyblob,
  `q` varchar(30) collate latin1_bin NOT NULL default ' ',
  `r` varchar(30) collate latin1_bin NOT NULL default ' ',
  `s` tinyblob,
  `t` varchar(4) collate latin1_bin NOT NULL default ' ',
  `u` varchar(1) collate latin1_bin NOT NULL default ' ',
  `v` varchar(30) collate latin1_bin NOT NULL default ' ',
  `w` varchar(30) collate latin1_bin NOT NULL default ' ',
  `x` tinyblob,
  `y` varchar(5) collate latin1_bin NOT NULL default ' ',
  `z` varchar(20) collate latin1_bin NOT NULL default ' ',
  `a1` varchar(30) collate latin1_bin NOT NULL default ' ',
  `b1` tinyblob
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_bin
INSERT into t2 (b) values ('1');
SHOW WARNINGS;
Level	Code	Message
SELECT * from t2;
a	b	c	d	e	f	g	h	i	j	k	l	m	n	o	p	q	r	s	t	u	v	w	x	y	z	a1	b1
 	1	0000	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	 	 	NULL	 	 	 	 	NULL	 	 	 	NULL
drop table t1;
drop table t2;

--- New file ---
+++ mysql-test/t/bugs.test	05/05/25 14:26:44
#
# test of already fixed bugs
#
--disable_warnings
drop table if exists t1,t2,t3,t4,t5,t6;
drop database if exists mysqltest;
--enable_warnings

#
# Bug 10838
# Insert causes warnings for no default values and corrupts tables
#
CREATE TABLE t1 (a varchar(30) binary NOT NULL DEFAULT ' ',
                 b varchar(1) binary NOT NULL DEFAULT ' ',
		 c varchar(4) binary NOT NULL DEFAULT '0000',
		 d tinyblob NULL,
		 e tinyblob NULL,
		 f tinyblob NULL,
		 g tinyblob NULL,
		 h tinyblob NULL,
		 i tinyblob NULL,
		 j tinyblob NULL,
		 k tinyblob NULL,
		 l tinyblob NULL,
		 m tinyblob NULL,
		 n tinyblob NULL,
		 o tinyblob NULL,
		 p tinyblob NULL,
                 q varchar(30) binary NOT NULL DEFAULT ' ',
                 r varchar(30) binary NOT NULL DEFAULT ' ',
		 s tinyblob NULL,
                 t varchar(4) binary NOT NULL DEFAULT ' ',
                 u varchar(1) binary NOT NULL DEFAULT ' ',
                 v varchar(30) binary NOT NULL DEFAULT ' ',
                 w varchar(30) binary NOT NULL DEFAULT ' ',
		 x tinyblob NULL,
                 y varchar(5) binary NOT NULL DEFAULT ' ',
                 z varchar(20) binary NOT NULL DEFAULT ' ',
                 a1 varchar(30) binary NOT NULL DEFAULT ' ',
		 b1 tinyblob NULL)
ENGINE=InnoDB DEFAULT CHARACTER SET = latin1 COLLATE latin1_bin;

SHOW CREATE TABLE t1;
INSERT into t1 (b) values ('1');
SHOW WARNINGS;
SELECT * from t1;

CREATE TABLE t2 (a varchar(30) binary NOT NULL DEFAULT ' ',
                 b varchar(1) binary NOT NULL DEFAULT ' ',
		 c varchar(4) binary NOT NULL DEFAULT '0000',
		 d tinyblob NULL,
		 e tinyblob NULL,
		 f tinyblob NULL,
		 g tinyblob NULL,
		 h tinyblob NULL,
		 i tinyblob NULL,
		 j tinyblob NULL,
		 k tinyblob NULL,
		 l tinyblob NULL,
		 m tinyblob NULL,
		 n tinyblob NULL,
		 o tinyblob NULL,
		 p tinyblob NULL,
                 q varchar(30) binary NOT NULL DEFAULT ' ',
                 r varchar(30) binary NOT NULL DEFAULT ' ',
		 s tinyblob NULL,
                 t varchar(4) binary NOT NULL DEFAULT ' ',
                 u varchar(1) binary NOT NULL DEFAULT ' ',
                 v varchar(30) binary NOT NULL DEFAULT ' ',
                 w varchar(30) binary NOT NULL DEFAULT ' ',
		 x tinyblob NULL,
                 y varchar(5) binary NOT NULL DEFAULT ' ',
                 z varchar(20) binary NOT NULL DEFAULT ' ',
                 a1 varchar(30) binary NOT NULL DEFAULT ' ',
		 b1 tinyblob NULL)
ENGINE=MyISAM DEFAULT CHARACTER SET = latin1 COLLATE latin1_bin;

SHOW CREATE TABLE t2;
INSERT into t2 (b) values ('1');
SHOW WARNINGS;
SELECT * from t2;

drop table t1;
drop table t2;


Thread
bk commit into 5.0 tree (mronstrom:1.1910)mikael25 May