2003-11-15 12:30:32 +01:00
drop table if exists t1,t2,t3,t4;
2003-08-18 23:08:08 +02:00
drop database if exists mysqltest;
2003-12-10 05:31:42 +01:00
create table t1 (id int unsigned not null auto_increment, code tinyint unsigned not null, name char(20) not null, primary key (id), key (code), unique (name)) engine=innodb;
2001-10-04 23:42:25 +02:00
insert into t1 (code, name) values (1, 'Tim'), (1, 'Monty'), (2, 'David'), (2, 'Erik'), (3, 'Sasha'), (3, 'Jeremy'), (4, 'Matt');
select id, code, name from t1 order by id;
2001-01-12 15:40:27 +01:00
id code name
1 1 Tim
2 1 Monty
3 2 David
4 2 Erik
5 3 Sasha
6 3 Jeremy
7 4 Matt
2001-10-04 23:42:25 +02:00
update ignore t1 set id = 8, name = 'Sinisa' where id < 3;
select id, code, name from t1 order by id;
2001-01-12 15:40:27 +01:00
id code name
2 1 Monty
3 2 David
4 2 Erik
5 3 Sasha
6 3 Jeremy
7 4 Matt
8 1 Sinisa
2001-10-04 23:42:25 +02:00
update ignore t1 set id = id + 10, name = 'Ralph' where id < 4;
select id, code, name from t1 order by id;
2001-01-12 15:40:27 +01:00
id code name
3 2 David
4 2 Erik
5 3 Sasha
6 3 Jeremy
7 4 Matt
8 1 Sinisa
12 1 Ralph
2001-10-04 23:42:25 +02:00
drop table t1;
CREATE TABLE t1 (
id int(11) NOT NULL auto_increment,
parent_id int(11) DEFAULT '0' NOT NULL,
level tinyint(4) DEFAULT '0' NOT NULL,
PRIMARY KEY (id),
KEY parent_id (parent_id),
KEY level (level)
2003-12-10 05:31:42 +01:00
) engine=innodb;
2001-10-04 23:42:25 +02:00
INSERT INTO t1 VALUES (1,0,0),(3,1,1),(4,1,1),(8,2,2),(9,2,2),(17,3,2),(22,4,2),(24,4,2),(28,5,2),(29,5,2),(30,5,2),(31,6,2),(32,6,2),(33,6,2),(203,7,2),(202,7,2),(20,3,2),(157,0,0),(193,5,2),(40,7,2),(2,1,1),(15,2,2),(6,1,1),(34,6,2),(35,6,2),(16,3,2),(7,1,1),(36,7,2),(18,3,2),(26,5,2),(27,5,2),(183,4,2),(38,7,2),(25,5,2),(37,7,2),(21,4,2),(19,3,2),(5,1,1),(179,5,2);
update t1 set parent_id=parent_id+100;
select * from t1 where parent_id=102;
2001-01-12 15:40:27 +01:00
id parent_id level
8 102 2
9 102 2
15 102 2
2001-10-04 23:42:25 +02:00
update t1 set id=id+1000;
update t1 set id=1024 where id=1009;
2001-10-09 04:18:37 +02:00
Got one of the listed errors
2001-10-04 23:42:25 +02:00
select * from t1;
2001-01-12 15:40:27 +01:00
id parent_id level
1001 100 0
1002 101 1
1003 101 1
1004 101 1
1005 101 1
1006 101 1
1007 101 1
1008 102 2
1009 102 2
1015 102 2
1016 103 2
1017 103 2
1018 103 2
1019 103 2
1020 103 2
1021 104 2
1022 104 2
1024 104 2
1025 105 2
1026 105 2
1027 105 2
1028 105 2
1029 105 2
1030 105 2
1031 106 2
1032 106 2
1033 106 2
1034 106 2
1035 106 2
1036 107 2
1037 107 2
1038 107 2
1040 107 2
1157 100 0
1179 105 2
1183 104 2
1193 105 2
1202 107 2
1203 107 2
2001-10-04 23:42:25 +02:00
update ignore t1 set id=id+1;
select * from t1;
2001-01-12 15:40:27 +01:00
id parent_id level
1001 100 0
1002 101 1
1003 101 1
1004 101 1
1005 101 1
1006 101 1
1007 101 1
1008 102 2
1010 102 2
1015 102 2
1016 103 2
1017 103 2
1018 103 2
1019 103 2
1020 103 2
1021 104 2
1023 104 2
1024 104 2
1025 105 2
1026 105 2
1027 105 2
1028 105 2
1029 105 2
1030 105 2
1031 106 2
1032 106 2
1033 106 2
1034 106 2
1035 106 2
1036 107 2
1037 107 2
1039 107 2
1041 107 2
1158 100 0
1180 105 2
1184 104 2
1194 105 2
1202 107 2
1204 107 2
2001-10-04 23:42:25 +02:00
update ignore t1 set id=1023 where id=1010;
select * from t1 where parent_id=102;
2001-01-12 15:40:27 +01:00
id parent_id level
1008 102 2
1010 102 2
2001-03-07 13:06:39 +01:00
1015 102 2
2003-08-18 23:08:08 +02:00
explain select level from t1 where level=1;
id select_type table type possible_keys key key_len ref rows Extra
2004-09-09 05:59:26 +02:00
1 SIMPLE t1 ref level level 1 const # Using index
2003-08-18 23:08:08 +02:00
explain select level,id from t1 where level=1;
id select_type table type possible_keys key key_len ref rows Extra
2004-09-09 05:59:26 +02:00
1 SIMPLE t1 ref level level 1 const # Using index
2003-08-18 23:08:08 +02:00
explain select level,id,parent_id from t1 where level=1;
id select_type table type possible_keys key key_len ref rows Extra
2004-09-09 05:59:26 +02:00
1 SIMPLE t1 ref level level 1 const #
2001-10-04 23:42:25 +02:00
select level,id from t1 where level=1;
2001-01-12 15:40:27 +01:00
level id
1 1002
1 1003
1 1004
1 1005
1 1006
1 1007
2001-10-04 23:42:25 +02:00
select level,id,parent_id from t1 where level=1;
2001-01-12 15:40:27 +01:00
level id parent_id
1 1002 101
1 1003 101
1 1004 101
1 1005 101
1 1006 101
1 1007 101
2001-10-04 23:42:25 +02:00
optimize table t1;
2001-03-07 13:06:39 +01:00
Table Op Msg_type Msg_text
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
The main problem was that ALTER TABLE t ANALYZE/CHECK/OPTIMIZE/REPAIR
PARTITION took another code path (over mysql_alter_table instead of
mysql_admin_table) which differs in two ways:
1) alter table opens the tables in a different way than admin tables do
resulting in returning with error before it tried the command
2) alter table does not start to send any diagnostic rows to the client
which the lower admin functions continue to use -> resulting in
assertion crash
The fix:
Remapped ALTER TABLE t ANALYZE/CHECK/OPTIMIZE/REPAIR PARTITION to use
the same code path as ANALYZE/CHECK/OPTIMIZE/REPAIR TABLE t.
Adding check in mysql_admin_table to setup the partition list for
which partitions that should be used.
Partitioned tables will still not work with
REPAIR TABLE/PARTITION USE_FRM, since that requires moving partitions
to tables, REPAIR TABLE t USE_FRM, and check that the data still
fulfills the partitioning function and then move the table back to
being a partition.
NOTE: I have removed the following functions from the handler
interface:
analyze_partitions, check_partitions, optimize_partitions,
repair_partitions
Since they are not longer needed.
THIS ALTERS THE STORAGE ENGINE API
mysql-test/r/handler_innodb.result:
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
Added a note result row.
mysql-test/r/innodb.result:
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
Added a note result row.
mysql-test/r/innodb_mysql.result:
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
Added a note result row.
mysql-test/r/partition.result:
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
Updated after fixing ANALYZE/CHECK/OPTIMIZE/REPAIR partitioned
tables.
mysql-test/r/trigger-trans.result:
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
Added a note result row.
mysql-test/suite/ndb/r/ndb_partition_key.result:
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
Updated after fixing ANALYZE/CHECK/OPTIMIZE/REPAIR partitioned
tables.
mysql-test/suite/ndb/t/ndb_partition_key.test:
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
Updated after fixing ANALYZE/CHECK/OPTIMIZE/REPAIR partitioned
tables.
mysql-test/suite/parts/inc/partition_alter4.inc:
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
Updated after fixing ANALYZE/CHECK/OPTIMIZE/REPAIR partitioned
tables.
mysql-test/suite/parts/r/partition_alter4_innodb.result:
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
Updated after fixing ANALYZE/CHECK/OPTIMIZE/REPAIR partitioned
tables.
mysql-test/suite/parts/r/partition_alter4_myisam.result:
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
Updated after fixing ANALYZE/CHECK/OPTIMIZE/REPAIR partitioned
tables.
mysql-test/suite/rpl/r/rpl_failed_optimize.result:
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
Added a note result row.
mysql-test/suite/rpl/r/rpl_innodb_mixed_dml.result:
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
Added a note result row.
mysql-test/t/partition.test:
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
Updated after fixing ANALYZE/CHECK/OPTIMIZE/REPAIR partitioned
tables.
sql/ha_partition.cc:
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
Added a function for returning admin commands result rows
Updated handle_opt_partitions to handle admin commands result rows,
and some error filtering (as mysql_admin_table do).
Removed the functions analyze/check/optimize/repair_partitions
since they have no longer any use.
sql/ha_partition.h:
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
Removed analyze/check/optimize/repair_partitions since they
are no longer are needed.
sql/handler.cc:
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
Removed analyze/check/optimize/repair_partitions since they
are no longer are needed.
sql/handler.h:
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
Removed analyze/check/optimize/repair_partitions since they
are no longer are needed.
sql/mysql_priv.h:
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
Added set_part_state for reuse of code in mysql_admin_table.
(Originally fond in sql/sql_partition.cc:prep_alter_part_table)
sql/protocol.cc:
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
Added one assert and a debug print.
sql/sql_partition.cc:
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
Refactored code for setting up partition state, set_part_state,
now used in both prep_alter_part_table and
sql_table.cc:mysql_admin_table.
Removed code for handling ANALYZE/CHECK/OPTIMIZE/REPAIR partitions,
since it is now handled by mysql_admin_table.
sql/sql_table.cc:
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
Added functionality in mysql_admin_table to work with partitioned
tables.
Fixed a possible assertion bug for HA_ADMIN_TRY_ALTER
(If analyze would output a row, it fails since the row was already
started).
sql/sql_yacc.yy:
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
Remapped ALTER TABLE t ANALYZE/CHECK/OPTIMIZE/REPAIR PARTITION
to use the same code path as ANALYZE/CHECK/OPTIMIZE/REPAIR TABLE
instead of taking the ALTER TABLE path.
Added reset of alter_info for ANALYZE/CHECK/OPTIMIZE/REPAIR TABLE
since it is now used by partitioned tables.
storage/myisam/mi_check.c:
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
Changed warning message from "Found X parts Should be: Y parts"
to "Found X key parts. Should be Y", since it could be confusing
with partitioned tables.
2008-08-11 20:02:03 +02:00
test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
2003-08-18 23:08:08 +02:00
test.t1 optimize status OK
2001-10-04 23:42:25 +02:00
show keys from t1;
2002-01-02 20:29:41 +01:00
Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment
2003-03-20 20:35:03 +01:00
t1 0 PRIMARY 1 id A # NULL NULL BTREE
t1 1 parent_id 1 parent_id A # NULL NULL BTREE
t1 1 level 1 level A # NULL NULL BTREE
2001-10-04 23:42:25 +02:00
drop table t1;
CREATE TABLE t1 (
gesuchnr int(11) DEFAULT '0' NOT NULL,
benutzer_id int(11) DEFAULT '0' NOT NULL,
PRIMARY KEY (gesuchnr,benutzer_id)
2003-12-10 05:31:42 +01:00
) engine=innodb;
2001-10-04 23:42:25 +02:00
replace into t1 (gesuchnr,benutzer_id) values (2,1);
replace into t1 (gesuchnr,benutzer_id) values (1,1);
replace into t1 (gesuchnr,benutzer_id) values (1,1);
select * from t1;
2001-01-12 15:40:27 +01:00
gesuchnr benutzer_id
1 1
2 1
2001-10-04 23:42:25 +02:00
drop table t1;
2003-12-10 05:31:42 +01:00
create table t1 (a int) engine=innodb;
2001-10-04 23:42:25 +02:00
insert into t1 values (1), (2);
optimize table t1;
2001-03-07 13:06:39 +01:00
Table Op Msg_type Msg_text
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
The main problem was that ALTER TABLE t ANALYZE/CHECK/OPTIMIZE/REPAIR
PARTITION took another code path (over mysql_alter_table instead of
mysql_admin_table) which differs in two ways:
1) alter table opens the tables in a different way than admin tables do
resulting in returning with error before it tried the command
2) alter table does not start to send any diagnostic rows to the client
which the lower admin functions continue to use -> resulting in
assertion crash
The fix:
Remapped ALTER TABLE t ANALYZE/CHECK/OPTIMIZE/REPAIR PARTITION to use
the same code path as ANALYZE/CHECK/OPTIMIZE/REPAIR TABLE t.
Adding check in mysql_admin_table to setup the partition list for
which partitions that should be used.
Partitioned tables will still not work with
REPAIR TABLE/PARTITION USE_FRM, since that requires moving partitions
to tables, REPAIR TABLE t USE_FRM, and check that the data still
fulfills the partitioning function and then move the table back to
being a partition.
NOTE: I have removed the following functions from the handler
interface:
analyze_partitions, check_partitions, optimize_partitions,
repair_partitions
Since they are not longer needed.
THIS ALTERS THE STORAGE ENGINE API
mysql-test/r/handler_innodb.result:
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
Added a note result row.
mysql-test/r/innodb.result:
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
Added a note result row.
mysql-test/r/innodb_mysql.result:
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
Added a note result row.
mysql-test/r/partition.result:
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
Updated after fixing ANALYZE/CHECK/OPTIMIZE/REPAIR partitioned
tables.
mysql-test/r/trigger-trans.result:
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
Added a note result row.
mysql-test/suite/ndb/r/ndb_partition_key.result:
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
Updated after fixing ANALYZE/CHECK/OPTIMIZE/REPAIR partitioned
tables.
mysql-test/suite/ndb/t/ndb_partition_key.test:
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
Updated after fixing ANALYZE/CHECK/OPTIMIZE/REPAIR partitioned
tables.
mysql-test/suite/parts/inc/partition_alter4.inc:
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
Updated after fixing ANALYZE/CHECK/OPTIMIZE/REPAIR partitioned
tables.
mysql-test/suite/parts/r/partition_alter4_innodb.result:
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
Updated after fixing ANALYZE/CHECK/OPTIMIZE/REPAIR partitioned
tables.
mysql-test/suite/parts/r/partition_alter4_myisam.result:
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
Updated after fixing ANALYZE/CHECK/OPTIMIZE/REPAIR partitioned
tables.
mysql-test/suite/rpl/r/rpl_failed_optimize.result:
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
Added a note result row.
mysql-test/suite/rpl/r/rpl_innodb_mixed_dml.result:
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
Added a note result row.
mysql-test/t/partition.test:
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
Updated after fixing ANALYZE/CHECK/OPTIMIZE/REPAIR partitioned
tables.
sql/ha_partition.cc:
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
Added a function for returning admin commands result rows
Updated handle_opt_partitions to handle admin commands result rows,
and some error filtering (as mysql_admin_table do).
Removed the functions analyze/check/optimize/repair_partitions
since they have no longer any use.
sql/ha_partition.h:
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
Removed analyze/check/optimize/repair_partitions since they
are no longer are needed.
sql/handler.cc:
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
Removed analyze/check/optimize/repair_partitions since they
are no longer are needed.
sql/handler.h:
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
Removed analyze/check/optimize/repair_partitions since they
are no longer are needed.
sql/mysql_priv.h:
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
Added set_part_state for reuse of code in mysql_admin_table.
(Originally fond in sql/sql_partition.cc:prep_alter_part_table)
sql/protocol.cc:
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
Added one assert and a debug print.
sql/sql_partition.cc:
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
Refactored code for setting up partition state, set_part_state,
now used in both prep_alter_part_table and
sql_table.cc:mysql_admin_table.
Removed code for handling ANALYZE/CHECK/OPTIMIZE/REPAIR partitions,
since it is now handled by mysql_admin_table.
sql/sql_table.cc:
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
Added functionality in mysql_admin_table to work with partitioned
tables.
Fixed a possible assertion bug for HA_ADMIN_TRY_ALTER
(If analyze would output a row, it fails since the row was already
started).
sql/sql_yacc.yy:
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
Remapped ALTER TABLE t ANALYZE/CHECK/OPTIMIZE/REPAIR PARTITION
to use the same code path as ANALYZE/CHECK/OPTIMIZE/REPAIR TABLE
instead of taking the ALTER TABLE path.
Added reset of alter_info for ANALYZE/CHECK/OPTIMIZE/REPAIR TABLE
since it is now used by partitioned tables.
storage/myisam/mi_check.c:
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
Changed warning message from "Found X parts Should be: Y parts"
to "Found X key parts. Should be Y", since it could be confusing
with partitioned tables.
2008-08-11 20:02:03 +02:00
test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
2003-08-18 23:08:08 +02:00
test.t1 optimize status OK
2001-10-04 23:42:25 +02:00
delete from t1 where a = 1;
select * from t1;
2001-01-12 15:40:27 +01:00
a
2
2001-10-04 23:42:25 +02:00
check table t1;
2001-03-07 13:06:39 +01:00
Table Op Msg_type Msg_text
manual.texi website address change
row0sel.c CHECK TABLE now also for InnoDB, a join speed optimization
trx0trx.c CHECK TABLE now also for InnoDB, a join speed optimization
rem0cmp.c CHECK TABLE now also for InnoDB, a join speed optimization
row0mysql.c CHECK TABLE now also for InnoDB, a join speed optimization
page0page.c CHECK TABLE now also for InnoDB, a join speed optimization
row0mysql.h CHECK TABLE now also for InnoDB, a join speed optimization
trx0trx.h CHECK TABLE now also for InnoDB, a join speed optimization
btr0btr.h CHECK TABLE now also for InnoDB, a join speed optimization
btr0cur.h CHECK TABLE now also for InnoDB, a join speed optimization
btr0pcur.h CHECK TABLE now also for InnoDB, a join speed optimization
btr0pcur.ic CHECK TABLE now also for InnoDB, a join speed optimization
btr0btr.c CHECK TABLE now also for InnoDB, a join speed optimization
btr0cur.c CHECK TABLE now also for InnoDB, a join speed optimization
btr0sea.c CHECK TABLE now also for InnoDB, a join speed optimization
innodb.result CHECK TABLE now also for InnoDB, a join speed optimization
ha_innobase.cc CHECK TABLE now also for InnoDB, a join speed optimization
ha_innobase.h CHECK TABLE now also for InnoDB, a join speed optimization
sql/ha_innobase.cc:
CHECK TABLE now also for InnoDB, a join speed optimization
sql/ha_innobase.h:
CHECK TABLE now also for InnoDB, a join speed optimization
mysql-test/r/innodb.result:
CHECK TABLE now also for InnoDB, a join speed optimization
innobase/btr/btr0btr.c:
CHECK TABLE now also for InnoDB, a join speed optimization
innobase/btr/btr0cur.c:
CHECK TABLE now also for InnoDB, a join speed optimization
innobase/btr/btr0sea.c:
CHECK TABLE now also for InnoDB, a join speed optimization
innobase/include/btr0btr.h:
CHECK TABLE now also for InnoDB, a join speed optimization
innobase/include/btr0cur.h:
CHECK TABLE now also for InnoDB, a join speed optimization
innobase/include/btr0pcur.h:
CHECK TABLE now also for InnoDB, a join speed optimization
innobase/include/btr0pcur.ic:
CHECK TABLE now also for InnoDB, a join speed optimization
innobase/include/row0mysql.h:
CHECK TABLE now also for InnoDB, a join speed optimization
innobase/include/trx0trx.h:
CHECK TABLE now also for InnoDB, a join speed optimization
innobase/page/page0page.c:
CHECK TABLE now also for InnoDB, a join speed optimization
innobase/rem/rem0cmp.c:
CHECK TABLE now also for InnoDB, a join speed optimization
innobase/row/row0mysql.c:
CHECK TABLE now also for InnoDB, a join speed optimization
innobase/row/row0sel.c:
CHECK TABLE now also for InnoDB, a join speed optimization
innobase/trx/trx0trx.c:
CHECK TABLE now also for InnoDB, a join speed optimization
Docs/manual.texi:
website address change
2001-06-03 21:58:03 +02:00
test.t1 check status OK
2001-10-04 23:42:25 +02:00
drop table t1;
2003-12-10 05:31:42 +01:00
create table t1 (a int,b varchar(20)) engine=innodb;
2001-10-04 23:42:25 +02:00
insert into t1 values (1,""), (2,"testing");
delete from t1 where a = 1;
select * from t1;
2001-01-12 15:40:27 +01:00
a b
2001-03-07 13:06:39 +01:00
2 testing
2001-10-04 23:42:25 +02:00
create index skr on t1 (a);
insert into t1 values (3,""), (4,"testing");
analyze table t1;
2001-03-07 13:06:39 +01:00
Table Op Msg_type Msg_text
2003-04-25 14:42:01 +02:00
test.t1 analyze status OK
2001-10-04 23:42:25 +02:00
show keys from t1;
2002-01-02 20:29:41 +01:00
Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment
2003-08-18 23:08:08 +02:00
t1 1 skr 1 a A # NULL NULL YES BTREE
2001-10-04 23:42:25 +02:00
drop table t1;
2003-12-10 05:31:42 +01:00
create table t1 (a int,b varchar(20),key(a)) engine=innodb;
2001-10-04 23:42:25 +02:00
insert into t1 values (1,""), (2,"testing");
select * from t1 where a = 1;
2001-03-07 13:06:39 +01:00
a b
1
2001-10-04 23:42:25 +02:00
drop table t1;
2003-12-10 05:31:42 +01:00
create table t1 (n int not null primary key) engine=innodb;
2001-10-04 23:42:25 +02:00
set autocommit=0;
insert into t1 values (4);
rollback;
select n, "after rollback" from t1;
2001-01-12 15:40:27 +01:00
n after rollback
2001-10-04 23:42:25 +02:00
insert into t1 values (4);
commit;
select n, "after commit" from t1;
2001-01-12 15:40:27 +01:00
n after commit
4 after commit
2001-10-04 23:42:25 +02:00
commit;
insert into t1 values (5);
insert into t1 values (4);
2006-04-14 17:39:36 +02:00
ERROR 23000: Duplicate entry '4' for key 'PRIMARY'
2001-10-04 23:42:25 +02:00
commit;
select n, "after commit" from t1;
2001-01-12 15:40:27 +01:00
n after commit
4 after commit
5 after commit
2001-10-04 23:42:25 +02:00
set autocommit=1;
insert into t1 values (6);
insert into t1 values (4);
2006-04-14 17:39:36 +02:00
ERROR 23000: Duplicate entry '4' for key 'PRIMARY'
2001-10-04 23:42:25 +02:00
select n from t1;
2001-01-12 15:40:27 +01:00
n
4
5
6
2005-02-01 20:48:05 +01:00
set autocommit=0;
begin;
savepoint `my_savepoint`;
insert into t1 values (7);
savepoint `savept2`;
insert into t1 values (3);
select n from t1;
n
3
4
5
6
7
2005-03-11 21:10:41 +01:00
savepoint savept3;
rollback to savepoint savept2;
rollback to savepoint savept3;
ERROR 42000: SAVEPOINT savept3 does not exist
rollback to savepoint savept2;
2005-02-01 20:48:05 +01:00
release savepoint `my_savepoint`;
select n from t1;
n
4
5
6
7
rollback to savepoint `my_savepoint`;
2005-02-16 17:34:02 +01:00
ERROR 42000: SAVEPOINT my_savepoint does not exist
2005-03-11 21:10:41 +01:00
rollback to savepoint savept2;
ERROR 42000: SAVEPOINT savept2 does not exist
2005-02-23 14:55:16 +01:00
insert into t1 values (8);
savepoint sv;
commit;
savepoint sv;
2005-02-01 20:48:05 +01:00
set autocommit=1;
2001-10-04 23:42:25 +02:00
rollback;
drop table t1;
2003-12-10 05:31:42 +01:00
create table t1 (n int not null primary key) engine=innodb;
2003-08-28 15:09:00 +02:00
start transaction;
insert into t1 values (4);
flush tables with read lock;
commit;
unlock tables;
commit;
select * from t1;
n
4
drop table t1;
2003-12-10 05:31:42 +01:00
create table t1 ( id int NOT NULL PRIMARY KEY, nom varchar(64)) engine=innodb;
2001-10-04 23:42:25 +02:00
begin;
insert into t1 values(1,'hamdouni');
select id as afterbegin_id,nom as afterbegin_nom from t1;
2001-01-12 15:40:27 +01:00
afterbegin_id afterbegin_nom
1 hamdouni
2001-10-04 23:42:25 +02:00
rollback;
select id as afterrollback_id,nom as afterrollback_nom from t1;
2001-01-12 15:40:27 +01:00
afterrollback_id afterrollback_nom
2001-10-04 23:42:25 +02:00
set autocommit=0;
insert into t1 values(2,'mysql');
select id as afterautocommit0_id,nom as afterautocommit0_nom from t1;
2001-01-12 15:40:27 +01:00
afterautocommit0_id afterautocommit0_nom
2 mysql
2001-10-04 23:42:25 +02:00
rollback;
select id as afterrollback_id,nom as afterrollback_nom from t1;
2001-01-12 15:40:27 +01:00
afterrollback_id afterrollback_nom
2001-10-04 23:42:25 +02:00
set autocommit=1;
drop table t1;
2003-12-10 05:31:42 +01:00
CREATE TABLE t1 (id char(8) not null primary key, val int not null) engine=innodb;
2001-10-04 23:42:25 +02:00
insert into t1 values ('pippo', 12);
insert into t1 values ('pippo', 12);
2006-04-14 17:39:36 +02:00
ERROR 23000: Duplicate entry 'pippo' for key 'PRIMARY'
2001-10-04 23:42:25 +02:00
delete from t1;
delete from t1 where id = 'pippo';
select * from t1;
2001-01-12 15:40:27 +01:00
id val
2001-10-04 23:42:25 +02:00
insert into t1 values ('pippo', 12);
set autocommit=0;
delete from t1;
rollback;
select * from t1;
2001-01-12 15:40:27 +01:00
id val
pippo 12
2001-10-04 23:42:25 +02:00
delete from t1;
commit;
select * from t1;
2001-01-12 15:40:27 +01:00
id val
2001-10-04 23:42:25 +02:00
drop table t1;
2003-12-10 05:31:42 +01:00
create table t1 (a integer) engine=innodb;
2003-02-06 15:55:59 +01:00
start transaction;
2001-10-04 23:42:25 +02:00
rename table t1 to t2;
2003-12-10 05:31:42 +01:00
create table t1 (b integer) engine=innodb;
2001-10-04 23:42:25 +02:00
insert into t1 values (1);
rollback;
drop table t1;
rename table t2 to t1;
drop table t1;
set autocommit=1;
2003-12-10 05:31:42 +01:00
CREATE TABLE t1 (ID INTEGER NOT NULL PRIMARY KEY, NAME VARCHAR(64)) ENGINE=innodb;
2001-10-04 23:42:25 +02:00
INSERT INTO t1 VALUES (1, 'Jochen');
select * from t1;
2001-01-12 15:40:27 +01:00
ID NAME
1 Jochen
2001-10-04 23:42:25 +02:00
drop table t1;
2003-12-10 05:31:42 +01:00
CREATE TABLE t1 ( _userid VARCHAR(60) NOT NULL PRIMARY KEY) ENGINE=innodb;
2001-10-04 23:42:25 +02:00
set autocommit=0;
INSERT INTO t1 SET _userid='marc@anyware.co.uk';
COMMIT;
SELECT * FROM t1;
2001-01-12 15:40:27 +01:00
_userid
marc@anyware.co.uk
2001-10-04 23:42:25 +02:00
SELECT _userid FROM t1 WHERE _userid='marc@anyware.co.uk';
2001-01-12 15:40:27 +01:00
_userid
marc@anyware.co.uk
2001-10-04 23:42:25 +02:00
drop table t1;
set autocommit=1;
CREATE TABLE t1 (
user_id int(10) DEFAULT '0' NOT NULL,
name varchar(100),
phone varchar(100),
ref_email varchar(100) DEFAULT '' NOT NULL,
detail varchar(200),
PRIMARY KEY (user_id,ref_email)
2003-12-10 05:31:42 +01:00
)engine=innodb;
2001-10-04 23:42:25 +02:00
INSERT INTO t1 VALUES (10292,'sanjeev','29153373','sansh777@hotmail.com','xxx'),(10292,'shirish','2333604','shirish@yahoo.com','ddsds'),(10292,'sonali','323232','sonali@bolly.com','filmstar');
select * from t1 where user_id=10292;
2001-01-12 15:40:27 +01:00
user_id name phone ref_email detail
10292 sanjeev 29153373 sansh777@hotmail.com xxx
10292 shirish 2333604 shirish@yahoo.com ddsds
10292 sonali 323232 sonali@bolly.com filmstar
2001-10-04 23:42:25 +02:00
INSERT INTO t1 VALUES (10291,'sanjeev','29153373','sansh777@hotmail.com','xxx'),(10293,'shirish','2333604','shirish@yahoo.com','ddsds');
select * from t1 where user_id=10292;
2001-01-12 15:40:27 +01:00
user_id name phone ref_email detail
10292 sanjeev 29153373 sansh777@hotmail.com xxx
10292 shirish 2333604 shirish@yahoo.com ddsds
10292 sonali 323232 sonali@bolly.com filmstar
2001-10-04 23:42:25 +02:00
select * from t1 where user_id>=10292;
2001-01-12 15:40:27 +01:00
user_id name phone ref_email detail
10292 sanjeev 29153373 sansh777@hotmail.com xxx
10292 shirish 2333604 shirish@yahoo.com ddsds
10292 sonali 323232 sonali@bolly.com filmstar
10293 shirish 2333604 shirish@yahoo.com ddsds
2001-10-04 23:42:25 +02:00
select * from t1 where user_id>10292;
2001-01-12 15:40:27 +01:00
user_id name phone ref_email detail
10293 shirish 2333604 shirish@yahoo.com ddsds
2001-10-04 23:42:25 +02:00
select * from t1 where user_id<10292;
2001-01-12 15:40:27 +01:00
user_id name phone ref_email detail
10291 sanjeev 29153373 sansh777@hotmail.com xxx
2001-10-04 23:42:25 +02:00
drop table t1;
CREATE TABLE t1 (a int not null, b int not null,c int not null,
key(a),primary key(a,b), unique(c),key(a),unique(b));
show index from t1;
2002-01-02 20:29:41 +01:00
Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment
2003-08-18 23:08:08 +02:00
t1 0 PRIMARY 1 a A # NULL NULL BTREE
t1 0 PRIMARY 2 b A # NULL NULL BTREE
t1 0 c 1 c A # NULL NULL BTREE
t1 0 b 1 b A # NULL NULL BTREE
t1 1 a 1 a A # NULL NULL BTREE
2004-05-11 23:29:52 +02:00
t1 1 a_2 1 a A # NULL NULL BTREE
2001-10-04 23:42:25 +02:00
drop table t1;
create table t1 (col1 int not null, col2 char(4) not null, primary key(col1));
2003-12-10 05:31:42 +01:00
alter table t1 engine=innodb;
2001-10-04 23:42:25 +02:00
insert into t1 values ('1','1'),('5','2'),('2','3'),('3','4'),('4','4');
select * from t1;
2001-01-12 15:40:27 +01:00
col1 col2
1 1
2 3
3 4
4 4
5 2
2001-10-04 23:42:25 +02:00
update t1 set col2='7' where col1='4';
select * from t1;
2001-01-12 15:40:27 +01:00
col1 col2
1 1
2 3
3 4
4 7
5 2
2001-10-04 23:42:25 +02:00
alter table t1 add co3 int not null;
select * from t1;
2001-01-12 15:40:27 +01:00
col1 col2 co3
1 1 0
2 3 0
3 4 0
4 7 0
5 2 0
2001-10-04 23:42:25 +02:00
update t1 set col2='9' where col1='2';
select * from t1;
2001-01-12 15:40:27 +01:00
col1 col2 co3
1 1 0
2 9 0
3 4 0
4 7 0
5 2 0
2001-10-04 23:42:25 +02:00
drop table t1;
2003-12-10 05:31:42 +01:00
create table t1 (a int not null , b int, primary key (a)) engine = innodb;
create table t2 (a int not null , b int, primary key (a)) engine = myisam;
2001-10-04 23:42:25 +02:00
insert into t1 VALUES (1,3) , (2,3), (3,3);
select * from t1;
2001-01-12 15:40:27 +01:00
a b
1 3
2 3
3 3
2001-10-04 23:42:25 +02:00
insert into t2 select * from t1;
select * from t2;
2001-01-12 15:40:27 +01:00
a b
1 3
2 3
3 3
2001-10-04 23:42:25 +02:00
delete from t1 where b = 3;
select * from t1;
2001-01-12 15:40:27 +01:00
a b
2001-10-04 23:42:25 +02:00
insert into t1 select * from t2;
select * from t1;
2001-01-12 15:40:27 +01:00
a b
1 3
2 3
3 3
2001-10-04 23:42:25 +02:00
select * from t2;
2001-01-12 15:40:27 +01:00
a b
1 3
2 3
3 3
2001-10-04 23:42:25 +02:00
drop table t1,t2;
CREATE TABLE t1 (
user_name varchar(12),
password text,
subscribed char(1),
user_id int(11) DEFAULT '0' NOT NULL,
quota bigint(20),
weight double,
access_date date,
access_time time,
approved datetime,
dummy_primary_key int(11) NOT NULL auto_increment,
PRIMARY KEY (dummy_primary_key)
2003-12-10 05:31:42 +01:00
) ENGINE=innodb;
2001-10-04 23:42:25 +02:00
INSERT INTO t1 VALUES ('user_0','somepassword','N',0,0,0,'2000-09-07','23:06:59','2000-09-07 23:06:59',1);
INSERT INTO t1 VALUES ('user_1','somepassword','Y',1,1,1,'2000-09-07','23:06:59','2000-09-07 23:06:59',2);
INSERT INTO t1 VALUES ('user_2','somepassword','N',2,2,1.4142135623731,'2000-09-07','23:06:59','2000-09-07 23:06:59',3);
INSERT INTO t1 VALUES ('user_3','somepassword','Y',3,3,1.7320508075689,'2000-09-07','23:06:59','2000-09-07 23:06:59',4);
INSERT INTO t1 VALUES ('user_4','somepassword','N',4,4,2,'2000-09-07','23:06:59','2000-09-07 23:06:59',5);
select user_name, password , subscribed, user_id, quota, weight, access_date, access_time, approved, dummy_primary_key from t1 order by user_name;
2001-01-12 15:40:27 +01:00
user_name password subscribed user_id quota weight access_date access_time approved dummy_primary_key
user_0 somepassword N 0 0 0 2000-09-07 23:06:59 2000-09-07 23:06:59 1
user_1 somepassword Y 1 1 1 2000-09-07 23:06:59 2000-09-07 23:06:59 2
user_2 somepassword N 2 2 1.4142135623731 2000-09-07 23:06:59 2000-09-07 23:06:59 3
user_3 somepassword Y 3 3 1.7320508075689 2000-09-07 23:06:59 2000-09-07 23:06:59 4
user_4 somepassword N 4 4 2 2000-09-07 23:06:59 2000-09-07 23:06:59 5
2001-10-04 23:42:25 +02:00
drop table t1;
CREATE TABLE t1 (
id int(11) NOT NULL auto_increment,
parent_id int(11) DEFAULT '0' NOT NULL,
level tinyint(4) DEFAULT '0' NOT NULL,
KEY (id),
KEY parent_id (parent_id),
KEY level (level)
2003-12-10 05:31:42 +01:00
) engine=innodb;
2001-10-04 23:42:25 +02:00
INSERT INTO t1 VALUES (1,0,0),(3,1,1),(4,1,1),(8,2,2),(9,2,2),(17,3,2),(22,4,2),(24,4,2),(28,5,2),(29,5,2),(30,5,2),(31,6,2),(32,6,2),(33,6,2),(203,7,2),(202,7,2),(20,3,2),(157,0,0),(193,5,2),(40,7,2),(2,1,1),(15,2,2),(6,1,1),(34,6,2),(35,6,2),(16,3,2),(7,1,1),(36,7,2),(18,3,2),(26,5,2),(27,5,2),(183,4,2),(38,7,2),(25,5,2),(37,7,2),(21,4,2),(19,3,2),(5,1,1);
INSERT INTO t1 values (179,5,2);
update t1 set parent_id=parent_id+100;
select * from t1 where parent_id=102;
2001-01-12 15:40:27 +01:00
id parent_id level
8 102 2
9 102 2
15 102 2
2001-10-04 23:42:25 +02:00
update t1 set id=id+1000;
update t1 set id=1024 where id=1009;
select * from t1;
2001-01-12 15:40:27 +01:00
id parent_id level
1001 100 0
1003 101 1
1004 101 1
1008 102 2
1024 102 2
1017 103 2
1022 104 2
1024 104 2
1028 105 2
1029 105 2
1030 105 2
1031 106 2
1032 106 2
1033 106 2
1203 107 2
1202 107 2
1020 103 2
1157 100 0
1193 105 2
1040 107 2
1002 101 1
1015 102 2
1006 101 1
1034 106 2
1035 106 2
1016 103 2
1007 101 1
1036 107 2
1018 103 2
1026 105 2
1027 105 2
1183 104 2
1038 107 2
1025 105 2
1037 107 2
1021 104 2
1019 103 2
1005 101 1
1179 105 2
2001-10-04 23:42:25 +02:00
update ignore t1 set id=id+1;
select * from t1;
2001-01-12 15:40:27 +01:00
id parent_id level
1002 100 0
1004 101 1
1005 101 1
1009 102 2
1025 102 2
1018 103 2
1023 104 2
1025 104 2
1029 105 2
1030 105 2
1031 105 2
1032 106 2
1033 106 2
1034 106 2
1204 107 2
1203 107 2
1021 103 2
1158 100 0
1194 105 2
1041 107 2
1003 101 1
1016 102 2
1007 101 1
1035 106 2
1036 106 2
1017 103 2
1008 101 1
1037 107 2
1019 103 2
1027 105 2
1028 105 2
1184 104 2
1039 107 2
1026 105 2
1038 107 2
1022 104 2
1020 103 2
1006 101 1
1180 105 2
2001-10-04 23:42:25 +02:00
update ignore t1 set id=1023 where id=1010;
select * from t1 where parent_id=102;
2001-01-12 15:40:27 +01:00
id parent_id level
1009 102 2
1025 102 2
1016 102 2
2003-08-18 23:08:08 +02:00
explain select level from t1 where level=1;
id select_type table type possible_keys key key_len ref rows Extra
2004-09-09 05:59:26 +02:00
1 SIMPLE t1 ref level level 1 const # Using index
2001-10-04 23:42:25 +02:00
select level,id from t1 where level=1;
2001-01-12 15:40:27 +01:00
level id
1 1004
1 1005
1 1003
1 1007
1 1008
1 1006
2001-10-04 23:42:25 +02:00
select level,id,parent_id from t1 where level=1;
2001-01-12 15:40:27 +01:00
level id parent_id
1 1004 101
1 1005 101
1 1003 101
1 1007 101
1 1008 101
1 1006 101
2001-10-04 23:42:25 +02:00
select level,id from t1 where level=1 order by id;
2001-01-12 15:40:27 +01:00
level id
1 1003
1 1004
1 1005
1 1006
1 1007
1 1008
2001-10-04 23:42:25 +02:00
delete from t1 where level=1;
select * from t1;
2001-01-12 15:40:27 +01:00
id parent_id level
1002 100 0
1009 102 2
1025 102 2
1018 103 2
1023 104 2
1025 104 2
1029 105 2
1030 105 2
1031 105 2
1032 106 2
1033 106 2
1034 106 2
1204 107 2
1203 107 2
1021 103 2
1158 100 0
1194 105 2
1041 107 2
1016 102 2
1035 106 2
1036 106 2
1017 103 2
1037 107 2
1019 103 2
1027 105 2
1028 105 2
1184 104 2
1039 107 2
1026 105 2
1038 107 2
1022 104 2
1020 103 2
1180 105 2
2001-10-04 23:42:25 +02:00
drop table t1;
CREATE TABLE t1 (
sca_code char(6) NOT NULL,
cat_code char(6) NOT NULL,
sca_desc varchar(50),
lan_code char(2) NOT NULL,
sca_pic varchar(100),
sca_sdesc varchar(50),
sca_sch_desc varchar(16),
PRIMARY KEY (sca_code, cat_code, lan_code),
INDEX sca_pic (sca_pic)
2003-12-10 05:31:42 +01:00
) engine = innodb ;
2001-10-04 23:42:25 +02:00
INSERT INTO t1 ( sca_code, cat_code, sca_desc, lan_code, sca_pic, sca_sdesc, sca_sch_desc) VALUES ( 'PD', 'J', 'PENDANT', 'EN', NULL, NULL, 'PENDANT'),( 'RI', 'J', 'RING', 'EN', NULL, NULL, 'RING'),( 'QQ', 'N', 'RING', 'EN', 'not null', NULL, 'RING');
select count(*) from t1 where sca_code = 'PD';
2001-01-12 15:40:27 +01:00
count(*)
1
2001-10-04 23:42:25 +02:00
select count(*) from t1 where sca_code <= 'PD';
2001-03-07 13:06:39 +01:00
count(*)
1
2001-10-04 23:42:25 +02:00
select count(*) from t1 where sca_pic is null;
2001-03-07 13:06:39 +01:00
count(*)
2
2001-10-04 23:42:25 +02:00
alter table t1 drop index sca_pic, add index sca_pic (cat_code, sca_pic);
select count(*) from t1 where sca_code='PD' and sca_pic is null;
2001-03-07 13:06:39 +01:00
count(*)
1
2001-10-04 23:42:25 +02:00
select count(*) from t1 where cat_code='E';
2001-03-07 13:06:39 +01:00
count(*)
0
2001-10-04 23:42:25 +02:00
alter table t1 drop index sca_pic, add index (sca_pic, cat_code);
select count(*) from t1 where sca_code='PD' and sca_pic is null;
2001-03-07 13:06:39 +01:00
count(*)
1
2001-10-04 23:42:25 +02:00
select count(*) from t1 where sca_pic >= 'n';
2001-03-07 13:06:39 +01:00
count(*)
1
2001-10-04 23:42:25 +02:00
select sca_pic from t1 where sca_pic is null;
2001-03-07 13:06:39 +01:00
sca_pic
NULL
NULL
2001-10-04 23:42:25 +02:00
update t1 set sca_pic="test" where sca_pic is null;
delete from t1 where sca_code='pd';
drop table t1;
set @a:=now();
2003-12-10 05:31:42 +01:00
CREATE TABLE t1 (a int not null, b timestamp not null, primary key (a)) engine=innodb;
2001-10-04 23:42:25 +02:00
insert into t1 (a) values(1),(2),(3);
2005-08-23 17:08:04 +02:00
select t1.a from t1 natural join t1 as t2 where t1.b >= @a order by t1.a;
a
1
2
3
Implementation of WL#2486 -
"Process NATURAL and USING joins according to SQL:2003".
* Some of the main problems fixed by the patch:
- in "select *" queries the * expanded correctly according to
ANSI for arbitrary natural/using joins
- natural/using joins are correctly transformed into JOIN ... ON
for any number/nesting of the joins.
- column references are correctly resolved against natural joins
of any nesting and combined with arbitrary other joins.
* This patch also contains a fix for name resolution of items
inside the ON condition of JOIN ... ON - in this case items must
be resolved only against the JOIN operands. To support such
'local' name resolution, the patch introduces a stack of
name resolution contexts used at parse time.
NOTICE:
- This patch is not complete in the sense that
- there are 2 test cases that still do not pass -
one in join.test, one in select.test. Both are marked
with a comment "TODO: WL#2486".
- it does not include a new test specific for the task
mysql-test/include/ps_query.inc:
Adjusted according to standard NATURAL/USING join semantics.,
mysql-test/r/bdb.result:
Adjusted according to standard NATURAL/USING join semantics.
mysql-test/r/derived.result:
Adjusted according to standard NATURAL/USING join semantics.
mysql-test/r/errors.result:
The column as a whole cannot be resolved, so different error message.
mysql-test/r/fulltext.result:
Adjusted according to standard JOIN ... ON semantics =>
the ON condition can refer only to the join operands.
mysql-test/r/fulltext_order_by.result:
More detailed error message.
mysql-test/r/innodb.result:
Adjusted according to standard NATURAL/USING join semantics.
This test doesn't pass completetly yet!
mysql-test/r/insert_select.result:
More detailed error message.
mysql-test/r/join.result:
Adjusted according to standard NATURAL/USING join semantics.
NOTICE: there is one test case that still fails, and it is
commeted out and marked with WL#2486 in the test file.
mysql-test/r/join_crash.result:
Adjusted according to standard NATURAL/USING join semantics.
mysql-test/r/join_nested.result:
Adjusted according to standard NATURAL/USING join semantics.
mysql-test/r/join_outer.result:
Adjusted according to standard NATURAL/USING join semantics.
mysql-test/r/multi_update.result:
Adjusted according to standard NATURAL/USING join semantics.
mysql-test/r/null_key.result:
Adjusted according to standard NATURAL/USING join semantics.
mysql-test/r/order_by.result:
Adjusted according to standard NATURAL/USING join semantics.
mysql-test/r/ps_2myisam.result:
Adjusted according to standard NATURAL/USING join semantics.
mysql-test/r/ps_3innodb.result:
Adjusted according to standard NATURAL/USING join semantics.
mysql-test/r/ps_4heap.result:
Adjusted according to standard NATURAL/USING join semantics.
mysql-test/r/ps_5merge.result:
Adjusted according to standard NATURAL/USING join semantics.
mysql-test/r/ps_6bdb.result:
Adjusted according to standard NATURAL/USING join semantics.
mysql-test/r/ps_7ndb.result:
Adjusted according to standard NATURAL/USING join semantics.
mysql-test/r/select.result:
Adjusted according to standard NATURAL/USING join semantics.
NOTICE: there is one failing test case which is commented with
WL#2486 in the test file.
mysql-test/r/subselect.result:
Adjusted according to standard NATURAL/USING join semantics.
mysql-test/r/type_ranges.result:
Adjusted according to standard NATURAL/USING join semantics.
mysql-test/r/union.result:
More detailed error message.
mysql-test/t/bdb.test:
Adjusted according to standard NATURAL/USING join semantics.
mysql-test/t/errors.test:
Adjusted according to standard NATURAL/USING join semantics.
mysql-test/t/fulltext.test:
Adjusted according to standard JOIN ... ON semantics =>
the ON condition can refer only to the join operands.
mysql-test/t/fulltext_order_by.test:
More detailed error message.
mysql-test/t/innodb.test:
Adjusted according to standard NATURAL/USING join semantics.
This test doesn't pass completetly yet!
mysql-test/t/insert_select.test:
More detailed error message.
mysql-test/t/join.test:
Adjusted according to standard NATURAL/USING join semantics.
NOTICE: there is one test case that still fails, and it is
commeted out and marked with WL#2486 in the test file.
mysql-test/t/join_crash.test:
Adjusted according to standard NATURAL/USING join semantics.
mysql-test/t/join_nested.test:
Adjusted according to standard NATURAL/USING join semantics.
mysql-test/t/join_outer.test:
Adjusted according to standard NATURAL/USING join semantics.
mysql-test/t/null_key.test:
Adjusted according to standard NATURAL/USING join semantics.
mysql-test/t/order_by.test:
Adjusted according to standard NATURAL/USING join semantics.
mysql-test/t/select.test:
Adjusted according to standard NATURAL/USING join semantics.
NOTICE: there is one test case that still fails, and it is
commeted out and marked with WL#2486 in the test file.
mysql-test/t/subselect.test:
Adjusted according to standard NATURAL/USING join semantics.
mysql-test/t/type_ranges.test:
Adjusted according to standard NATURAL/USING join semantics.
mysql-test/t/union.test:
More detailed error message.
sql/item.cc:
- extra parameter to find_field_in_tables
- find_field_in_real_table renamed to find_field_in_table
- fixed comments/typos
sql/item.h:
- added [first | last]_name_resolution_table to class
Name_resolution_context
- commented old code
- standardized formatting
sql/mysql_priv.h:
- refactored the find_field_in_XXX procedures,
- added a new procedure for natural join table references,
- renamed the find_field_in_XXX procedures to clearer names
sql/sp.cc:
- pass the top-most list of the FROM clause to setup_tables
- extra parameter to find_field_in_tables
sql/sql_acl.cc:
- renamed find_field_in_table => find_field_in_table_ref
- extra parameter to find_field_in_table_ref
- commented old code
sql/sql_base.cc:
This file contains the core of the implementation of the processing
of NATURAL/USING joins (WL#2486).
- added many comments to old code
- refactored the group of find_field_in_XXX procedures, and added a
new procedure for natural joins. There is one find_field_in_XXX procedure
per each type of table reference (stored table, merge view, or natural
join); one meta-procedure that selects the correct one depeneding on the
table reference; and one procedure that goes over a list of table
referenes.
- NATURAL/USING joins are processed through the procedures:
mark_common_columns, store_natural_using_join_columns,
store_top_level_join_columns, setup_natural_join_row_types.
The entry point to processing NATURAL/USING joins is the
procedure 'setup_natural_join_row_types'.
- Replaced the specialized Field_iterator_XXX iterators with one
generic iterator over the fields of a table reference.
- Simplified 'insert_fields' and 'setup_conds' due to encapsulation of
the processing of natural joins in a separate set of procedures.
sql/sql_class.h:
- Commented old code.
sql/sql_delete.cc:
- Pass the FROM clause to setup_tables.
sql/sql_help.cc:
- pass the end name resolution table to find_field_in_tables
- adjust the list of tables for name resolution
sql/sql_insert.cc:
- Changed the code that saves and restores the current context to
support the list of tables for name resolution -
context->first_name_resolution_table, and
table_list->next_name_resolution_table.
Needed to support an ugly trick to resolve inserted columns only in
the first table.
- Added Name_resolution_context::[first | last]_name_resolution_table.
- Commented old code
sql/sql_lex.cc:
- set select_lex.parent_lex correctly
- set correct state of the current name resolution context
sql/sql_lex.h:
- Added a stack of name resolution contexts to support local
contexts for JOIN ... ON conditions.
- Commented old code.
sql/sql_load.cc:
- Pass the FROM clause to setup_tables.
sql/sql_olap.cc:
- Pass the FROM clause to setup_tables.
sql/sql_parse.cc:
- correctly set SELECT_LEX::parent_lex
- set the first table of the current name resoltion context
- added support for NATURAL/USING joins
- commented old code
sql/sql_select.cc:
- Pass the FROM clause to setup_tables.
- Pass the end table to find_field_in_tables
- Improved comments
sql/sql_show.cc:
- Set SELECT_LEX::parent_lex.
sql/sql_update.cc:
- Pass the FROM clause to setup_tables.
sql/sql_yacc.yy:
- Added support for a stack of name resolution contexts needed to
implement name resolution for JOIN ... ON. A context is pushed
for each new JOIN ... ON, and popped afterwards.
- Added support for NATURAL/USING joins.
sql/table.cc:
- Added new class Natural_join_column to hide the heterogeneous
representation of column references for stored tables and for
views.
- Added a new list TABLE_LIST::next_name_resolution_table to
support name resolution with NATURAL/USING joins. Also added
other members to TABLE_LIST to support NATURAL/USING joins.
- Added a generic iterator over the fields of table references
of various types - class Field_iterator_table_ref
sql/table.h:
- Added new class Natural_join_column to hide the heterogeneous
representation of column references for stored tables and for
views.
- Added a new list TABLE_LIST::next_name_resolution_table to
support name resolution with NATURAL/USING joins. Also added
other members to TABLE_LIST to support NATURAL/USING joins.
- Added a generic iterator over the fields of table references
of various types - class Field_iterator_table_ref
tests/mysql_client_test.c:
Adjusted according to standard NATURAL JOIN syntax.
2005-08-12 16:57:19 +02:00
select a from t1 natural join t1 as t2 where b >= @a order by a;
2001-01-12 15:40:27 +01:00
a
1
2
3
2001-10-04 23:42:25 +02:00
update t1 set a=5 where a=1;
select a from t1;
2001-03-07 13:06:39 +01:00
a
2
3
5
2001-10-04 23:42:25 +02:00
drop table t1;
2003-12-10 05:31:42 +01:00
create table t1 (a varchar(100) not null, primary key(a), b int not null) engine=innodb;
2001-10-04 23:42:25 +02:00
insert into t1 values("hello",1),("world",2);
select * from t1 order by b desc;
2001-03-07 13:06:39 +01:00
a b
world 2
hello 1
2001-10-04 23:42:25 +02:00
optimize table t1;
2001-03-07 13:06:39 +01:00
Table Op Msg_type Msg_text
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
The main problem was that ALTER TABLE t ANALYZE/CHECK/OPTIMIZE/REPAIR
PARTITION took another code path (over mysql_alter_table instead of
mysql_admin_table) which differs in two ways:
1) alter table opens the tables in a different way than admin tables do
resulting in returning with error before it tried the command
2) alter table does not start to send any diagnostic rows to the client
which the lower admin functions continue to use -> resulting in
assertion crash
The fix:
Remapped ALTER TABLE t ANALYZE/CHECK/OPTIMIZE/REPAIR PARTITION to use
the same code path as ANALYZE/CHECK/OPTIMIZE/REPAIR TABLE t.
Adding check in mysql_admin_table to setup the partition list for
which partitions that should be used.
Partitioned tables will still not work with
REPAIR TABLE/PARTITION USE_FRM, since that requires moving partitions
to tables, REPAIR TABLE t USE_FRM, and check that the data still
fulfills the partitioning function and then move the table back to
being a partition.
NOTE: I have removed the following functions from the handler
interface:
analyze_partitions, check_partitions, optimize_partitions,
repair_partitions
Since they are not longer needed.
THIS ALTERS THE STORAGE ENGINE API
mysql-test/r/handler_innodb.result:
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
Added a note result row.
mysql-test/r/innodb.result:
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
Added a note result row.
mysql-test/r/innodb_mysql.result:
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
Added a note result row.
mysql-test/r/partition.result:
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
Updated after fixing ANALYZE/CHECK/OPTIMIZE/REPAIR partitioned
tables.
mysql-test/r/trigger-trans.result:
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
Added a note result row.
mysql-test/suite/ndb/r/ndb_partition_key.result:
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
Updated after fixing ANALYZE/CHECK/OPTIMIZE/REPAIR partitioned
tables.
mysql-test/suite/ndb/t/ndb_partition_key.test:
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
Updated after fixing ANALYZE/CHECK/OPTIMIZE/REPAIR partitioned
tables.
mysql-test/suite/parts/inc/partition_alter4.inc:
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
Updated after fixing ANALYZE/CHECK/OPTIMIZE/REPAIR partitioned
tables.
mysql-test/suite/parts/r/partition_alter4_innodb.result:
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
Updated after fixing ANALYZE/CHECK/OPTIMIZE/REPAIR partitioned
tables.
mysql-test/suite/parts/r/partition_alter4_myisam.result:
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
Updated after fixing ANALYZE/CHECK/OPTIMIZE/REPAIR partitioned
tables.
mysql-test/suite/rpl/r/rpl_failed_optimize.result:
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
Added a note result row.
mysql-test/suite/rpl/r/rpl_innodb_mixed_dml.result:
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
Added a note result row.
mysql-test/t/partition.test:
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
Updated after fixing ANALYZE/CHECK/OPTIMIZE/REPAIR partitioned
tables.
sql/ha_partition.cc:
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
Added a function for returning admin commands result rows
Updated handle_opt_partitions to handle admin commands result rows,
and some error filtering (as mysql_admin_table do).
Removed the functions analyze/check/optimize/repair_partitions
since they have no longer any use.
sql/ha_partition.h:
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
Removed analyze/check/optimize/repair_partitions since they
are no longer are needed.
sql/handler.cc:
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
Removed analyze/check/optimize/repair_partitions since they
are no longer are needed.
sql/handler.h:
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
Removed analyze/check/optimize/repair_partitions since they
are no longer are needed.
sql/mysql_priv.h:
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
Added set_part_state for reuse of code in mysql_admin_table.
(Originally fond in sql/sql_partition.cc:prep_alter_part_table)
sql/protocol.cc:
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
Added one assert and a debug print.
sql/sql_partition.cc:
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
Refactored code for setting up partition state, set_part_state,
now used in both prep_alter_part_table and
sql_table.cc:mysql_admin_table.
Removed code for handling ANALYZE/CHECK/OPTIMIZE/REPAIR partitions,
since it is now handled by mysql_admin_table.
sql/sql_table.cc:
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
Added functionality in mysql_admin_table to work with partitioned
tables.
Fixed a possible assertion bug for HA_ADMIN_TRY_ALTER
(If analyze would output a row, it fails since the row was already
started).
sql/sql_yacc.yy:
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
Remapped ALTER TABLE t ANALYZE/CHECK/OPTIMIZE/REPAIR PARTITION
to use the same code path as ANALYZE/CHECK/OPTIMIZE/REPAIR TABLE
instead of taking the ALTER TABLE path.
Added reset of alter_info for ANALYZE/CHECK/OPTIMIZE/REPAIR TABLE
since it is now used by partitioned tables.
storage/myisam/mi_check.c:
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
Changed warning message from "Found X parts Should be: Y parts"
to "Found X key parts. Should be Y", since it could be confusing
with partitioned tables.
2008-08-11 20:02:03 +02:00
test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
2003-08-18 23:08:08 +02:00
test.t1 optimize status OK
2001-10-04 23:42:25 +02:00
show keys from t1;
2002-01-02 20:29:41 +01:00
Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment
2003-08-18 23:08:08 +02:00
t1 0 PRIMARY 1 a A # NULL NULL BTREE
2001-10-04 23:42:25 +02:00
drop table t1;
2003-12-10 05:31:42 +01:00
create table t1 (i int, j int ) ENGINE=innodb;
2001-10-04 23:42:25 +02:00
insert into t1 values (1,2);
select * from t1 where i=1 and j=2;
2001-03-07 13:06:39 +01:00
i j
1 2
2001-10-04 23:42:25 +02:00
create index ax1 on t1 (i,j);
select * from t1 where i=1 and j=2;
2001-03-07 13:06:39 +01:00
i j
1 2
2001-10-04 23:42:25 +02:00
drop table t1;
CREATE TABLE t1 (
a int3 unsigned NOT NULL,
b int1 unsigned NOT NULL,
UNIQUE (a, b)
2003-12-10 05:31:42 +01:00
) ENGINE = innodb;
2001-10-04 23:42:25 +02:00
INSERT INTO t1 VALUES (1, 1);
SELECT MIN(B),MAX(b) FROM t1 WHERE t1.a = 1;
2001-03-10 16:05:10 +01:00
MIN(B) MAX(b)
1 1
2001-10-04 23:42:25 +02:00
drop table t1;
2003-12-10 05:31:42 +01:00
CREATE TABLE t1 (a int unsigned NOT NULL) engine=innodb;
2001-10-04 23:42:25 +02:00
INSERT INTO t1 VALUES (1);
SELECT * FROM t1;
2001-04-09 20:08:56 +02:00
a
1
2001-10-04 23:42:25 +02:00
DROP TABLE t1;
2003-12-10 05:31:42 +01:00
create table t1 (a int primary key,b int, c int, d int, e int, f int, g int, h int, i int, j int, k int, l int, m int, n int, o int, p int, q int, r int, s int, t int, u int, v int, w int, x int, y int, z int, a1 int, a2 int, a3 int, a4 int, a5 int, a6 int, a7 int, a8 int, a9 int, b1 int, b2 int, b3 int, b4 int, b5 int, b6 int) engine = innodb;
2001-10-04 23:42:25 +02:00
insert into t1 values (1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1);
explain select * from t1 where a > 0 and a < 50;
2002-09-26 22:08:22 +02:00
id select_type table type possible_keys key key_len ref rows Extra
2003-08-18 23:08:08 +02:00
1 SIMPLE t1 range PRIMARY PRIMARY 4 NULL # Using where
2001-10-04 23:42:25 +02:00
drop table t1;
2003-12-10 05:31:42 +01:00
create table t1 (id int NOT NULL,id2 int NOT NULL,id3 int NOT NULL,dummy1 char(30),primary key (id,id2),index index_id3 (id3)) engine=innodb;
2001-10-04 23:42:25 +02:00
insert into t1 values (0,0,0,'ABCDEFGHIJ'),(2,2,2,'BCDEFGHIJK'),(1,1,1,'CDEFGHIJKL');
LOCK TABLES t1 WRITE;
insert into t1 values (99,1,2,'D'),(1,1,2,'D');
2006-04-14 17:39:36 +02:00
ERROR 23000: Duplicate entry '1-1' for key 'PRIMARY'
2001-10-04 23:42:25 +02:00
select id from t1;
2001-04-19 19:41:19 +02:00
id
0
1
2
2001-10-04 23:42:25 +02:00
select id from t1;
2001-04-19 19:41:19 +02:00
id
0
1
2
2001-10-04 23:42:25 +02:00
UNLOCK TABLES;
DROP TABLE t1;
2003-12-10 05:31:42 +01:00
create table t1 (id int NOT NULL,id2 int NOT NULL,id3 int NOT NULL,dummy1 char(30),primary key (id,id2),index index_id3 (id3)) engine=innodb;
2001-10-04 23:42:25 +02:00
insert into t1 values (0,0,0,'ABCDEFGHIJ'),(2,2,2,'BCDEFGHIJK'),(1,1,1,'CDEFGHIJKL');
LOCK TABLES t1 WRITE;
begin;
insert into t1 values (99,1,2,'D'),(1,1,2,'D');
2006-04-14 17:39:36 +02:00
ERROR 23000: Duplicate entry '1-1' for key 'PRIMARY'
2001-10-04 23:42:25 +02:00
select id from t1;
2001-04-19 19:41:19 +02:00
id
0
1
2
2001-10-04 23:42:25 +02:00
insert ignore into t1 values (100,1,2,'D'),(1,1,99,'D');
commit;
select id,id3 from t1;
2001-04-19 19:41:19 +02:00
id id3
0 0
1 1
2 2
100 2
2001-10-04 23:42:25 +02:00
UNLOCK TABLES;
DROP TABLE t1;
2003-12-10 05:31:42 +01:00
create table t1 (a char(20), unique (a(5))) engine=innodb;
2003-08-18 23:08:08 +02:00
drop table t1;
2003-12-10 05:31:42 +01:00
create table t1 (a char(20), index (a(5))) engine=innodb;
2001-10-04 23:42:25 +02:00
show create table t1;
2001-05-09 22:02:36 +02:00
Table Create Table
t1 CREATE TABLE `t1` (
2006-04-14 17:39:36 +02:00
`a` char(20) DEFAULT NULL,
2003-08-18 23:08:08 +02:00
KEY `a` (`a`(5))
2003-12-10 05:31:42 +01:00
) ENGINE=InnoDB DEFAULT CHARSET=latin1
2001-10-04 23:42:25 +02:00
drop table t1;
2003-12-10 05:31:42 +01:00
create temporary table t1 (a int not null auto_increment, primary key(a)) engine=innodb;
2001-10-04 23:42:25 +02:00
insert into t1 values (NULL),(NULL),(NULL);
delete from t1 where a=3;
insert into t1 values (NULL);
select * from t1;
2001-05-09 22:02:36 +02:00
a
1
2
2001-05-23 01:40:23 +02:00
4
2001-11-07 23:43:27 +01:00
alter table t1 add b int;
select * from t1;
a b
1 NULL
2 NULL
4 NULL
2001-10-04 23:42:25 +02:00
drop table t1;
create table t1
(
id int auto_increment primary key,
name varchar(32) not null,
value text not null,
uid int not null,
unique key(name,uid)
2003-12-10 05:31:42 +01:00
) engine=innodb;
2001-10-04 23:42:25 +02:00
insert into t1 values (1,'one','one value',101),
(2,'two','two value',102),(3,'three','three value',103);
set insert_id=5;
replace into t1 (value,name,uid) values ('other value','two',102);
delete from t1 where uid=102;
set insert_id=5;
replace into t1 (value,name,uid) values ('other value','two',102);
set insert_id=6;
replace into t1 (value,name,uid) values ('other value','two',102);
select * from t1;
2001-08-25 04:45:06 +02:00
id name value uid
1 one one value 101
3 three three value 103
6 two other value 102
2001-10-04 23:42:25 +02:00
drop table t1;
2001-12-22 14:13:31 +01:00
create database mysqltest;
2003-12-10 05:31:42 +01:00
create table mysqltest.t1 (a int not null) engine= innodb;
2001-12-22 14:13:31 +01:00
insert into mysqltest.t1 values(1);
2003-12-10 05:31:42 +01:00
create table mysqltest.t2 (a int not null) engine= myisam;
2001-12-22 14:13:31 +01:00
insert into mysqltest.t2 values(1);
2003-12-10 05:31:42 +01:00
create table mysqltest.t3 (a int not null) engine= heap;
2001-12-22 14:13:31 +01:00
insert into mysqltest.t3 values(1);
2001-10-04 23:42:25 +02:00
commit;
2001-12-22 14:13:31 +01:00
drop database mysqltest;
show tables from mysqltest;
2005-08-19 09:08:41 +02:00
ERROR 42000: Unknown database 'mysqltest'
2002-01-31 03:36:58 +01:00
set autocommit=0;
2003-12-10 05:31:42 +01:00
create table t1 (a int not null) engine= innodb;
2001-10-04 23:42:25 +02:00
insert into t1 values(1),(2);
truncate table t1;
commit;
truncate table t1;
2005-03-02 10:38:25 +01:00
truncate table t1;
2001-10-04 23:42:25 +02:00
select * from t1;
2001-09-03 04:16:15 +02:00
a
2001-10-04 23:42:25 +02:00
insert into t1 values(1),(2);
delete from t1;
select * from t1;
2001-09-03 04:16:15 +02:00
a
2001-10-04 23:42:25 +02:00
commit;
drop table t1;
2002-01-31 03:36:58 +01:00
set autocommit=1;
2003-12-10 05:31:42 +01:00
create table t1 (a int not null) engine= innodb;
2002-01-31 03:36:58 +01:00
insert into t1 values(1),(2);
truncate table t1;
insert into t1 values(1),(2);
select * from t1;
a
1
2
truncate table t1;
insert into t1 values(1),(2);
delete from t1;
select * from t1;
a
drop table t1;
2003-12-10 05:31:42 +01:00
create table t1 (a int not null, b int not null, c int not null, primary key (a),key(b)) engine=innodb;
2001-12-06 13:10:51 +01:00
insert into t1 values (3,3,3),(1,1,1),(2,2,2),(4,4,4);
explain select * from t1 order by a;
2002-09-26 22:08:22 +02:00
id select_type table type possible_keys key key_len ref rows Extra
2003-08-18 23:08:08 +02:00
1 SIMPLE t1 index NULL PRIMARY 4 NULL #
2001-12-06 13:10:51 +01:00
explain select * from t1 order by b;
2002-09-26 22:08:22 +02:00
id select_type table type possible_keys key key_len ref rows Extra
2007-08-02 21:45:56 +02:00
1 SIMPLE t1 ALL NULL NULL NULL NULL # Using filesort
2001-12-06 13:10:51 +01:00
explain select * from t1 order by c;
2002-09-26 22:08:22 +02:00
id select_type table type possible_keys key key_len ref rows Extra
2003-08-18 23:08:08 +02:00
1 SIMPLE t1 ALL NULL NULL NULL NULL # Using filesort
2001-12-06 13:10:51 +01:00
explain select a from t1 order by a;
2002-09-26 22:08:22 +02:00
id select_type table type possible_keys key key_len ref rows Extra
2003-08-18 23:08:08 +02:00
1 SIMPLE t1 index NULL PRIMARY 4 NULL # Using index
2001-12-06 13:10:51 +01:00
explain select b from t1 order by b;
2002-09-26 22:08:22 +02:00
id select_type table type possible_keys key key_len ref rows Extra
2003-08-18 23:08:08 +02:00
1 SIMPLE t1 index NULL b 4 NULL # Using index
2001-12-06 13:10:51 +01:00
explain select a,b from t1 order by b;
2002-09-26 22:08:22 +02:00
id select_type table type possible_keys key key_len ref rows Extra
2003-08-18 23:08:08 +02:00
1 SIMPLE t1 index NULL b 4 NULL # Using index
2001-12-06 13:10:51 +01:00
explain select a,b from t1;
2002-09-26 22:08:22 +02:00
id select_type table type possible_keys key key_len ref rows Extra
2008-05-07 07:58:21 +02:00
1 SIMPLE t1 index NULL b 4 NULL # Using index
2001-12-06 13:10:51 +01:00
explain select a,b,c from t1;
2002-09-26 22:08:22 +02:00
id select_type table type possible_keys key key_len ref rows Extra
2003-08-18 23:08:08 +02:00
1 SIMPLE t1 ALL NULL NULL NULL NULL #
2001-12-06 13:10:51 +01:00
drop table t1;
2003-12-10 05:31:42 +01:00
create table t1 (t int not null default 1, key (t)) engine=innodb;
2001-12-13 19:20:19 +01:00
desc t1;
2003-06-02 14:19:06 +02:00
Field Type Null Key Default Extra
2004-12-10 10:07:11 +01:00
t int(11) NO MUL 1
2001-12-13 19:20:19 +01:00
drop table t1;
2002-01-31 03:36:58 +01:00
CREATE TABLE t1 (
number bigint(20) NOT NULL default '0',
cname char(15) NOT NULL default '',
carrier_id smallint(6) NOT NULL default '0',
privacy tinyint(4) NOT NULL default '0',
bug#10466: Datatype "timestamp" displays "YYYYMMDDHHMMSS" irrespective of display sizes.
- Print warning that says display width is not supported for datatype TIMESTAMP, if user tries to create a TIMESTAMP column with display width.
- Use display width for TIMESTAMP only in type_timestamp test to make sure warning is displayed correctly.
mysql-test/include/ps_create.inc:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/r/alias.result:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/r/func_date_add.result:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/r/func_str.result:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/r/func_time.result:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/r/group_by.result:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/r/innodb.result:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/r/ps.result:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/r/ps_1general.result:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/r/ps_2myisam.result:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/r/ps_3innodb.result:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/r/ps_4heap.result:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/r/ps_5merge.result:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/r/ps_6bdb.result:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/r/ps_7ndb.result:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/r/select.result:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/r/type_timestamp.result:
When display width is used for a TIMESTAMP column a warning is printed that the display width will be ignored.
mysql-test/r/update.result:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/t/alias.test:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/t/func_date_add.test:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/t/func_str.test:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/t/func_time.test:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/t/group_by.test:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/t/innodb.test:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/t/ps.test:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/t/ps_4heap.test:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/t/ps_5merge.test:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/t/select.test:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/t/update.test:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
sql/share/errmsg.txt:
Correct swedish error message
sql/sql_parse.cc:
Print warning if datatype is TIMESTAMP and display width is used.
2005-06-20 12:09:00 +02:00
last_mod_date timestamp NOT NULL,
2002-01-31 03:36:58 +01:00
last_mod_id smallint(6) NOT NULL default '0',
bug#10466: Datatype "timestamp" displays "YYYYMMDDHHMMSS" irrespective of display sizes.
- Print warning that says display width is not supported for datatype TIMESTAMP, if user tries to create a TIMESTAMP column with display width.
- Use display width for TIMESTAMP only in type_timestamp test to make sure warning is displayed correctly.
mysql-test/include/ps_create.inc:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/r/alias.result:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/r/func_date_add.result:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/r/func_str.result:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/r/func_time.result:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/r/group_by.result:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/r/innodb.result:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/r/ps.result:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/r/ps_1general.result:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/r/ps_2myisam.result:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/r/ps_3innodb.result:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/r/ps_4heap.result:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/r/ps_5merge.result:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/r/ps_6bdb.result:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/r/ps_7ndb.result:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/r/select.result:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/r/type_timestamp.result:
When display width is used for a TIMESTAMP column a warning is printed that the display width will be ignored.
mysql-test/r/update.result:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/t/alias.test:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/t/func_date_add.test:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/t/func_str.test:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/t/func_time.test:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/t/group_by.test:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/t/innodb.test:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/t/ps.test:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/t/ps_4heap.test:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/t/ps_5merge.test:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/t/select.test:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/t/update.test:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
sql/share/errmsg.txt:
Correct swedish error message
sql/sql_parse.cc:
Print warning if datatype is TIMESTAMP and display width is used.
2005-06-20 12:09:00 +02:00
last_app_date timestamp NOT NULL,
2002-01-31 03:36:58 +01:00
last_app_id smallint(6) default '-1',
version smallint(6) NOT NULL default '0',
assigned_scps int(11) default '0',
status tinyint(4) default '0'
2003-12-10 05:31:42 +01:00
) ENGINE=InnoDB;
2002-01-31 03:36:58 +01:00
INSERT INTO t1 VALUES (4077711111,'SeanWheeler',90,2,20020111112846,500,00000000000000,-1,2,3,1);
INSERT INTO t1 VALUES (9197722223,'berry',90,3,20020111112809,500,20020102114532,501,4,10,0);
INSERT INTO t1 VALUES (650,'San Francisco',0,0,20011227111336,342,00000000000000,-1,1,24,1);
INSERT INTO t1 VALUES (302467,'Sue\'s Subshop',90,3,20020109113241,500,20020102115111,501,7,24,0);
INSERT INTO t1 VALUES (6014911113,'SudzCarwash',520,1,20020102115234,500,20020102115259,501,33,32768,0);
INSERT INTO t1 VALUES (333,'tubs',99,2,20020109113440,501,20020109113440,500,3,10,0);
CREATE TABLE t2 (
number bigint(20) NOT NULL default '0',
cname char(15) NOT NULL default '',
carrier_id smallint(6) NOT NULL default '0',
privacy tinyint(4) NOT NULL default '0',
bug#10466: Datatype "timestamp" displays "YYYYMMDDHHMMSS" irrespective of display sizes.
- Print warning that says display width is not supported for datatype TIMESTAMP, if user tries to create a TIMESTAMP column with display width.
- Use display width for TIMESTAMP only in type_timestamp test to make sure warning is displayed correctly.
mysql-test/include/ps_create.inc:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/r/alias.result:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/r/func_date_add.result:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/r/func_str.result:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/r/func_time.result:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/r/group_by.result:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/r/innodb.result:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/r/ps.result:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/r/ps_1general.result:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/r/ps_2myisam.result:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/r/ps_3innodb.result:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/r/ps_4heap.result:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/r/ps_5merge.result:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/r/ps_6bdb.result:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/r/ps_7ndb.result:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/r/select.result:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/r/type_timestamp.result:
When display width is used for a TIMESTAMP column a warning is printed that the display width will be ignored.
mysql-test/r/update.result:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/t/alias.test:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/t/func_date_add.test:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/t/func_str.test:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/t/func_time.test:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/t/group_by.test:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/t/innodb.test:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/t/ps.test:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/t/ps_4heap.test:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/t/ps_5merge.test:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/t/select.test:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/t/update.test:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
sql/share/errmsg.txt:
Correct swedish error message
sql/sql_parse.cc:
Print warning if datatype is TIMESTAMP and display width is used.
2005-06-20 12:09:00 +02:00
last_mod_date timestamp NOT NULL,
2002-01-31 03:36:58 +01:00
last_mod_id smallint(6) NOT NULL default '0',
bug#10466: Datatype "timestamp" displays "YYYYMMDDHHMMSS" irrespective of display sizes.
- Print warning that says display width is not supported for datatype TIMESTAMP, if user tries to create a TIMESTAMP column with display width.
- Use display width for TIMESTAMP only in type_timestamp test to make sure warning is displayed correctly.
mysql-test/include/ps_create.inc:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/r/alias.result:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/r/func_date_add.result:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/r/func_str.result:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/r/func_time.result:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/r/group_by.result:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/r/innodb.result:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/r/ps.result:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/r/ps_1general.result:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/r/ps_2myisam.result:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/r/ps_3innodb.result:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/r/ps_4heap.result:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/r/ps_5merge.result:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/r/ps_6bdb.result:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/r/ps_7ndb.result:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/r/select.result:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/r/type_timestamp.result:
When display width is used for a TIMESTAMP column a warning is printed that the display width will be ignored.
mysql-test/r/update.result:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/t/alias.test:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/t/func_date_add.test:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/t/func_str.test:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/t/func_time.test:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/t/group_by.test:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/t/innodb.test:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/t/ps.test:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/t/ps_4heap.test:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/t/ps_5merge.test:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/t/select.test:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/t/update.test:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
sql/share/errmsg.txt:
Correct swedish error message
sql/sql_parse.cc:
Print warning if datatype is TIMESTAMP and display width is used.
2005-06-20 12:09:00 +02:00
last_app_date timestamp NOT NULL,
2002-01-31 03:36:58 +01:00
last_app_id smallint(6) default '-1',
version smallint(6) NOT NULL default '0',
assigned_scps int(11) default '0',
status tinyint(4) default '0'
2003-12-10 05:31:42 +01:00
) ENGINE=InnoDB;
2002-01-31 03:36:58 +01:00
INSERT INTO t2 VALUES (4077711111,'SeanWheeler',0,2,20020111112853,500,00000000000000,-1,2,3,1);
INSERT INTO t2 VALUES (9197722223,'berry',90,3,20020111112818,500,20020102114532,501,4,10,0);
INSERT INTO t2 VALUES (650,'San Francisco',90,0,20020109113158,342,00000000000000,-1,1,24,1);
INSERT INTO t2 VALUES (333,'tubs',99,2,20020109113453,501,20020109113453,500,3,10,0);
select * from t1;
number cname carrier_id privacy last_mod_date last_mod_id last_app_date last_app_id version assigned_scps status
2002-12-14 16:43:01 +01:00
4077711111 SeanWheeler 90 2 2002-01-11 11:28:46 500 0000-00-00 00:00:00 -1 2 3 1
9197722223 berry 90 3 2002-01-11 11:28:09 500 2002-01-02 11:45:32 501 4 10 0
650 San Francisco 0 0 2001-12-27 11:13:36 342 0000-00-00 00:00:00 -1 1 24 1
302467 Sue's Subshop 90 3 2002-01-09 11:32:41 500 2002-01-02 11:51:11 501 7 24 0
6014911113 SudzCarwash 520 1 2002-01-02 11:52:34 500 2002-01-02 11:52:59 501 33 32768 0
333 tubs 99 2 2002-01-09 11:34:40 501 2002-01-09 11:34:40 500 3 10 0
2002-01-31 03:36:58 +01:00
select * from t2;
number cname carrier_id privacy last_mod_date last_mod_id last_app_date last_app_id version assigned_scps status
2002-12-14 16:43:01 +01:00
4077711111 SeanWheeler 0 2 2002-01-11 11:28:53 500 0000-00-00 00:00:00 -1 2 3 1
9197722223 berry 90 3 2002-01-11 11:28:18 500 2002-01-02 11:45:32 501 4 10 0
650 San Francisco 90 0 2002-01-09 11:31:58 342 0000-00-00 00:00:00 -1 1 24 1
333 tubs 99 2 2002-01-09 11:34:53 501 2002-01-09 11:34:53 500 3 10 0
2002-01-31 03:36:58 +01:00
delete t1, t2 from t1 left join t2 on t1.number=t2.number where (t1.carrier_id=90 and t1.number=t2.number) or (t2.carrier_id=90 and t1.number=t2.number) or (t1.carrier_id=90 and t2.number is null);
select * from t1;
number cname carrier_id privacy last_mod_date last_mod_id last_app_date last_app_id version assigned_scps status
2002-12-14 16:43:01 +01:00
6014911113 SudzCarwash 520 1 2002-01-02 11:52:34 500 2002-01-02 11:52:59 501 33 32768 0
333 tubs 99 2 2002-01-09 11:34:40 501 2002-01-09 11:34:40 500 3 10 0
2002-01-31 03:36:58 +01:00
select * from t2;
number cname carrier_id privacy last_mod_date last_mod_id last_app_date last_app_id version assigned_scps status
2002-12-14 16:43:01 +01:00
333 tubs 99 2 2002-01-09 11:34:53 501 2002-01-09 11:34:53 500 3 10 0
2002-01-31 03:36:58 +01:00
select * from t2;
number cname carrier_id privacy last_mod_date last_mod_id last_app_date last_app_id version assigned_scps status
2002-12-14 16:43:01 +01:00
333 tubs 99 2 2002-01-09 11:34:53 501 2002-01-09 11:34:53 500 3 10 0
2002-01-31 03:36:58 +01:00
drop table t1,t2;
2003-12-10 05:31:42 +01:00
create table t1 (id int unsigned not null auto_increment, code tinyint unsigned not null, name char(20) not null, primary key (id), key (code), unique (name)) engine=innodb;
2002-08-09 15:47:16 +02:00
BEGIN;
SET SESSION TRANSACTION ISOLATION LEVEL SERIALIZABLE;
SELECT @@tx_isolation,@@global.tx_isolation;
2002-09-11 05:40:08 +02:00
@@tx_isolation @@global.tx_isolation
2002-10-30 22:51:12 +01:00
SERIALIZABLE REPEATABLE-READ
2002-08-09 15:47:16 +02:00
insert into t1 (code, name) values (1, 'Tim'), (1, 'Monty'), (2, 'David');
select id, code, name from t1 order by id;
id code name
1 1 Tim
2 1 Monty
3 2 David
COMMIT;
BEGIN;
SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ;
insert into t1 (code, name) values (2, 'Erik'), (3, 'Sasha');
select id, code, name from t1 order by id;
id code name
1 1 Tim
2 1 Monty
3 2 David
4 2 Erik
5 3 Sasha
COMMIT;
2008-10-03 14:24:19 +02:00
SET binlog_format='MIXED';
2002-08-09 15:47:16 +02:00
BEGIN;
SET SESSION TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
insert into t1 (code, name) values (3, 'Jeremy'), (4, 'Matt');
select id, code, name from t1 order by id;
id code name
1 1 Tim
2 1 Monty
3 2 David
4 2 Erik
5 3 Sasha
6 3 Jeremy
7 4 Matt
COMMIT;
DROP TABLE t1;
2003-12-10 05:31:42 +01:00
create table t1 (n int(10), d int(10)) engine=innodb;
create table t2 (n int(10), d int(10)) engine=innodb;
2002-11-30 23:48:35 +01:00
insert into t1 values(1,1),(1,2);
insert into t2 values(1,10),(2,20);
UPDATE t1,t2 SET t1.d=t2.d,t2.d=30 WHERE t1.n=t2.n;
select * from t1;
n d
1 10
1 10
select * from t2;
n d
1 30
2 20
drop table t1,t2;
2007-10-13 22:12:50 +02:00
drop table if exists t1, t2;
CREATE TABLE t1 (a int, PRIMARY KEY (a));
CREATE TABLE t2 (a int, PRIMARY KEY (a)) ENGINE=InnoDB;
create trigger trg_del_t2 after delete on t2 for each row
insert into t1 values (1);
insert into t1 values (1);
insert into t2 values (1),(2);
delete t2 from t2;
ERROR 23000: Duplicate entry '1' for key 'PRIMARY'
select count(*) from t2 /* must be 2 as restored after rollback caused by the error */;
count(*)
2
drop table t1, t2;
2008-02-19 17:44:09 +01:00
drop table if exists t1, t2;
CREATE TABLE t1 (a int, PRIMARY KEY (a));
CREATE TABLE t2 (a int, PRIMARY KEY (a)) ENGINE=InnoDB;
create trigger trg_del_t2 after delete on t2 for each row
insert into t1 values (1);
insert into t1 values (1);
insert into t2 values (1),(2);
delete t2 from t2;
ERROR 23000: Duplicate entry '1' for key 'PRIMARY'
select count(*) from t2 /* must be 2 as restored after rollback caused by the error */;
count(*)
2
drop table t1, t2;
2003-12-10 05:31:42 +01:00
create table t1 (a int, b int) engine=innodb;
2002-12-03 12:08:25 +01:00
insert into t1 values(20,null);
select t2.b, ifnull(t2.b,"this is null") from t1 as t2 left join t1 as t3 on
t2.b=t3.a;
b ifnull(t2.b,"this is null")
NULL this is null
select t2.b, ifnull(t2.b,"this is null") from t1 as t2 left join t1 as t3 on
t2.b=t3.a order by 1;
b ifnull(t2.b,"this is null")
NULL this is null
insert into t1 values(10,null);
select t2.b, ifnull(t2.b,"this is null") from t1 as t2 left join t1 as t3 on
t2.b=t3.a order by 1;
b ifnull(t2.b,"this is null")
NULL this is null
NULL this is null
drop table t1;
2003-12-10 05:31:42 +01:00
create table t1 (a varchar(10) not null) engine=myisam;
create table t2 (b varchar(10) not null unique) engine=innodb;
2002-12-03 12:08:25 +01:00
select t1.a from t1,t2 where t1.a=t2.b;
a
drop table t1,t2;
2003-12-10 05:31:42 +01:00
create table t1 (a int not null, b int, primary key (a)) engine = innodb;
create table t2 (a int not null, b int, primary key (a)) engine = innodb;
2003-02-19 15:08:29 +01:00
insert into t1 values (10, 20);
insert into t2 values (10, 20);
update t1, t2 set t1.b = 150, t2.b = t1.b where t2.a = t1.a and t1.a = 10;
drop table t1,t2;
2003-12-10 05:31:42 +01:00
CREATE TABLE t1 (id INT NOT NULL, PRIMARY KEY (id)) ENGINE=INNODB;
CREATE TABLE t2 (id INT PRIMARY KEY, t1_id INT, INDEX par_ind (t1_id), FOREIGN KEY (t1_id) REFERENCES t1(id) ON DELETE CASCADE ) ENGINE=INNODB;
2003-02-17 01:14:37 +01:00
insert into t1 set id=1;
insert into t2 set id=1, t1_id=1;
delete t1,t2 from t1,t2 where t1.id=t2.t1_id;
select * from t1;
id
select * from t2;
id t1_id
2004-02-02 00:30:59 +01:00
drop table t2,t1;
2003-12-10 05:31:42 +01:00
CREATE TABLE t1(id INT NOT NULL, PRIMARY KEY (id)) ENGINE=INNODB;
CREATE TABLE t2(id INT PRIMARY KEY, t1_id INT, INDEX par_ind (t1_id) ) ENGINE=INNODB;
2003-03-11 18:40:49 +01:00
INSERT INTO t1 VALUES(1);
INSERT INTO t2 VALUES(1, 1);
SELECT * from t1;
id
1
UPDATE t1,t2 SET t1.id=t1.id+1, t2.t1_id=t1.id+1;
SELECT * from t1;
id
2
2003-03-12 13:34:07 +01:00
UPDATE t1,t2 SET t1.id=t1.id+1 where t1.id!=t2.id;
2003-03-11 18:40:49 +01:00
SELECT * from t1;
id
3
2003-03-12 19:33:41 +01:00
DROP TABLE t1,t2;
2003-03-18 02:16:12 +01:00
set autocommit=0;
2003-12-10 05:31:42 +01:00
CREATE TABLE t1 (id CHAR(15) NOT NULL, value CHAR(40) NOT NULL, PRIMARY KEY(id)) ENGINE=InnoDB;
CREATE TABLE t2 (id CHAR(15) NOT NULL, value CHAR(40) NOT NULL, PRIMARY KEY(id)) ENGINE=InnoDB;
CREATE TABLE t3 (id1 CHAR(15) NOT NULL, id2 CHAR(15) NOT NULL, PRIMARY KEY(id1, id2)) ENGINE=InnoDB;
2003-03-18 02:16:12 +01:00
INSERT INTO t3 VALUES("my-test-1", "my-test-2");
COMMIT;
INSERT INTO t1 VALUES("this-key", "will disappear");
INSERT INTO t2 VALUES("this-key", "will also disappear");
DELETE FROM t3 WHERE id1="my-test-1";
SELECT * FROM t1;
id value
this-key will disappear
SELECT * FROM t2;
id value
this-key will also disappear
SELECT * FROM t3;
id1 id2
ROLLBACK;
SELECT * FROM t1;
id value
SELECT * FROM t2;
id value
SELECT * FROM t3;
id1 id2
my-test-1 my-test-2
SELECT * FROM t3 WHERE id1="my-test-1" LOCK IN SHARE MODE;
id1 id2
my-test-1 my-test-2
COMMIT;
set autocommit=1;
DROP TABLE t1,t2,t3;
2003-12-10 05:31:42 +01:00
CREATE TABLE t1 (a int not null primary key, b int not null, unique (b)) engine=innodb;
2003-03-18 23:45:44 +01:00
INSERT INTO t1 values (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9);
UPDATE t1 set a=a+100 where b between 2 and 3 and a < 1000;
SELECT * from t1;
a b
1 1
2008-05-07 07:58:21 +02:00
102 2
103 3
2003-03-18 23:45:44 +01:00
4 4
5 5
6 6
7 7
8 8
9 9
drop table t1;
2003-12-10 05:31:42 +01:00
CREATE TABLE t1 (a int not null primary key, b int not null, key (b)) engine=innodb;
CREATE TABLE t2 (a int not null primary key, b int not null, key (b)) engine=innodb;
2003-05-03 15:21:43 +02:00
INSERT INTO t1 values (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10),(11,11),(12,12);
2003-03-18 23:45:44 +01:00
INSERT INTO t2 values (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9);
update t1,t2 set t1.a=t1.a+100;
select * from t1;
a b
101 1
102 2
103 3
104 4
105 5
106 6
107 7
108 8
109 9
2003-05-03 15:21:43 +02:00
110 10
111 11
112 12
2003-03-18 23:45:44 +01:00
update t1,t2 set t1.a=t1.a+100 where t1.a=101;
select * from t1;
a b
2008-05-07 07:58:21 +02:00
201 1
2003-03-18 23:45:44 +01:00
102 2
103 3
104 4
105 5
106 6
107 7
108 8
109 9
2003-05-03 15:21:43 +02:00
110 10
111 11
112 12
2003-03-18 23:45:44 +01:00
update t1,t2 set t1.b=t1.b+10 where t1.b=2;
select * from t1;
a b
2008-05-07 07:58:21 +02:00
201 1
2003-03-18 23:45:44 +01:00
103 3
104 4
105 5
106 6
107 7
108 8
109 9
2003-05-03 15:21:43 +02:00
110 10
111 11
2008-05-07 07:58:21 +02:00
102 12
2003-05-03 15:21:43 +02:00
112 12
update t1,t2 set t1.b=t1.b+2,t2.b=t1.b+10 where t1.b between 3 and 5 and t1.a=t2.a+100;
2003-03-18 23:45:44 +01:00
select * from t1;
a b
2008-05-07 07:58:21 +02:00
201 1
2003-03-18 23:45:44 +01:00
103 5
104 6
2007-11-07 16:59:58 +01:00
106 6
2008-05-07 07:58:21 +02:00
105 7
2003-03-18 23:45:44 +01:00
107 7
108 8
109 9
2003-05-03 15:21:43 +02:00
110 10
111 11
2008-05-07 07:58:21 +02:00
102 12
2003-05-03 15:21:43 +02:00
112 12
2003-03-18 23:45:44 +01:00
select * from t2;
a b
2003-05-03 15:21:43 +02:00
1 1
2 2
6 6
7 7
8 8
9 9
2008-05-07 07:58:21 +02:00
3 13
4 14
5 15
2003-03-18 23:45:44 +01:00
drop table t1,t2;
2003-12-10 05:31:42 +01:00
CREATE TABLE t2 ( NEXT_T BIGINT NOT NULL PRIMARY KEY) ENGINE=MyISAM;
CREATE TABLE t1 ( B_ID INTEGER NOT NULL PRIMARY KEY) ENGINE=InnoDB;
2003-04-03 19:24:15 +02:00
SET AUTOCOMMIT=0;
INSERT INTO t1 ( B_ID ) VALUES ( 1 );
INSERT INTO t2 ( NEXT_T ) VALUES ( 1 );
ROLLBACK;
2003-05-21 20:39:58 +02:00
Warnings:
Warning 1196 Some non-transactional changed tables couldn't be rolled back
2003-04-03 19:24:15 +02:00
SELECT * FROM t1;
B_ID
drop table t1,t2;
2003-12-10 05:31:42 +01:00
create table t1 ( pk int primary key, parent int not null, child int not null, index (parent) ) engine = innodb;
2003-04-11 19:09:24 +02:00
insert into t1 values (1,0,4), (2,1,3), (3,2,1), (4,1,2);
select distinct parent,child from t1 order by parent;
parent child
0 4
1 2
1 3
2 1
2003-04-29 13:13:22 +02:00
drop table t1;
2003-12-10 05:31:42 +01:00
create table t1 (a int not null auto_increment primary key, b int, c int, key(c)) engine=innodb;
2003-04-23 20:52:16 +02:00
create table t2 (a int not null auto_increment primary key, b int);
insert into t1 (b) values (null),(null),(null),(null),(null),(null),(null);
insert into t2 (a) select b from t1;
insert into t1 (b) select b from t2;
insert into t2 (a) select b from t1;
insert into t1 (a) select b from t2;
insert into t2 (a) select b from t1;
insert into t1 (a) select b from t2;
insert into t2 (a) select b from t1;
insert into t1 (a) select b from t2;
insert into t2 (a) select b from t1;
insert into t1 (a) select b from t2;
select count(*) from t1;
count(*)
Applied innodb-5.1-ss677, -ss680, -ss713, and -ss720 snapshots.
All but ss677 are against the mysql-5.1 tree only.
Fixes the following bugs:
- Bug #19834: Using cursors when running in READ-COMMITTED can cause InnoDB to crash
- Bug #20213: DBT2 testing cause mysqld to core using Innodb
- Bug #20493: on partition tables, select and show command casue server crash
- Bug #21113: Duplicate printout in SHOW INNODB STATUS
- Bug #21313: rsql_..._recover_innodb_tmp_table is redundant and broken
- Bug #21467: Manual URL wrong in InnoDB "page corrupted" error report
mysql-test/r/innodb.result:
Applied innodb-5.1-ss677, -ss680, -ss713, and -ss720 snapshots.
All but ss677 are against the mysql-5.1 tree only.
innodb.result: Adjust Innodb_rows_inserted and Innodb_rows_updated
to reflect the deleted statements in r420, which somehow reappeared
in the MySQL tree.
mysql-test/t/innodb.test:
Applied innodb-5.1-ss677, -ss680, -ss713, and -ss720 snapshots.
All but ss677 are against the mysql-5.1 tree only.
sql/ha_innodb.cc:
Applied innodb-5.1-ss677, -ss680, -ss713, and -ss720 snapshots.
All but ss677 are against the mysql-5.1 tree only.
ha_innobase::start_stmt(): patch from Heikki:
Do not call read_view_close_for_mysql(). (Bug #19834)
Fix Bug#20213 and its duplicates: stress test crashes of InnoDB-5.1
Fix Bug #20493 : we must prepare prebuilt->trx to point to the trx of this thd before using it
Add update_thd() to several places in ha_innodb.cc to make sure prebuilt->trx points to the right trx object; in other functions add assertions that prebuilt->trx is for this thd; when 5.1 stabilizes, we can change these assertions to ut_ad() debug version assertions
Remove redundant check_trx_exists() and ut_a() from r701,
as suggested by Marko
Correct all URLs pointing to the MySQL manual. (Bug #21467)
storage/innobase/btr/btr0btr.c:
Applied innodb-5.1-ss677, -ss680, -ss713, and -ss720 snapshots.
All but ss677 are against the mysql-5.1 tree only.
Correct all URLs pointing to the MySQL manual. (Bug #21467)
storage/innobase/buf/buf0buf.c:
Applied innodb-5.1-ss677, -ss680, -ss713, and -ss720 snapshots.
All but ss677 are against the mysql-5.1 tree only.
Correct all URLs pointing to the MySQL manual. (Bug #21467)
storage/innobase/dict/dict0dict.c:
Applied innodb-5.1-ss677, -ss680, -ss713, and -ss720 snapshots.
All but ss677 are against the mysql-5.1 tree only.
Correct all URLs pointing to the MySQL manual. (Bug #21467)
storage/innobase/fil/fil0fil.c:
Applied innodb-5.1-ss677, -ss680, -ss713, and -ss720 snapshots.
All but ss677 are against the mysql-5.1 tree only.
Make the tablespace cache hash size 100 or 1000 times bigger. Fixes bug
#21112.
After ut_print_timestamp(), always display " InnoDB:" (note two spaces).
Correct all URLs pointing to the MySQL manual. (Bug #21467)
storage/innobase/fsp/fsp0fsp.c:
Applied innodb-5.1-ss677, -ss680, -ss713, and -ss720 snapshots.
All but ss677 are against the mysql-5.1 tree only.
Correct all URLs pointing to the MySQL manual. (Bug #21467)
storage/innobase/ibuf/ibuf0ibuf.c:
Applied innodb-5.1-ss677, -ss680, -ss713, and -ss720 snapshots.
All but ss677 are against the mysql-5.1 tree only.
ibuf_print(): Don't print redundant information. Fixes bug #21113.
Remove non-varying variable ibuf->meter and related constant IBUF_THRESHOLD.
storage/innobase/include/btr0cur.ic:
Applied innodb-5.1-ss677, -ss680, -ss713, and -ss720 snapshots.
All but ss677 are against the mysql-5.1 tree only.
btr_cur_get_page(): Remove buggy assertion.
storage/innobase/include/buf0buf.ic:
Applied innodb-5.1-ss677, -ss680, -ss713, and -ss720 snapshots.
All but ss677 are against the mysql-5.1 tree only.
Correct all URLs pointing to the MySQL manual. (Bug #21467)
storage/innobase/include/ibuf0ibuf.ic:
Applied innodb-5.1-ss677, -ss680, -ss713, and -ss720 snapshots.
All but ss677 are against the mysql-5.1 tree only.
Remove non-varying variable ibuf->meter and related constant IBUF_THRESHOLD.
storage/innobase/log/log0log.c:
Applied innodb-5.1-ss677, -ss680, -ss713, and -ss720 snapshots.
All but ss677 are against the mysql-5.1 tree only.
Correct all URLs pointing to the MySQL manual. (Bug #21467)
storage/innobase/log/log0recv.c:
Applied innodb-5.1-ss677, -ss680, -ss713, and -ss720 snapshots.
All but ss677 are against the mysql-5.1 tree only.
Correct all URLs pointing to the MySQL manual. (Bug #21467)
storage/innobase/os/os0file.c:
Applied innodb-5.1-ss677, -ss680, -ss713, and -ss720 snapshots.
All but ss677 are against the mysql-5.1 tree only.
Correct all URLs pointing to the MySQL manual. (Bug #21467)
storage/innobase/row/row0mysql.c:
Applied innodb-5.1-ss677, -ss680, -ss713, and -ss720 snapshots.
All but ss677 are against the mysql-5.1 tree only.
Remove the special treatment of tables
rsql_IDENTIFIER_recover_innodb_tmp_table, which is redundant and
was broken with the introduction of the "safe" file name encoding of
identifiers. (Bug #21313)
ChangeSet@1.2181.173.1 2006-08-02 17:57:06+02:00 ingo@local
Bug#18775 - Temporary table from alter table visible to other threads
Continued implementation of WL#1324 (table name to filename encoding)
Changed back the encoded temp file prefix to #sql.
After ut_print_timestamp(), always display " InnoDB:" (note two spaces).
Correct all URLs pointing to the MySQL manual. (Bug #21467)
storage/innobase/row/row0sel.c:
Applied innodb-5.1-ss677, -ss680, -ss713, and -ss720 snapshots.
All but ss677 are against the mysql-5.1 tree only.
Correct all URLs pointing to the MySQL manual. (Bug #21467)
storage/innobase/row/row0vers.c:
Applied innodb-5.1-ss677, -ss680, -ss713, and -ss720 snapshots.
All but ss677 are against the mysql-5.1 tree only.
row_vers_build_for_semi_consistent_read(): rec_trx_id was uninitialized
in a comparison. Initialize it.
storage/innobase/srv/srv0start.c:
Applied innodb-5.1-ss677, -ss680, -ss713, and -ss720 snapshots.
All but ss677 are against the mysql-5.1 tree only.
Correct all URLs pointing to the MySQL manual. (Bug #21467)
storage/innobase/ut/ut0dbg.c:
Applied innodb-5.1-ss677, -ss680, -ss713, and -ss720 snapshots.
All but ss677 are against the mysql-5.1 tree only.
ut_dbg_assertion_failed(): Print space between timestamp and start of error
message.
After ut_print_timestamp(), always display " InnoDB:" (note two spaces).
Correct all URLs pointing to the MySQL manual. (Bug #21467)
storage/innobase/Makefile.am:
Applied innodb-5.1-ss677, -ss680, -ss713, and -ss720 snapshots.
All but ss677 are against the mysql-5.1 tree only.
2006-08-15 01:42:57 +02:00
623
Applied innodb-5.1-ss475 snapshot.
* Fix BUG#15650: "DELETE with LEFT JOIN crashes server with innodb_locks_unsafe_for binlog"
* Fix BUG#17134: "Partitions: uncommitted changes are visible"
* Fix BUG#17992: "Partitions: InnoDB, somehow rotten table after UPDATE"
row0ins.c: MySQL's partitioned table code does not set preduilt->sql_stat_start right
if it does an insert in the same statement after doing a search first in the same
partition table. We now write trx id always to the buffer, not just when flag
sql_stat_start is on. This will waste CPU time very sightly.
* Fix BUG#18077: "InnoDB uses full explicit table locks in stored FUNCTION"
* Fix BUG#18238: "When locks exhaust the buffer pool, InnoDB does not roll back the trx"
* Fix BUG#18252" "Disk space leak in updates of InnoDB BLOB rows in 5.0 and 5.1"
* Fix BUG#18283: "When InnoDB returns error 'lock table full', MySQL can write to binlog too much"
* Fix BUG#18350: "Use consistent read in CREATE ... SELECT ... if innodb_locks_unsafe_for_binlog"
* Fix BUG#18384: "InnoDB memory leak on duplicate key errors in 5.0 if row has many columns"
* Fix BUG#18934: "InnoDB crashes when table uses column names like DB_ROW_ID"
Refuse tables that use reserved column names.
* InnoDB's SQL parser:
- Add support for UNSIGNED types, EXIT keyword, quoted identifiers, user-function callbacks
for processing results of FETCH statements, bound literals, DATA_VARCHAR for bound literals.
- Allow bound literals of type non-INTEGER to be of length 0.
- Add make_flex.sh and update lexer/parser generation documentation.
- Add comment clarifying the difference between 'alias' and 'indirection' fields in sym_node_t.
- Remove never reached duplicate code in pars_set_dfield_type().
- Rewrite pars_info datatypes and APIs, add a few helper functions.
- Since the functions definitions in pars_info_t are accessed after pars_sql() returns
in the query graph execution stage, we can't free pars_info_t in pars_sql(). Instead,
make pars_sql() transfer ownership of pars_info_t to the created query graph, and
make que_graph_free() free it if needed.
- Allow access to system columns like DB_ROW_ID.
* Use bound literals in row_truncate_table_for_mysql, row_drop_table_for_mysql,
row_discard_tablespace_for_mysql, and row_rename_table_for_mysql.
* Setting an isolation level of the transaction to read committed weakens the locks for
this session similarly like the option innodb_locks_unsafe_for binlog. This patch removes
alnost all gap locking (used in next-key locking) and makes MySQL to release the row locks
on the rows which does not belong to result set. Additionally, nonlocking selects on
INSERT INTO SELECT, UPDATE ... (SELECT ...), and CREATE ... SELECT ... use a nonlocking
consistent read. If a binlog is used, then binlog format should be set to row based
binloging to make the execution of the complex SQL statements.
* Disable the statistic variables btr_search_n_hash_fail and n_hash_succ, n_hash_fail,
n_patt_succ, and n_searches of btr_search_t in builds without #ifdef UNIV_SEARCH_PERF_STAT.
* Make innodb.test faster. Group all consistent read test cases to a one test case and
wait their lock timeout after all have been send to the server. Decrease amount of rows
inserted in a certain test - this has no effect on the effectiveness of the test and
reduces the running time by ~10 sec. Remove temporary work-arounds from innodb.result
now that ALTER TABLE DROP FOREIGN KEY works once again.
* Make innodb_unsafe_binlog.test faster. Grout all consistent read test cases to a one
test case amd wait their lock timeout after all have been sent to the server. Remove
unnecessary option --loose_innodb_lock_wait_timeout.
* Print dictionary memory size in SHOW INNODB STATUS.
* Fix memory leaks in row_create_table_for_mysql() in rare corner cases.
* Remove code related to clustered tables. They were never implemented, and the
implementation would be challenging with ROW_FORMAT=COMPACT. Remove the table types
DICT_TABLE_CLUSTER_MEMBER and DICT_TABLE_CLUSTER and all related tests and functions.
dict_table_t: Remove mix_id, mix_len, mix_id_len, mix_id_buf, and cluster_name.
plan_t: Remove mixed_index.
dict_create_sys_tables_tuple(): Set MIX_ID=0, MIX_LEN=0, CLUSTER_NAME=NULL when
inserting into SYS_TABLES.
dict_tree_check_search_tuple(): Enclose in #ifdef UNIV_DEBUG.
* Move calling of thr_local_free() from trx_free_for_mysql() to
innobase_close_connection().
mysql-test/r/innodb.result:
Applied innodb-5.1-ss475 snapshot.
mysql-test/r/innodb_unsafe_binlog.result:
Applied innodb-5.1-ss475 snapshot.
mysql-test/t/innodb-master.opt:
Applied innodb-5.1-ss475 snapshot.
mysql-test/t/innodb.test:
Applied innodb-5.1-ss475 snapshot.
mysql-test/t/innodb_unsafe_binlog-master.opt:
Applied innodb-5.1-ss475 snapshot.
mysql-test/t/innodb_unsafe_binlog.test:
Applied innodb-5.1-ss475 snapshot.
sql/ha_innodb.cc:
Applied innodb-5.1-ss475 snapshot.
Do not use inlined functions in ha_innodb.cc.
Remove assertion ut_error which crashes the mysqld server
if it prints a warning about the adaptive latch.
storage/innobase/Makefile.am:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/btr/btr0btr.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/btr/btr0cur.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/btr/btr0pcur.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/btr/btr0sea.c:
Applied innodb-5.1-ss475 snapshot.
Fix compilation problem with non-C99 compilers.
storage/innobase/buf/buf0lru.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/cmakelists.txt:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/configure.in:
Applied innodb-5.1-ss475 snapshot.
Add disabled-by-default logic to switch GCC to a strict C89-mode.
Add -Werror-implicit-function_declaration to CFLAGS when using gcc.
storage/innobase/data/data0type.c:
Applied innodb-5.1-ss475 snapshot.
dtype_print(): Recognize DATA_FIXBINARY and DATA_BLOB types.
Print known flags from prtype. Use a switch statement instead
of else-if chain.
storage/innobase/dict/dict0crea.c:
Applied innodb-5.1-ss475 snapshot.
Use bound literals in all SQL statements instead of elaborately
constructing correctly allocated and quoted strings to pass the
data in ASCII form.
storage/innobase/dict/dict0dict.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/dict/dict0load.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/dict/dict0mem.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/eval/eval0proc.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/ibuf/ibuf0ibuf.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/btr0cur.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/btr0cur.ic:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/btr0sea.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/buf0lru.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/dict0dict.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/dict0dict.ic:
Applied innodb-5.1-ss475 snapshot.
Remove too strict assertions from some dict_table_t
accessor functions.
storage/innobase/include/dict0mem.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/eval0proc.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/hash0hash.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/lock0lock.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/mem0mem.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/page0page.ic:
Applied innodb-5.1-ss475 snapshot.
Remove UNIV_RELEASE_NOT_YET_STABLE and related checks.
storage/innobase/include/pars0grm.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/pars0pars.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/pars0sym.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/pars0types.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/que0que.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/row0mysql.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/row0sel.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/row0upd.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/trx0trx.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/univ.i:
Applied innodb-5.1-ss475 snapshot.
Remove UNIV_RELEASE_NOT_YET_STABLE and related checks.
When using GCC, use __inline__ instead of inline.
storage/innobase/include/ut0mem.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/lock/lock0lock.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/log/log0recv.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/mem/mem0dbg.c:
Applied innodb-5.1-ss475 snapshot.
Add (void*) cast when using the %p printf format specifier.
storage/innobase/mem/mem0mem.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/os/os0sync.c:
Applied innodb-5.1-ss475 snapshot.
Add (void*) cast when using the %p printf format specifier.
storage/innobase/pars/lexyy.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/pars/make_bison.sh:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/pars/pars0grm.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/pars/pars0grm.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/pars/pars0grm.y:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/pars/pars0lex.l:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/pars/pars0opt.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/pars/pars0pars.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/pars/pars0sym.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/que/que0que.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/row/row0ins.c:
Applied innodb-5.1-ss475 snapshot.
Remove a memory leak when trying to insert a duplicate record to a
clustered inedx comprising more than about 90 columns (Bug#18384).
row_ins_duplicate_error_in_clust(): Call mem_heap_free(heap) at
func_exit if needed.
storage/innobase/row/row0mysql.c:
Applied innodb-5.1-ss475 snapshot.
row_mysql_is_system_table(): Use strncmp, not memcmp, since we
don't know how long the input string is.
storage/innobase/row/row0sel.c:
Applied innodb-5.1-ss475 snapshot.
Remove UNIV_RELEASE_NOT_YET_STABLE and related checks.
row_sel_field_store_in_mysql_format(): Turn the assertions on
mbminlen, mbmaxlen, and templ->type into debug assertions.
fetch_step(): Print a more usefull error message when the cursor is closed.
storage/innobase/row/row0upd.c:
Applied innodb-5.1-ss475 snapshot.
row_upd_index_replace_new_col_vals_index_pos(): Add a parameter
order_only for limiting the replacement to the ordering fields
of the index.
storage/innobase/srv/srv0srv.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/sync/sync0arr.c:
Applied innodb-5.1-ss475 snapshot.
Add (void*) cast when using the %p printf format specifier.
storage/innobase/sync/sync0rw.c:
Applied innodb-5.1-ss475 snapshot.
Add (void*) cast when using the %p printf format specifier.
storage/innobase/sync/sync0sync.c:
Applied innodb-5.1-ss475 snapshot.
Add (void*) cast when using the %p printf format specifier.
storage/innobase/trx/trx0trx.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/ut/Makefile.am:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/ut/ut0mem.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/ut0vec.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/ut0vec.ic:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/pars/make_flex.sh:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/ut/ut0vec.c:
Applied innodb-5.1-ss475 snapshot.
2006-04-23 10:48:31 +02:00
explain select * from t1 where c between 1 and 2500;
2003-05-21 20:39:58 +02:00
id select_type table type possible_keys key key_len ref rows Extra
2003-08-18 23:08:08 +02:00
1 SIMPLE t1 range c c 5 NULL # Using where
2003-04-23 20:52:16 +02:00
update t1 set c=a;
Applied innodb-5.1-ss475 snapshot.
* Fix BUG#15650: "DELETE with LEFT JOIN crashes server with innodb_locks_unsafe_for binlog"
* Fix BUG#17134: "Partitions: uncommitted changes are visible"
* Fix BUG#17992: "Partitions: InnoDB, somehow rotten table after UPDATE"
row0ins.c: MySQL's partitioned table code does not set preduilt->sql_stat_start right
if it does an insert in the same statement after doing a search first in the same
partition table. We now write trx id always to the buffer, not just when flag
sql_stat_start is on. This will waste CPU time very sightly.
* Fix BUG#18077: "InnoDB uses full explicit table locks in stored FUNCTION"
* Fix BUG#18238: "When locks exhaust the buffer pool, InnoDB does not roll back the trx"
* Fix BUG#18252" "Disk space leak in updates of InnoDB BLOB rows in 5.0 and 5.1"
* Fix BUG#18283: "When InnoDB returns error 'lock table full', MySQL can write to binlog too much"
* Fix BUG#18350: "Use consistent read in CREATE ... SELECT ... if innodb_locks_unsafe_for_binlog"
* Fix BUG#18384: "InnoDB memory leak on duplicate key errors in 5.0 if row has many columns"
* Fix BUG#18934: "InnoDB crashes when table uses column names like DB_ROW_ID"
Refuse tables that use reserved column names.
* InnoDB's SQL parser:
- Add support for UNSIGNED types, EXIT keyword, quoted identifiers, user-function callbacks
for processing results of FETCH statements, bound literals, DATA_VARCHAR for bound literals.
- Allow bound literals of type non-INTEGER to be of length 0.
- Add make_flex.sh and update lexer/parser generation documentation.
- Add comment clarifying the difference between 'alias' and 'indirection' fields in sym_node_t.
- Remove never reached duplicate code in pars_set_dfield_type().
- Rewrite pars_info datatypes and APIs, add a few helper functions.
- Since the functions definitions in pars_info_t are accessed after pars_sql() returns
in the query graph execution stage, we can't free pars_info_t in pars_sql(). Instead,
make pars_sql() transfer ownership of pars_info_t to the created query graph, and
make que_graph_free() free it if needed.
- Allow access to system columns like DB_ROW_ID.
* Use bound literals in row_truncate_table_for_mysql, row_drop_table_for_mysql,
row_discard_tablespace_for_mysql, and row_rename_table_for_mysql.
* Setting an isolation level of the transaction to read committed weakens the locks for
this session similarly like the option innodb_locks_unsafe_for binlog. This patch removes
alnost all gap locking (used in next-key locking) and makes MySQL to release the row locks
on the rows which does not belong to result set. Additionally, nonlocking selects on
INSERT INTO SELECT, UPDATE ... (SELECT ...), and CREATE ... SELECT ... use a nonlocking
consistent read. If a binlog is used, then binlog format should be set to row based
binloging to make the execution of the complex SQL statements.
* Disable the statistic variables btr_search_n_hash_fail and n_hash_succ, n_hash_fail,
n_patt_succ, and n_searches of btr_search_t in builds without #ifdef UNIV_SEARCH_PERF_STAT.
* Make innodb.test faster. Group all consistent read test cases to a one test case and
wait their lock timeout after all have been send to the server. Decrease amount of rows
inserted in a certain test - this has no effect on the effectiveness of the test and
reduces the running time by ~10 sec. Remove temporary work-arounds from innodb.result
now that ALTER TABLE DROP FOREIGN KEY works once again.
* Make innodb_unsafe_binlog.test faster. Grout all consistent read test cases to a one
test case amd wait their lock timeout after all have been sent to the server. Remove
unnecessary option --loose_innodb_lock_wait_timeout.
* Print dictionary memory size in SHOW INNODB STATUS.
* Fix memory leaks in row_create_table_for_mysql() in rare corner cases.
* Remove code related to clustered tables. They were never implemented, and the
implementation would be challenging with ROW_FORMAT=COMPACT. Remove the table types
DICT_TABLE_CLUSTER_MEMBER and DICT_TABLE_CLUSTER and all related tests and functions.
dict_table_t: Remove mix_id, mix_len, mix_id_len, mix_id_buf, and cluster_name.
plan_t: Remove mixed_index.
dict_create_sys_tables_tuple(): Set MIX_ID=0, MIX_LEN=0, CLUSTER_NAME=NULL when
inserting into SYS_TABLES.
dict_tree_check_search_tuple(): Enclose in #ifdef UNIV_DEBUG.
* Move calling of thr_local_free() from trx_free_for_mysql() to
innobase_close_connection().
mysql-test/r/innodb.result:
Applied innodb-5.1-ss475 snapshot.
mysql-test/r/innodb_unsafe_binlog.result:
Applied innodb-5.1-ss475 snapshot.
mysql-test/t/innodb-master.opt:
Applied innodb-5.1-ss475 snapshot.
mysql-test/t/innodb.test:
Applied innodb-5.1-ss475 snapshot.
mysql-test/t/innodb_unsafe_binlog-master.opt:
Applied innodb-5.1-ss475 snapshot.
mysql-test/t/innodb_unsafe_binlog.test:
Applied innodb-5.1-ss475 snapshot.
sql/ha_innodb.cc:
Applied innodb-5.1-ss475 snapshot.
Do not use inlined functions in ha_innodb.cc.
Remove assertion ut_error which crashes the mysqld server
if it prints a warning about the adaptive latch.
storage/innobase/Makefile.am:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/btr/btr0btr.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/btr/btr0cur.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/btr/btr0pcur.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/btr/btr0sea.c:
Applied innodb-5.1-ss475 snapshot.
Fix compilation problem with non-C99 compilers.
storage/innobase/buf/buf0lru.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/cmakelists.txt:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/configure.in:
Applied innodb-5.1-ss475 snapshot.
Add disabled-by-default logic to switch GCC to a strict C89-mode.
Add -Werror-implicit-function_declaration to CFLAGS when using gcc.
storage/innobase/data/data0type.c:
Applied innodb-5.1-ss475 snapshot.
dtype_print(): Recognize DATA_FIXBINARY and DATA_BLOB types.
Print known flags from prtype. Use a switch statement instead
of else-if chain.
storage/innobase/dict/dict0crea.c:
Applied innodb-5.1-ss475 snapshot.
Use bound literals in all SQL statements instead of elaborately
constructing correctly allocated and quoted strings to pass the
data in ASCII form.
storage/innobase/dict/dict0dict.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/dict/dict0load.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/dict/dict0mem.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/eval/eval0proc.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/ibuf/ibuf0ibuf.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/btr0cur.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/btr0cur.ic:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/btr0sea.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/buf0lru.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/dict0dict.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/dict0dict.ic:
Applied innodb-5.1-ss475 snapshot.
Remove too strict assertions from some dict_table_t
accessor functions.
storage/innobase/include/dict0mem.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/eval0proc.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/hash0hash.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/lock0lock.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/mem0mem.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/page0page.ic:
Applied innodb-5.1-ss475 snapshot.
Remove UNIV_RELEASE_NOT_YET_STABLE and related checks.
storage/innobase/include/pars0grm.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/pars0pars.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/pars0sym.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/pars0types.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/que0que.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/row0mysql.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/row0sel.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/row0upd.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/trx0trx.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/univ.i:
Applied innodb-5.1-ss475 snapshot.
Remove UNIV_RELEASE_NOT_YET_STABLE and related checks.
When using GCC, use __inline__ instead of inline.
storage/innobase/include/ut0mem.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/lock/lock0lock.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/log/log0recv.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/mem/mem0dbg.c:
Applied innodb-5.1-ss475 snapshot.
Add (void*) cast when using the %p printf format specifier.
storage/innobase/mem/mem0mem.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/os/os0sync.c:
Applied innodb-5.1-ss475 snapshot.
Add (void*) cast when using the %p printf format specifier.
storage/innobase/pars/lexyy.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/pars/make_bison.sh:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/pars/pars0grm.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/pars/pars0grm.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/pars/pars0grm.y:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/pars/pars0lex.l:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/pars/pars0opt.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/pars/pars0pars.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/pars/pars0sym.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/que/que0que.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/row/row0ins.c:
Applied innodb-5.1-ss475 snapshot.
Remove a memory leak when trying to insert a duplicate record to a
clustered inedx comprising more than about 90 columns (Bug#18384).
row_ins_duplicate_error_in_clust(): Call mem_heap_free(heap) at
func_exit if needed.
storage/innobase/row/row0mysql.c:
Applied innodb-5.1-ss475 snapshot.
row_mysql_is_system_table(): Use strncmp, not memcmp, since we
don't know how long the input string is.
storage/innobase/row/row0sel.c:
Applied innodb-5.1-ss475 snapshot.
Remove UNIV_RELEASE_NOT_YET_STABLE and related checks.
row_sel_field_store_in_mysql_format(): Turn the assertions on
mbminlen, mbmaxlen, and templ->type into debug assertions.
fetch_step(): Print a more usefull error message when the cursor is closed.
storage/innobase/row/row0upd.c:
Applied innodb-5.1-ss475 snapshot.
row_upd_index_replace_new_col_vals_index_pos(): Add a parameter
order_only for limiting the replacement to the ordering fields
of the index.
storage/innobase/srv/srv0srv.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/sync/sync0arr.c:
Applied innodb-5.1-ss475 snapshot.
Add (void*) cast when using the %p printf format specifier.
storage/innobase/sync/sync0rw.c:
Applied innodb-5.1-ss475 snapshot.
Add (void*) cast when using the %p printf format specifier.
storage/innobase/sync/sync0sync.c:
Applied innodb-5.1-ss475 snapshot.
Add (void*) cast when using the %p printf format specifier.
storage/innobase/trx/trx0trx.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/ut/Makefile.am:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/ut/ut0mem.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/ut0vec.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/ut0vec.ic:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/pars/make_flex.sh:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/ut/ut0vec.c:
Applied innodb-5.1-ss475 snapshot.
2006-04-23 10:48:31 +02:00
explain select * from t1 where c between 1 and 2500;
2003-05-21 20:39:58 +02:00
id select_type table type possible_keys key key_len ref rows Extra
Applied innodb-5.1-ss677, -ss680, -ss713, and -ss720 snapshots.
All but ss677 are against the mysql-5.1 tree only.
Fixes the following bugs:
- Bug #19834: Using cursors when running in READ-COMMITTED can cause InnoDB to crash
- Bug #20213: DBT2 testing cause mysqld to core using Innodb
- Bug #20493: on partition tables, select and show command casue server crash
- Bug #21113: Duplicate printout in SHOW INNODB STATUS
- Bug #21313: rsql_..._recover_innodb_tmp_table is redundant and broken
- Bug #21467: Manual URL wrong in InnoDB "page corrupted" error report
mysql-test/r/innodb.result:
Applied innodb-5.1-ss677, -ss680, -ss713, and -ss720 snapshots.
All but ss677 are against the mysql-5.1 tree only.
innodb.result: Adjust Innodb_rows_inserted and Innodb_rows_updated
to reflect the deleted statements in r420, which somehow reappeared
in the MySQL tree.
mysql-test/t/innodb.test:
Applied innodb-5.1-ss677, -ss680, -ss713, and -ss720 snapshots.
All but ss677 are against the mysql-5.1 tree only.
sql/ha_innodb.cc:
Applied innodb-5.1-ss677, -ss680, -ss713, and -ss720 snapshots.
All but ss677 are against the mysql-5.1 tree only.
ha_innobase::start_stmt(): patch from Heikki:
Do not call read_view_close_for_mysql(). (Bug #19834)
Fix Bug#20213 and its duplicates: stress test crashes of InnoDB-5.1
Fix Bug #20493 : we must prepare prebuilt->trx to point to the trx of this thd before using it
Add update_thd() to several places in ha_innodb.cc to make sure prebuilt->trx points to the right trx object; in other functions add assertions that prebuilt->trx is for this thd; when 5.1 stabilizes, we can change these assertions to ut_ad() debug version assertions
Remove redundant check_trx_exists() and ut_a() from r701,
as suggested by Marko
Correct all URLs pointing to the MySQL manual. (Bug #21467)
storage/innobase/btr/btr0btr.c:
Applied innodb-5.1-ss677, -ss680, -ss713, and -ss720 snapshots.
All but ss677 are against the mysql-5.1 tree only.
Correct all URLs pointing to the MySQL manual. (Bug #21467)
storage/innobase/buf/buf0buf.c:
Applied innodb-5.1-ss677, -ss680, -ss713, and -ss720 snapshots.
All but ss677 are against the mysql-5.1 tree only.
Correct all URLs pointing to the MySQL manual. (Bug #21467)
storage/innobase/dict/dict0dict.c:
Applied innodb-5.1-ss677, -ss680, -ss713, and -ss720 snapshots.
All but ss677 are against the mysql-5.1 tree only.
Correct all URLs pointing to the MySQL manual. (Bug #21467)
storage/innobase/fil/fil0fil.c:
Applied innodb-5.1-ss677, -ss680, -ss713, and -ss720 snapshots.
All but ss677 are against the mysql-5.1 tree only.
Make the tablespace cache hash size 100 or 1000 times bigger. Fixes bug
#21112.
After ut_print_timestamp(), always display " InnoDB:" (note two spaces).
Correct all URLs pointing to the MySQL manual. (Bug #21467)
storage/innobase/fsp/fsp0fsp.c:
Applied innodb-5.1-ss677, -ss680, -ss713, and -ss720 snapshots.
All but ss677 are against the mysql-5.1 tree only.
Correct all URLs pointing to the MySQL manual. (Bug #21467)
storage/innobase/ibuf/ibuf0ibuf.c:
Applied innodb-5.1-ss677, -ss680, -ss713, and -ss720 snapshots.
All but ss677 are against the mysql-5.1 tree only.
ibuf_print(): Don't print redundant information. Fixes bug #21113.
Remove non-varying variable ibuf->meter and related constant IBUF_THRESHOLD.
storage/innobase/include/btr0cur.ic:
Applied innodb-5.1-ss677, -ss680, -ss713, and -ss720 snapshots.
All but ss677 are against the mysql-5.1 tree only.
btr_cur_get_page(): Remove buggy assertion.
storage/innobase/include/buf0buf.ic:
Applied innodb-5.1-ss677, -ss680, -ss713, and -ss720 snapshots.
All but ss677 are against the mysql-5.1 tree only.
Correct all URLs pointing to the MySQL manual. (Bug #21467)
storage/innobase/include/ibuf0ibuf.ic:
Applied innodb-5.1-ss677, -ss680, -ss713, and -ss720 snapshots.
All but ss677 are against the mysql-5.1 tree only.
Remove non-varying variable ibuf->meter and related constant IBUF_THRESHOLD.
storage/innobase/log/log0log.c:
Applied innodb-5.1-ss677, -ss680, -ss713, and -ss720 snapshots.
All but ss677 are against the mysql-5.1 tree only.
Correct all URLs pointing to the MySQL manual. (Bug #21467)
storage/innobase/log/log0recv.c:
Applied innodb-5.1-ss677, -ss680, -ss713, and -ss720 snapshots.
All but ss677 are against the mysql-5.1 tree only.
Correct all URLs pointing to the MySQL manual. (Bug #21467)
storage/innobase/os/os0file.c:
Applied innodb-5.1-ss677, -ss680, -ss713, and -ss720 snapshots.
All but ss677 are against the mysql-5.1 tree only.
Correct all URLs pointing to the MySQL manual. (Bug #21467)
storage/innobase/row/row0mysql.c:
Applied innodb-5.1-ss677, -ss680, -ss713, and -ss720 snapshots.
All but ss677 are against the mysql-5.1 tree only.
Remove the special treatment of tables
rsql_IDENTIFIER_recover_innodb_tmp_table, which is redundant and
was broken with the introduction of the "safe" file name encoding of
identifiers. (Bug #21313)
ChangeSet@1.2181.173.1 2006-08-02 17:57:06+02:00 ingo@local
Bug#18775 - Temporary table from alter table visible to other threads
Continued implementation of WL#1324 (table name to filename encoding)
Changed back the encoded temp file prefix to #sql.
After ut_print_timestamp(), always display " InnoDB:" (note two spaces).
Correct all URLs pointing to the MySQL manual. (Bug #21467)
storage/innobase/row/row0sel.c:
Applied innodb-5.1-ss677, -ss680, -ss713, and -ss720 snapshots.
All but ss677 are against the mysql-5.1 tree only.
Correct all URLs pointing to the MySQL manual. (Bug #21467)
storage/innobase/row/row0vers.c:
Applied innodb-5.1-ss677, -ss680, -ss713, and -ss720 snapshots.
All but ss677 are against the mysql-5.1 tree only.
row_vers_build_for_semi_consistent_read(): rec_trx_id was uninitialized
in a comparison. Initialize it.
storage/innobase/srv/srv0start.c:
Applied innodb-5.1-ss677, -ss680, -ss713, and -ss720 snapshots.
All but ss677 are against the mysql-5.1 tree only.
Correct all URLs pointing to the MySQL manual. (Bug #21467)
storage/innobase/ut/ut0dbg.c:
Applied innodb-5.1-ss677, -ss680, -ss713, and -ss720 snapshots.
All but ss677 are against the mysql-5.1 tree only.
ut_dbg_assertion_failed(): Print space between timestamp and start of error
message.
After ut_print_timestamp(), always display " InnoDB:" (note two spaces).
Correct all URLs pointing to the MySQL manual. (Bug #21467)
storage/innobase/Makefile.am:
Applied innodb-5.1-ss677, -ss680, -ss713, and -ss720 snapshots.
All but ss677 are against the mysql-5.1 tree only.
2006-08-15 01:42:57 +02:00
1 SIMPLE t1 ALL c NULL NULL NULL # Using where
2003-04-23 20:52:16 +02:00
drop table t1,t2;
2003-12-10 05:31:42 +01:00
create table t1 (id int primary key auto_increment, fk int, index index_fk (fk)) engine=innodb;
2003-04-23 20:52:16 +02:00
insert into t1 (id) values (null),(null),(null),(null),(null);
update t1 set fk=69 where fk is null order by id limit 1;
SELECT * from t1;
id fk
2 NULL
3 NULL
4 NULL
5 NULL
2008-05-07 07:58:21 +02:00
1 69
2003-04-23 20:52:16 +02:00
drop table t1;
create table t1 (a int not null, b int not null, key (a));
insert into t1 values (1,1),(1,2),(1,3),(3,1),(3,2),(3,3),(3,1),(3,2),(3,3),(2,1),(2,2),(2,3);
SET @tmp=0;
update t1 set b=(@tmp:=@tmp+1) order by a;
update t1 set b=99 where a=1 order by b asc limit 1;
update t1 set b=100 where a=1 order by b desc limit 2;
update t1 set a=a+10+b where a=1 order by b;
select * from t1 order by a,b;
a b
2 4
2 5
2 6
3 7
3 8
3 9
3 10
3 11
3 12
13 2
111 100
111 100
2003-05-21 20:39:58 +02:00
drop table t1;
2003-12-19 15:25:50 +01:00
create table t1 ( c char(8) not null ) engine=innodb;
insert into t1 values ('0'),('1'),('2'),('3'),('4'),('5'),('6'),('7'),('8'),('9');
insert into t1 values ('A'),('B'),('C'),('D'),('E'),('F');
alter table t1 add b char(8) not null;
alter table t1 add a char(8) not null;
alter table t1 add primary key (a,b,c);
update t1 set a=c, b=c;
create table t2 (c char(8) not null, b char(8) not null, a char(8) not null, primary key(a,b,c)) engine=innodb;
insert into t2 select * from t1;
delete t1,t2 from t2,t1 where t1.a<'B' and t2.b=t1.b;
drop table t1,t2;
SET AUTOCOMMIT=1;
create table t1 (a integer auto_increment primary key) engine=innodb;
insert into t1 (a) values (NULL),(NULL);
truncate table t1;
insert into t1 (a) values (NULL),(NULL);
SELECT * from t1;
a
2005-01-15 16:38:43 +01:00
1
2
2003-12-19 15:25:50 +01:00
drop table t1;
2004-02-11 00:06:46 +01:00
CREATE TABLE t1 (`id 1` INT NOT NULL, PRIMARY KEY (`id 1`)) ENGINE=INNODB;
CREATE TABLE t2 (id INT PRIMARY KEY, t1_id INT, INDEX par_ind (t1_id), FOREIGN KEY (`t1_id`) REFERENCES `t1`(`id 1`) ON DELETE CASCADE ) ENGINE=INNODB;
2004-02-02 00:30:59 +01:00
drop table t2,t1;
2004-02-22 09:04:08 +01:00
create table `t1` (`id` int( 11 ) not null ,primary key ( `id` )) engine = innodb;
2004-02-22 08:58:51 +01:00
insert into `t1`values ( 1 ) ;
2004-02-22 09:04:08 +01:00
create table `t2` (`id` int( 11 ) not null default '0',unique key `id` ( `id` ) ,constraint `t1_id_fk` foreign key ( `id` ) references `t1` (`id` )) engine = innodb;
2004-02-22 08:58:51 +01:00
insert into `t2`values ( 1 ) ;
2004-02-22 09:04:08 +01:00
create table `t3` (`id` int( 11 ) not null default '0',key `id` ( `id` ) ,constraint `t2_id_fk` foreign key ( `id` ) references `t2` (`id` )) engine = innodb;
2004-02-22 08:58:51 +01:00
insert into `t3`values ( 1 ) ;
delete t3,t2,t1 from t1,t2,t3 where t1.id =1 and t2.id = t1.id and t3.id = t2.id;
Applied innodb-5.1-ss594 snapshot.
Fixed BUG#19542 "InnoDB doesn't increase the Handler_read_prev couter".
Fixed BUG#19609 "Case sensitivity of innodb_data_file_path gives stupid error".
Fixed BUG#19727 "InnoDB crashed server and crashed tables are ot recoverable".
Also:
* Remove remnants of the obsolete concept of memoryfixing tables and indexes.
* Remove unused dict_table_LRU_trim().
* Remove unused 'trx' parameter from dict_table_get_on_id_low(),
dict_table_get(), dict_table_get_and_increment_handle_count().
* Add a normal linked list implementation.
* Add a work queue implementation.
* Add 'level' parameter to mutex_create() and rw_lock_create().
Remove mutex_set_level() and rw_lock_set_level().
* Rename SYNC_LEVEL_NONE to SYNC_LEVEL_VARYING.
* Add support for bound ids in InnoDB's parser.
* Define UNIV_BTR_DEBUG for enabling consistency checks of
FIL_PAGE_NEXT and FIL_PAGE_PREV when accessing sibling
pages of B-tree indexes.
btr_validate_level(): Check the validity of the doubly linked
list formed by FIL_PAGE_NEXT and FIL_PAGE_PREV.
* Adapt InnoDB to the new tablename to filename encoding in MySQL 5.1.
ut_print_name(), ut_print_name1(): Add parameter 'table_id' for
distinguishing names of tables from other identifiers.
New: innobase_convert_from_table_id(), innobase_convert_from_id(),
innobase_convert_from_filename(), innobase_get_charset.
dict_accept(), dict_scan_id(), dict_scan_col(), dict_scan_table_name(),
dict_skip_word(), dict_create_foreign_constraints_low(): Add
parameter 'cs' so that isspace() can be replaced with my_isspace(),
whose operation depends on the connection character set.
dict_scan_id(): Convert identifier to UTF-8.
dict_str_starts_with_keyword(): New extern function, to replace
dict_accept() in row_search_for_mysql().
mysql_get_identifier_quote_char(): Replaced with innobase_print_identifier().
ha_innobase::create(): Remove the thd->convert_strin() call. Pass the
statement to InnoDB in the connection character set and let InnoDB
convert the identifier to UTF-8.
* Add max_row_size to dict_table_t.
* btr0cur.c
btr_copy_externally_stored_field(): Only set the 'offset' variable
when needed.
* buf0buf.c
buf_page_io_complete(): Write to the error log if the page number or
the space id o the disk do not match those in memory. Also write to
the error log if a page was read from the doublewrite buffer. The
doublewrite buffer should be only read by the lower-level function
fil_io() at database startup.
* dict0dict.c
dict_scan_table_name(): Remove fallback to differently encoded name
when the table is not found. The encoding is handled at a higher level.
* ha_innodb.cc
Increment statistic counter in ha_innobase::index_prev() (bug 19542).
Add innobase_convert_string wrapper function and a new file
ha_prototypes.h.
innobase_print_identifier(): Remove TODO comment before calling
get_quote_char_for_identifier(). That function apparently assumes
the identifier to be encoded in UTF-8.
* ibuf0ibuf.c|h
ibuf_count_get(), ibuf_counts[], ibuf_count_inited(): Define these
only #ifdef UNIV_IBUF_DEBUG. Previously, when compiled without
UNIV_IBUF_DEBUG, invoking ibuf_count_get() would crash InnoDB.
The function is only being called #ifdef UNIV_IBUF_DEBUG.
* innodb.result
Adjust the results for changes in the foreign key error messages.
* mem0mem.c|h
New: mem_heap_dup(), mem_heap_printf(), mem_heap_cat().
* os0file.c
Check the page trailers also after writing to disk. This improves
chances of diagnosing bug 18886.
os_file_check_page_trailers(): New function for checking that the
two copies of the LSN stamped on the page match.
os_aio_simulated_handle(): Call os_file_check_page_trailers()
before and after os_file_write().
* row0mysql.c
Move trx_commit_for_mysql(trx) calls before calls to
row_mysql_unlock_data_dictionary(trx) (bug 19727).
* row0sel.c
row_fetch_print(): Handle SQL NULL values without crashing.
row_sel_store_mysql_rec(): Remove useless call to rec_get_nth_field
when handling an externally stored column.
Fetch externally stored fields when using InnoDB's internal SQL
parser.
Optimize BLOB selects by using prebuilt->blob_heap directly instead
of first reading BLOB data to a temporary heap and then copying it
to prebuilt->blob_heap.
* srv0srv.c
srv_master_thread(): Remove unreachable code.
* srv0start.c
srv_parse_data_file_paths_and_sizes(): Accept lower-case 'm' and
'g' as abbreviations of megabyte and gigabyte (bug 19609).
srv_parse_megabytes(): New fuction.
* ut0dbg.c|h
Implement InnoDB assertions (ut_a and ut_error) with abort() when
the code is compiled with GCC 3 or later on other platforms than
Windows or Netware. Also disable the variable ut_dbg_stop_threads
and the function ut_dbg_stop_thread() i this case, unless
UNIV_SYC_DEBUG is defined. This should allow the compiler to
generate more compact code for assertions.
* ut0list.c|h
Add ib_list_create_heap().
mysql-test/r/innodb.result:
Applied innodb-5.1-ss594 snapshot.
mysql-test/t/innodb.test:
Copy the comment from the beginning of the file
to the end because MySQL developers continue
adding test cases to this file.
sql/ha_innodb.cc:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/CMakeLists.txt:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/Makefile.am:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/btr/btr0btr.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/btr/btr0cur.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/btr/btr0pcur.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/btr/btr0sea.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/buf/buf0buf.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/buf/buf0flu.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/data/data0type.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/dict/dict0crea.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/dict/dict0dict.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/dict/dict0load.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/dict/dict0mem.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/fil/fil0fil.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/ha/hash0hash.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/ibuf/ibuf0ibuf.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/data0type.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/dict0dict.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/dict0dict.ic:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/dict0mem.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/fil0fil.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/fsp0fsp.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/ibuf0ibuf.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/mem0mem.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/pars0pars.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/pars0sym.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/pars0types.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/rem0rec.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/row0purge.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/row0undo.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/srv0srv.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/sync0rw.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/sync0sync.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/univ.i:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/ut0dbg.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/ut0ut.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/lock/lock0lock.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/log/log0log.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/log/log0recv.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/mem/mem0dbg.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/mem/mem0mem.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/mem/mem0pool.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/os/os0file.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/os/os0thread.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/pars/lexyy.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/pars/pars0lex.l:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/pars/pars0pars.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/pars/pars0sym.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/row/row0ins.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/row/row0mysql.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/row/row0purge.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/row/row0row.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/row/row0sel.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/row/row0upd.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/srv/srv0srv.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/srv/srv0start.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/sync/sync0arr.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/sync/sync0rw.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/sync/sync0sync.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/thr/thr0loc.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/trx/trx0purge.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/trx/trx0rec.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/trx/trx0roll.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/trx/trx0rseg.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/trx/trx0sys.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/trx/trx0trx.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/ut/Makefile.am:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/ut/ut0dbg.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/ut/ut0ut.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/ha_prototypes.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/ut0list.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/ut0list.ic:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/ut0wqueue.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/ut/ut0list.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/ut/ut0wqueue.c:
Applied innodb-5.1-ss594 snapshot.
2006-06-01 08:34:04 +02:00
ERROR 23000: Cannot delete or update a parent row: a foreign key constraint fails (`test`.`t2`, CONSTRAINT `t1_id_fk` FOREIGN KEY (`id`) REFERENCES `t1` (`id`))
2004-02-22 08:58:51 +01:00
update t1,t2,t3 set t3.id=5, t2.id=6, t1.id=7 where t1.id =1 and t2.id = t1.id and t3.id = t2.id;
Applied innodb-5.1-ss594 snapshot.
Fixed BUG#19542 "InnoDB doesn't increase the Handler_read_prev couter".
Fixed BUG#19609 "Case sensitivity of innodb_data_file_path gives stupid error".
Fixed BUG#19727 "InnoDB crashed server and crashed tables are ot recoverable".
Also:
* Remove remnants of the obsolete concept of memoryfixing tables and indexes.
* Remove unused dict_table_LRU_trim().
* Remove unused 'trx' parameter from dict_table_get_on_id_low(),
dict_table_get(), dict_table_get_and_increment_handle_count().
* Add a normal linked list implementation.
* Add a work queue implementation.
* Add 'level' parameter to mutex_create() and rw_lock_create().
Remove mutex_set_level() and rw_lock_set_level().
* Rename SYNC_LEVEL_NONE to SYNC_LEVEL_VARYING.
* Add support for bound ids in InnoDB's parser.
* Define UNIV_BTR_DEBUG for enabling consistency checks of
FIL_PAGE_NEXT and FIL_PAGE_PREV when accessing sibling
pages of B-tree indexes.
btr_validate_level(): Check the validity of the doubly linked
list formed by FIL_PAGE_NEXT and FIL_PAGE_PREV.
* Adapt InnoDB to the new tablename to filename encoding in MySQL 5.1.
ut_print_name(), ut_print_name1(): Add parameter 'table_id' for
distinguishing names of tables from other identifiers.
New: innobase_convert_from_table_id(), innobase_convert_from_id(),
innobase_convert_from_filename(), innobase_get_charset.
dict_accept(), dict_scan_id(), dict_scan_col(), dict_scan_table_name(),
dict_skip_word(), dict_create_foreign_constraints_low(): Add
parameter 'cs' so that isspace() can be replaced with my_isspace(),
whose operation depends on the connection character set.
dict_scan_id(): Convert identifier to UTF-8.
dict_str_starts_with_keyword(): New extern function, to replace
dict_accept() in row_search_for_mysql().
mysql_get_identifier_quote_char(): Replaced with innobase_print_identifier().
ha_innobase::create(): Remove the thd->convert_strin() call. Pass the
statement to InnoDB in the connection character set and let InnoDB
convert the identifier to UTF-8.
* Add max_row_size to dict_table_t.
* btr0cur.c
btr_copy_externally_stored_field(): Only set the 'offset' variable
when needed.
* buf0buf.c
buf_page_io_complete(): Write to the error log if the page number or
the space id o the disk do not match those in memory. Also write to
the error log if a page was read from the doublewrite buffer. The
doublewrite buffer should be only read by the lower-level function
fil_io() at database startup.
* dict0dict.c
dict_scan_table_name(): Remove fallback to differently encoded name
when the table is not found. The encoding is handled at a higher level.
* ha_innodb.cc
Increment statistic counter in ha_innobase::index_prev() (bug 19542).
Add innobase_convert_string wrapper function and a new file
ha_prototypes.h.
innobase_print_identifier(): Remove TODO comment before calling
get_quote_char_for_identifier(). That function apparently assumes
the identifier to be encoded in UTF-8.
* ibuf0ibuf.c|h
ibuf_count_get(), ibuf_counts[], ibuf_count_inited(): Define these
only #ifdef UNIV_IBUF_DEBUG. Previously, when compiled without
UNIV_IBUF_DEBUG, invoking ibuf_count_get() would crash InnoDB.
The function is only being called #ifdef UNIV_IBUF_DEBUG.
* innodb.result
Adjust the results for changes in the foreign key error messages.
* mem0mem.c|h
New: mem_heap_dup(), mem_heap_printf(), mem_heap_cat().
* os0file.c
Check the page trailers also after writing to disk. This improves
chances of diagnosing bug 18886.
os_file_check_page_trailers(): New function for checking that the
two copies of the LSN stamped on the page match.
os_aio_simulated_handle(): Call os_file_check_page_trailers()
before and after os_file_write().
* row0mysql.c
Move trx_commit_for_mysql(trx) calls before calls to
row_mysql_unlock_data_dictionary(trx) (bug 19727).
* row0sel.c
row_fetch_print(): Handle SQL NULL values without crashing.
row_sel_store_mysql_rec(): Remove useless call to rec_get_nth_field
when handling an externally stored column.
Fetch externally stored fields when using InnoDB's internal SQL
parser.
Optimize BLOB selects by using prebuilt->blob_heap directly instead
of first reading BLOB data to a temporary heap and then copying it
to prebuilt->blob_heap.
* srv0srv.c
srv_master_thread(): Remove unreachable code.
* srv0start.c
srv_parse_data_file_paths_and_sizes(): Accept lower-case 'm' and
'g' as abbreviations of megabyte and gigabyte (bug 19609).
srv_parse_megabytes(): New fuction.
* ut0dbg.c|h
Implement InnoDB assertions (ut_a and ut_error) with abort() when
the code is compiled with GCC 3 or later on other platforms than
Windows or Netware. Also disable the variable ut_dbg_stop_threads
and the function ut_dbg_stop_thread() i this case, unless
UNIV_SYC_DEBUG is defined. This should allow the compiler to
generate more compact code for assertions.
* ut0list.c|h
Add ib_list_create_heap().
mysql-test/r/innodb.result:
Applied innodb-5.1-ss594 snapshot.
mysql-test/t/innodb.test:
Copy the comment from the beginning of the file
to the end because MySQL developers continue
adding test cases to this file.
sql/ha_innodb.cc:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/CMakeLists.txt:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/Makefile.am:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/btr/btr0btr.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/btr/btr0cur.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/btr/btr0pcur.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/btr/btr0sea.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/buf/buf0buf.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/buf/buf0flu.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/data/data0type.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/dict/dict0crea.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/dict/dict0dict.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/dict/dict0load.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/dict/dict0mem.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/fil/fil0fil.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/ha/hash0hash.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/ibuf/ibuf0ibuf.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/data0type.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/dict0dict.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/dict0dict.ic:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/dict0mem.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/fil0fil.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/fsp0fsp.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/ibuf0ibuf.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/mem0mem.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/pars0pars.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/pars0sym.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/pars0types.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/rem0rec.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/row0purge.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/row0undo.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/srv0srv.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/sync0rw.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/sync0sync.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/univ.i:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/ut0dbg.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/ut0ut.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/lock/lock0lock.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/log/log0log.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/log/log0recv.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/mem/mem0dbg.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/mem/mem0mem.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/mem/mem0pool.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/os/os0file.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/os/os0thread.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/pars/lexyy.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/pars/pars0lex.l:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/pars/pars0pars.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/pars/pars0sym.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/row/row0ins.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/row/row0mysql.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/row/row0purge.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/row/row0row.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/row/row0sel.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/row/row0upd.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/srv/srv0srv.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/srv/srv0start.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/sync/sync0arr.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/sync/sync0rw.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/sync/sync0sync.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/thr/thr0loc.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/trx/trx0purge.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/trx/trx0rec.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/trx/trx0roll.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/trx/trx0rseg.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/trx/trx0sys.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/trx/trx0trx.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/ut/Makefile.am:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/ut/ut0dbg.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/ut/ut0ut.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/ha_prototypes.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/ut0list.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/ut0list.ic:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/ut0wqueue.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/ut/ut0list.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/ut/ut0wqueue.c:
Applied innodb-5.1-ss594 snapshot.
2006-06-01 08:34:04 +02:00
ERROR 23000: Cannot delete or update a parent row: a foreign key constraint fails (`test`.`t2`, CONSTRAINT `t1_id_fk` FOREIGN KEY (`id`) REFERENCES `t1` (`id`))
2004-02-22 08:58:51 +01:00
update t3 set t3.id=7 where t1.id =1 and t2.id = t1.id and t3.id = t2.id;
Implementation of WL#2486 -
"Process NATURAL and USING joins according to SQL:2003".
* Some of the main problems fixed by the patch:
- in "select *" queries the * expanded correctly according to
ANSI for arbitrary natural/using joins
- natural/using joins are correctly transformed into JOIN ... ON
for any number/nesting of the joins.
- column references are correctly resolved against natural joins
of any nesting and combined with arbitrary other joins.
* This patch also contains a fix for name resolution of items
inside the ON condition of JOIN ... ON - in this case items must
be resolved only against the JOIN operands. To support such
'local' name resolution, the patch introduces a stack of
name resolution contexts used at parse time.
NOTICE:
- This patch is not complete in the sense that
- there are 2 test cases that still do not pass -
one in join.test, one in select.test. Both are marked
with a comment "TODO: WL#2486".
- it does not include a new test specific for the task
mysql-test/include/ps_query.inc:
Adjusted according to standard NATURAL/USING join semantics.,
mysql-test/r/bdb.result:
Adjusted according to standard NATURAL/USING join semantics.
mysql-test/r/derived.result:
Adjusted according to standard NATURAL/USING join semantics.
mysql-test/r/errors.result:
The column as a whole cannot be resolved, so different error message.
mysql-test/r/fulltext.result:
Adjusted according to standard JOIN ... ON semantics =>
the ON condition can refer only to the join operands.
mysql-test/r/fulltext_order_by.result:
More detailed error message.
mysql-test/r/innodb.result:
Adjusted according to standard NATURAL/USING join semantics.
This test doesn't pass completetly yet!
mysql-test/r/insert_select.result:
More detailed error message.
mysql-test/r/join.result:
Adjusted according to standard NATURAL/USING join semantics.
NOTICE: there is one test case that still fails, and it is
commeted out and marked with WL#2486 in the test file.
mysql-test/r/join_crash.result:
Adjusted according to standard NATURAL/USING join semantics.
mysql-test/r/join_nested.result:
Adjusted according to standard NATURAL/USING join semantics.
mysql-test/r/join_outer.result:
Adjusted according to standard NATURAL/USING join semantics.
mysql-test/r/multi_update.result:
Adjusted according to standard NATURAL/USING join semantics.
mysql-test/r/null_key.result:
Adjusted according to standard NATURAL/USING join semantics.
mysql-test/r/order_by.result:
Adjusted according to standard NATURAL/USING join semantics.
mysql-test/r/ps_2myisam.result:
Adjusted according to standard NATURAL/USING join semantics.
mysql-test/r/ps_3innodb.result:
Adjusted according to standard NATURAL/USING join semantics.
mysql-test/r/ps_4heap.result:
Adjusted according to standard NATURAL/USING join semantics.
mysql-test/r/ps_5merge.result:
Adjusted according to standard NATURAL/USING join semantics.
mysql-test/r/ps_6bdb.result:
Adjusted according to standard NATURAL/USING join semantics.
mysql-test/r/ps_7ndb.result:
Adjusted according to standard NATURAL/USING join semantics.
mysql-test/r/select.result:
Adjusted according to standard NATURAL/USING join semantics.
NOTICE: there is one failing test case which is commented with
WL#2486 in the test file.
mysql-test/r/subselect.result:
Adjusted according to standard NATURAL/USING join semantics.
mysql-test/r/type_ranges.result:
Adjusted according to standard NATURAL/USING join semantics.
mysql-test/r/union.result:
More detailed error message.
mysql-test/t/bdb.test:
Adjusted according to standard NATURAL/USING join semantics.
mysql-test/t/errors.test:
Adjusted according to standard NATURAL/USING join semantics.
mysql-test/t/fulltext.test:
Adjusted according to standard JOIN ... ON semantics =>
the ON condition can refer only to the join operands.
mysql-test/t/fulltext_order_by.test:
More detailed error message.
mysql-test/t/innodb.test:
Adjusted according to standard NATURAL/USING join semantics.
This test doesn't pass completetly yet!
mysql-test/t/insert_select.test:
More detailed error message.
mysql-test/t/join.test:
Adjusted according to standard NATURAL/USING join semantics.
NOTICE: there is one test case that still fails, and it is
commeted out and marked with WL#2486 in the test file.
mysql-test/t/join_crash.test:
Adjusted according to standard NATURAL/USING join semantics.
mysql-test/t/join_nested.test:
Adjusted according to standard NATURAL/USING join semantics.
mysql-test/t/join_outer.test:
Adjusted according to standard NATURAL/USING join semantics.
mysql-test/t/null_key.test:
Adjusted according to standard NATURAL/USING join semantics.
mysql-test/t/order_by.test:
Adjusted according to standard NATURAL/USING join semantics.
mysql-test/t/select.test:
Adjusted according to standard NATURAL/USING join semantics.
NOTICE: there is one test case that still fails, and it is
commeted out and marked with WL#2486 in the test file.
mysql-test/t/subselect.test:
Adjusted according to standard NATURAL/USING join semantics.
mysql-test/t/type_ranges.test:
Adjusted according to standard NATURAL/USING join semantics.
mysql-test/t/union.test:
More detailed error message.
sql/item.cc:
- extra parameter to find_field_in_tables
- find_field_in_real_table renamed to find_field_in_table
- fixed comments/typos
sql/item.h:
- added [first | last]_name_resolution_table to class
Name_resolution_context
- commented old code
- standardized formatting
sql/mysql_priv.h:
- refactored the find_field_in_XXX procedures,
- added a new procedure for natural join table references,
- renamed the find_field_in_XXX procedures to clearer names
sql/sp.cc:
- pass the top-most list of the FROM clause to setup_tables
- extra parameter to find_field_in_tables
sql/sql_acl.cc:
- renamed find_field_in_table => find_field_in_table_ref
- extra parameter to find_field_in_table_ref
- commented old code
sql/sql_base.cc:
This file contains the core of the implementation of the processing
of NATURAL/USING joins (WL#2486).
- added many comments to old code
- refactored the group of find_field_in_XXX procedures, and added a
new procedure for natural joins. There is one find_field_in_XXX procedure
per each type of table reference (stored table, merge view, or natural
join); one meta-procedure that selects the correct one depeneding on the
table reference; and one procedure that goes over a list of table
referenes.
- NATURAL/USING joins are processed through the procedures:
mark_common_columns, store_natural_using_join_columns,
store_top_level_join_columns, setup_natural_join_row_types.
The entry point to processing NATURAL/USING joins is the
procedure 'setup_natural_join_row_types'.
- Replaced the specialized Field_iterator_XXX iterators with one
generic iterator over the fields of a table reference.
- Simplified 'insert_fields' and 'setup_conds' due to encapsulation of
the processing of natural joins in a separate set of procedures.
sql/sql_class.h:
- Commented old code.
sql/sql_delete.cc:
- Pass the FROM clause to setup_tables.
sql/sql_help.cc:
- pass the end name resolution table to find_field_in_tables
- adjust the list of tables for name resolution
sql/sql_insert.cc:
- Changed the code that saves and restores the current context to
support the list of tables for name resolution -
context->first_name_resolution_table, and
table_list->next_name_resolution_table.
Needed to support an ugly trick to resolve inserted columns only in
the first table.
- Added Name_resolution_context::[first | last]_name_resolution_table.
- Commented old code
sql/sql_lex.cc:
- set select_lex.parent_lex correctly
- set correct state of the current name resolution context
sql/sql_lex.h:
- Added a stack of name resolution contexts to support local
contexts for JOIN ... ON conditions.
- Commented old code.
sql/sql_load.cc:
- Pass the FROM clause to setup_tables.
sql/sql_olap.cc:
- Pass the FROM clause to setup_tables.
sql/sql_parse.cc:
- correctly set SELECT_LEX::parent_lex
- set the first table of the current name resoltion context
- added support for NATURAL/USING joins
- commented old code
sql/sql_select.cc:
- Pass the FROM clause to setup_tables.
- Pass the end table to find_field_in_tables
- Improved comments
sql/sql_show.cc:
- Set SELECT_LEX::parent_lex.
sql/sql_update.cc:
- Pass the FROM clause to setup_tables.
sql/sql_yacc.yy:
- Added support for a stack of name resolution contexts needed to
implement name resolution for JOIN ... ON. A context is pushed
for each new JOIN ... ON, and popped afterwards.
- Added support for NATURAL/USING joins.
sql/table.cc:
- Added new class Natural_join_column to hide the heterogeneous
representation of column references for stored tables and for
views.
- Added a new list TABLE_LIST::next_name_resolution_table to
support name resolution with NATURAL/USING joins. Also added
other members to TABLE_LIST to support NATURAL/USING joins.
- Added a generic iterator over the fields of table references
of various types - class Field_iterator_table_ref
sql/table.h:
- Added new class Natural_join_column to hide the heterogeneous
representation of column references for stored tables and for
views.
- Added a new list TABLE_LIST::next_name_resolution_table to
support name resolution with NATURAL/USING joins. Also added
other members to TABLE_LIST to support NATURAL/USING joins.
- Added a generic iterator over the fields of table references
of various types - class Field_iterator_table_ref
tests/mysql_client_test.c:
Adjusted according to standard NATURAL JOIN syntax.
2005-08-12 16:57:19 +02:00
ERROR 42S22: Unknown column 't1.id' in 'where clause'
2004-02-22 08:58:51 +01:00
drop table t3,t2,t1;
2004-07-20 11:00:10 +02:00
create table t1(
id int primary key,
pid int,
index(pid),
foreign key(pid) references t1(id) on delete cascade) engine=innodb;
insert into t1 values(0,0),(1,0),(2,1),(3,2),(4,3),(5,4),(6,5),(7,6),
(8,7),(9,8),(10,9),(11,10),(12,11),(13,12),(14,13),(15,14);
delete from t1 where id=0;
Applied innodb-5.1-ss594 snapshot.
Fixed BUG#19542 "InnoDB doesn't increase the Handler_read_prev couter".
Fixed BUG#19609 "Case sensitivity of innodb_data_file_path gives stupid error".
Fixed BUG#19727 "InnoDB crashed server and crashed tables are ot recoverable".
Also:
* Remove remnants of the obsolete concept of memoryfixing tables and indexes.
* Remove unused dict_table_LRU_trim().
* Remove unused 'trx' parameter from dict_table_get_on_id_low(),
dict_table_get(), dict_table_get_and_increment_handle_count().
* Add a normal linked list implementation.
* Add a work queue implementation.
* Add 'level' parameter to mutex_create() and rw_lock_create().
Remove mutex_set_level() and rw_lock_set_level().
* Rename SYNC_LEVEL_NONE to SYNC_LEVEL_VARYING.
* Add support for bound ids in InnoDB's parser.
* Define UNIV_BTR_DEBUG for enabling consistency checks of
FIL_PAGE_NEXT and FIL_PAGE_PREV when accessing sibling
pages of B-tree indexes.
btr_validate_level(): Check the validity of the doubly linked
list formed by FIL_PAGE_NEXT and FIL_PAGE_PREV.
* Adapt InnoDB to the new tablename to filename encoding in MySQL 5.1.
ut_print_name(), ut_print_name1(): Add parameter 'table_id' for
distinguishing names of tables from other identifiers.
New: innobase_convert_from_table_id(), innobase_convert_from_id(),
innobase_convert_from_filename(), innobase_get_charset.
dict_accept(), dict_scan_id(), dict_scan_col(), dict_scan_table_name(),
dict_skip_word(), dict_create_foreign_constraints_low(): Add
parameter 'cs' so that isspace() can be replaced with my_isspace(),
whose operation depends on the connection character set.
dict_scan_id(): Convert identifier to UTF-8.
dict_str_starts_with_keyword(): New extern function, to replace
dict_accept() in row_search_for_mysql().
mysql_get_identifier_quote_char(): Replaced with innobase_print_identifier().
ha_innobase::create(): Remove the thd->convert_strin() call. Pass the
statement to InnoDB in the connection character set and let InnoDB
convert the identifier to UTF-8.
* Add max_row_size to dict_table_t.
* btr0cur.c
btr_copy_externally_stored_field(): Only set the 'offset' variable
when needed.
* buf0buf.c
buf_page_io_complete(): Write to the error log if the page number or
the space id o the disk do not match those in memory. Also write to
the error log if a page was read from the doublewrite buffer. The
doublewrite buffer should be only read by the lower-level function
fil_io() at database startup.
* dict0dict.c
dict_scan_table_name(): Remove fallback to differently encoded name
when the table is not found. The encoding is handled at a higher level.
* ha_innodb.cc
Increment statistic counter in ha_innobase::index_prev() (bug 19542).
Add innobase_convert_string wrapper function and a new file
ha_prototypes.h.
innobase_print_identifier(): Remove TODO comment before calling
get_quote_char_for_identifier(). That function apparently assumes
the identifier to be encoded in UTF-8.
* ibuf0ibuf.c|h
ibuf_count_get(), ibuf_counts[], ibuf_count_inited(): Define these
only #ifdef UNIV_IBUF_DEBUG. Previously, when compiled without
UNIV_IBUF_DEBUG, invoking ibuf_count_get() would crash InnoDB.
The function is only being called #ifdef UNIV_IBUF_DEBUG.
* innodb.result
Adjust the results for changes in the foreign key error messages.
* mem0mem.c|h
New: mem_heap_dup(), mem_heap_printf(), mem_heap_cat().
* os0file.c
Check the page trailers also after writing to disk. This improves
chances of diagnosing bug 18886.
os_file_check_page_trailers(): New function for checking that the
two copies of the LSN stamped on the page match.
os_aio_simulated_handle(): Call os_file_check_page_trailers()
before and after os_file_write().
* row0mysql.c
Move trx_commit_for_mysql(trx) calls before calls to
row_mysql_unlock_data_dictionary(trx) (bug 19727).
* row0sel.c
row_fetch_print(): Handle SQL NULL values without crashing.
row_sel_store_mysql_rec(): Remove useless call to rec_get_nth_field
when handling an externally stored column.
Fetch externally stored fields when using InnoDB's internal SQL
parser.
Optimize BLOB selects by using prebuilt->blob_heap directly instead
of first reading BLOB data to a temporary heap and then copying it
to prebuilt->blob_heap.
* srv0srv.c
srv_master_thread(): Remove unreachable code.
* srv0start.c
srv_parse_data_file_paths_and_sizes(): Accept lower-case 'm' and
'g' as abbreviations of megabyte and gigabyte (bug 19609).
srv_parse_megabytes(): New fuction.
* ut0dbg.c|h
Implement InnoDB assertions (ut_a and ut_error) with abort() when
the code is compiled with GCC 3 or later on other platforms than
Windows or Netware. Also disable the variable ut_dbg_stop_threads
and the function ut_dbg_stop_thread() i this case, unless
UNIV_SYC_DEBUG is defined. This should allow the compiler to
generate more compact code for assertions.
* ut0list.c|h
Add ib_list_create_heap().
mysql-test/r/innodb.result:
Applied innodb-5.1-ss594 snapshot.
mysql-test/t/innodb.test:
Copy the comment from the beginning of the file
to the end because MySQL developers continue
adding test cases to this file.
sql/ha_innodb.cc:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/CMakeLists.txt:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/Makefile.am:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/btr/btr0btr.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/btr/btr0cur.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/btr/btr0pcur.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/btr/btr0sea.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/buf/buf0buf.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/buf/buf0flu.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/data/data0type.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/dict/dict0crea.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/dict/dict0dict.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/dict/dict0load.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/dict/dict0mem.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/fil/fil0fil.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/ha/hash0hash.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/ibuf/ibuf0ibuf.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/data0type.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/dict0dict.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/dict0dict.ic:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/dict0mem.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/fil0fil.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/fsp0fsp.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/ibuf0ibuf.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/mem0mem.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/pars0pars.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/pars0sym.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/pars0types.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/rem0rec.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/row0purge.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/row0undo.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/srv0srv.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/sync0rw.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/sync0sync.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/univ.i:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/ut0dbg.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/ut0ut.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/lock/lock0lock.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/log/log0log.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/log/log0recv.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/mem/mem0dbg.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/mem/mem0mem.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/mem/mem0pool.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/os/os0file.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/os/os0thread.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/pars/lexyy.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/pars/pars0lex.l:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/pars/pars0pars.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/pars/pars0sym.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/row/row0ins.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/row/row0mysql.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/row/row0purge.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/row/row0row.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/row/row0sel.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/row/row0upd.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/srv/srv0srv.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/srv/srv0start.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/sync/sync0arr.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/sync/sync0rw.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/sync/sync0sync.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/thr/thr0loc.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/trx/trx0purge.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/trx/trx0rec.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/trx/trx0roll.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/trx/trx0rseg.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/trx/trx0sys.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/trx/trx0trx.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/ut/Makefile.am:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/ut/ut0dbg.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/ut/ut0ut.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/ha_prototypes.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/ut0list.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/ut0list.ic:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/ut0wqueue.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/ut/ut0list.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/ut/ut0wqueue.c:
Applied innodb-5.1-ss594 snapshot.
2006-06-01 08:34:04 +02:00
ERROR 23000: Cannot delete or update a parent row: a foreign key constraint fails (`test`.`t1`, CONSTRAINT `t1_ibfk_1` FOREIGN KEY (`pid`) REFERENCES `t1` (`id`) ON DELETE CASCADE)
2004-07-20 11:00:10 +02:00
delete from t1 where id=15;
delete from t1 where id=0;
drop table t1;
2003-12-10 05:31:42 +01:00
CREATE TABLE t1 (col1 int(1))ENGINE=InnoDB;
2003-07-21 00:32:35 +02:00
CREATE TABLE t2 (col1 int(1),stamp TIMESTAMP,INDEX stamp_idx
2003-12-10 05:31:42 +01:00
(stamp))ENGINE=InnoDB;
2003-04-21 20:03:32 +02:00
insert into t1 values (1),(2),(3);
2003-12-19 15:25:50 +01:00
insert into t2 values (1, 20020204130000),(2, 20020204130000),(4,20020204310000 ),(5,20020204230000);
Warnings:
After merge fixes
Added more DBUG statements
Ensure that we are comparing end space with BINARY strings
Use 'any_db' instead of '' to mean any database. (For HANDLER command)
Only strip ' ' when comparing CHAR, not other space-like characters (like \t)
BitKeeper/deleted/.del-ctype_tis620.result-old~3578ceb0b8284685:
Delete: mysql-test/r/ctype_tis620.result-old
BitKeeper/deleted/.del-ctype_tis620.test-old~ffb1bbd2935d1aba:
Delete: mysql-test/t/ctype_tis620.test-old
client/mysqlbinlog.cc:
Added DBUG statements
Added call of my_end() to free all used memory on exit
heap/hp_info.c:
After merge fixes
heap/hp_open.c:
After merge fixes
include/heap.h:
After merge fixes
include/m_ctype.h:
Use pchar instead of 'int' for character parameters.
Added 'my_binary_compare()'
include/m_string.h:
Fixed wrong define
innobase/ibuf/ibuf0ibuf.c:
After merge fixes
innobase/srv/srv0start.c:
After merge fixes
mysql-test/r/alter_table.result:
Fixed results after merge
mysql-test/r/auto_increment.result:
Fixed results after merge
mysql-test/r/bdb.result:
Fixed results after merge
mysql-test/r/binary.result:
Fixed results after merge
mysql-test/r/create.result:
Fixed results after merge
mysql-test/r/ctype_mb.result:
Fixed results after merge
mysql-test/r/ctype_tis620.result:
Fixed results after merge
mysql-test/r/ctype_utf8.result:
Fixed results after merge
mysql-test/r/delete.result:
Fixed results after merge
mysql-test/r/func_compress.result:
Fixed results after merge
mysql-test/r/func_gconcat.result:
Fixed results after merge
mysql-test/r/func_group.result:
Fixed results after merge
mysql-test/r/func_str.result:
Fixed results after merge
mysql-test/r/innodb.result:
Fixed results after merge
mysql-test/r/insert.result:
Fixed results after merge
mysql-test/r/insert_select.result:
Fixed results after merge
mysql-test/r/key.result:
Fixed results after merge
mysql-test/r/loaddata.result:
Fixed results after merge
mysql-test/r/lock.result:
Fixed results after merge
mysql-test/r/myisam.result:
Fixed results after merge
mysql-test/r/null.result:
Fixed results after merge
mysql-test/r/null_key.result:
Fixed results after merge
mysql-test/r/order_by.result:
Fixed results after merge
mysql-test/r/query_cache.result:
Fixed results after merge
mysql-test/r/range.result:
Fixed results after merge
mysql-test/r/rpl_multi_delete.result:
Fixed results after merge
mysql-test/r/rpl_until.result:
Fixed results after merge
mysql-test/r/subselect.result:
Fixed results after merge
mysql-test/r/subselect_innodb.result:
Fixed results after merge
mysql-test/r/type_blob.result:
Fixed results after merge
mysql-test/r/type_datetime.result:
Fixed results after merge
mysql-test/r/type_decimal.result:
Fixed results after merge
mysql-test/r/type_enum.result:
Fixed results after merge
mysql-test/r/type_float.result:
Fixed results after merge
mysql-test/r/type_ranges.result:
Fixed results after merge
mysql-test/r/type_time.result:
Fixed results after merge
mysql-test/r/type_timestamp.result:
Fixed results after merge
mysql-test/r/type_uint.result:
Fixed results after merge
mysql-test/r/type_year.result:
Fixed results after merge
mysql-test/r/variables.result:
Fixed results after merge
mysql-test/r/warnings.result:
Fixed results after merge
mysql-test/t/case.test:
Fixed shifted error messages
mysql-test/t/create.test:
Fixed shifted error messages
mysql-test/t/ctype_collate.test:
Fixed shifted error messages
mysql-test/t/ctype_tis620.test:
Merge with 4.0 ctype_tis620 test
mysql-test/t/delete.test:
Fixed shifted error messages
mysql-test/t/derived.test:
Fixed shifted error messages
mysql-test/t/fulltext.test:
Fixed shifted error messages
mysql-test/t/func_in.test:
Fixed shifted error messages
mysql-test/t/func_str.test:
Fixed shifted error messages
mysql-test/t/func_test.test:
Fixed shifted error messages
mysql-test/t/grant.test:
Fixed shifted error messages
mysql-test/t/innodb.test:
Change to 4.1 syntax
mysql-test/t/key_cache.test:
Fixed shifted error messages
mysql-test/t/myisam.test:
New test of blob and end space
mysql-test/t/row.test:
Fixed shifted error messages
mysql-test/t/rpl_until.test:
Fixed shifted error messages
mysql-test/t/subselect.test:
Fixed shifted error messages
mysql-test/t/subselect_innodb.test:
Fix test to take into account foreign key constraints
mysql-test/t/union.test:
Fixed shifted error messages
mysql-test/t/user_var.test:
Fixed shifted error messages
mysql-test/t/variables.test:
Fixed shifted error messages
mysys/my_handler.c:
Merge with 4.0 code
sql/ha_heap.cc:
After merge fixes
sql/handler.cc:
After merge fixes
sql/item.cc:
After merge fixes
sql/item_cmpfunc.cc:
Ensure that we are comparing end space with BINARY strings
sql/item_cmpfunc.h:
Ensure that we are comparing end space with BINARY strings
sql/log_event.cc:
More DBUG statements
Ensure that we use all options to LOAD DATA in replication
sql/opt_range.cc:
After merge fixes
sql/sql_db.cc:
After merge fixes
sql/sql_handler.cc:
After merge fixes
Use 'any_db' instead of '' to mean 'no database comparison'
sql/sql_parse.cc:
After merge fixes
sql/sql_select.cc:
After merge fixes
Added function comment for setup_group()
sql/sql_string.cc:
Added stringcmp() for binary comparison.
Added function comments for sortcmp() and stringcmp()
sql/sql_string.h:
Added stringcmp()
sql/sql_table.cc:
After merge fixes
sql/sql_update.cc:
After merge fixes
sql/sql_yacc.yy:
Use 'any_db' instead of '' to mean any database. Using "" causes a 'wrong db name' error.
strings/ctype-big5.c:
Strip only end space, not other space characters.
strings/ctype-bin.c:
Removed some not needed functions.
Added function comments
Don't remove end space in comparisons
Change my_wildcmp_bin() to be 'identical' with other similar code
strings/ctype-czech.c:
Strip only end space, not other space characters.
strings/ctype-gbk.c:
Strip only end space, not other space characters.
strings/ctype-latin1.c:
Strip only end space, not other space characters.
strings/ctype-mb.c:
Strip only end space, not other space characters.
strings/ctype-simple.c:
Strip only end space, not other space characters.
strings/ctype-sjis.c:
Strip only end space, not other space characters.
strings/ctype-tis620.c:
Added usage of my_instr_simple. This needs to be cleaned up!
strings/ctype-utf8.c:
Strip only end space, not other space characters.
strings/ctype-win1250ch.c:
Strip only end space, not other space characters.
Fixed indentation
strings/strto.c:
Code cleanup
2004-02-16 09:03:25 +01:00
Warning 1265 Data truncated for column 'stamp' at row 3
2003-04-21 20:03:32 +02:00
SELECT col1 FROM t1 UNION SELECT col1 FROM t2 WHERE stamp <
'20020204120000' GROUP BY col1;
col1
1
2
3
2003-12-19 15:25:50 +01:00
4
2003-04-21 20:03:32 +02:00
drop table t1,t2;
Give warning if MySQL doesn't honor given storage engine
Allow syntax CREATE TABLE t1 (LIKE t2)
BUILD/compile-pentium-debug-max:
Disable isam
BUILD/compile-pentium-valgrind-max:
Disable isam
include/mysqld_error.h:
New error
mysql-test/r/bdb.result:
new error message
mysql-test/r/innodb.result:
new error message
mysql-test/r/subselect.result:
New test
mysql-test/r/variables.result:
New test
mysql-test/r/warnings.result:
Test of warning if MySQL creates table with another handler than specified
mysql-test/t/innodb.test:
Added test case for derivied tables
mysql-test/t/subselect.test:
New test
mysql-test/t/variables-master.opt:
Fixed wrong parameter
mysql-test/t/warnings.test:
Test if creating handler of not existing table type
sql/ha_isam.cc:
Added option --skip-isam
sql/ha_isam.h:
Added option --skip-isam
sql/handler.cc:
Added option --skip-isam
sql/item.cc:
Deleted probably wrong bug fix
sql/mysqld.cc:
Added option --skip-isam
sql/share/czech/errmsg.txt:
Added missing ','
sql/share/danish/errmsg.txt:
Added missing ','
sql/share/dutch/errmsg.txt:
Added missing ','
sql/share/english/errmsg.txt:
Added missing ','
changed table handler -> storage engine
sql/share/estonian/errmsg.txt:
Added missing ','
sql/share/french/errmsg.txt:
Added missing ','
sql/share/german/errmsg.txt:
Added missing ','
sql/share/greek/errmsg.txt:
Added missing ','
sql/share/hungarian/errmsg.txt:
Added missing ','
sql/share/italian/errmsg.txt:
Added missing ','
sql/share/japanese/errmsg.txt:
Added missing ','
sql/share/korean/errmsg.txt:
Added missing ','
sql/share/norwegian-ny/errmsg.txt:
Added missing ','
sql/share/norwegian/errmsg.txt:
Added missing ','
sql/share/polish/errmsg.txt:
Added missing ','
sql/share/portuguese/errmsg.txt:
Added missing ','
sql/share/romanian/errmsg.txt:
Added missing ','
sql/share/russian/errmsg.txt:
Added missing ','
sql/share/serbian/errmsg.txt:
Added missing ','
sql/share/slovak/errmsg.txt:
Added missing ','
sql/share/spanish/errmsg.txt:
Added missing ','
sql/share/swedish/errmsg.txt:
Added missing ','
sql/share/ukrainian/errmsg.txt:
Added missing ','
sql/sql_acl.cc:
Fix bug in access checking of derived tables
sql/sql_base.cc:
Indentation change
sql/sql_parse.cc:
Fix bug in access checking of derived tables
sql/sql_select.cc:
Fixed bug in new sub select optimization
sql/sql_table.cc:
Give warning if MySQL doesn't honor given storage engine
sql/sql_yacc.yy:
Allow syntax CREATE TABLE t1 (LIKE t2).
2003-05-13 10:15:11 +02:00
CREATE TABLE t1 (
`id` int(10) unsigned NOT NULL auto_increment,
`id_object` int(10) unsigned default '0',
`id_version` int(10) unsigned NOT NULL default '1',
2004-08-23 17:01:22 +02:00
`label` varchar(100) NOT NULL default '',
Give warning if MySQL doesn't honor given storage engine
Allow syntax CREATE TABLE t1 (LIKE t2)
BUILD/compile-pentium-debug-max:
Disable isam
BUILD/compile-pentium-valgrind-max:
Disable isam
include/mysqld_error.h:
New error
mysql-test/r/bdb.result:
new error message
mysql-test/r/innodb.result:
new error message
mysql-test/r/subselect.result:
New test
mysql-test/r/variables.result:
New test
mysql-test/r/warnings.result:
Test of warning if MySQL creates table with another handler than specified
mysql-test/t/innodb.test:
Added test case for derivied tables
mysql-test/t/subselect.test:
New test
mysql-test/t/variables-master.opt:
Fixed wrong parameter
mysql-test/t/warnings.test:
Test if creating handler of not existing table type
sql/ha_isam.cc:
Added option --skip-isam
sql/ha_isam.h:
Added option --skip-isam
sql/handler.cc:
Added option --skip-isam
sql/item.cc:
Deleted probably wrong bug fix
sql/mysqld.cc:
Added option --skip-isam
sql/share/czech/errmsg.txt:
Added missing ','
sql/share/danish/errmsg.txt:
Added missing ','
sql/share/dutch/errmsg.txt:
Added missing ','
sql/share/english/errmsg.txt:
Added missing ','
changed table handler -> storage engine
sql/share/estonian/errmsg.txt:
Added missing ','
sql/share/french/errmsg.txt:
Added missing ','
sql/share/german/errmsg.txt:
Added missing ','
sql/share/greek/errmsg.txt:
Added missing ','
sql/share/hungarian/errmsg.txt:
Added missing ','
sql/share/italian/errmsg.txt:
Added missing ','
sql/share/japanese/errmsg.txt:
Added missing ','
sql/share/korean/errmsg.txt:
Added missing ','
sql/share/norwegian-ny/errmsg.txt:
Added missing ','
sql/share/norwegian/errmsg.txt:
Added missing ','
sql/share/polish/errmsg.txt:
Added missing ','
sql/share/portuguese/errmsg.txt:
Added missing ','
sql/share/romanian/errmsg.txt:
Added missing ','
sql/share/russian/errmsg.txt:
Added missing ','
sql/share/serbian/errmsg.txt:
Added missing ','
sql/share/slovak/errmsg.txt:
Added missing ','
sql/share/spanish/errmsg.txt:
Added missing ','
sql/share/swedish/errmsg.txt:
Added missing ','
sql/share/ukrainian/errmsg.txt:
Added missing ','
sql/sql_acl.cc:
Fix bug in access checking of derived tables
sql/sql_base.cc:
Indentation change
sql/sql_parse.cc:
Fix bug in access checking of derived tables
sql/sql_select.cc:
Fixed bug in new sub select optimization
sql/sql_table.cc:
Give warning if MySQL doesn't honor given storage engine
sql/sql_yacc.yy:
Allow syntax CREATE TABLE t1 (LIKE t2).
2003-05-13 10:15:11 +02:00
`description` text,
PRIMARY KEY (`id`),
KEY `id_object` (`id_object`),
KEY `id_version` (`id_version`)
2003-12-10 05:31:42 +01:00
) ENGINE=InnoDB;
Give warning if MySQL doesn't honor given storage engine
Allow syntax CREATE TABLE t1 (LIKE t2)
BUILD/compile-pentium-debug-max:
Disable isam
BUILD/compile-pentium-valgrind-max:
Disable isam
include/mysqld_error.h:
New error
mysql-test/r/bdb.result:
new error message
mysql-test/r/innodb.result:
new error message
mysql-test/r/subselect.result:
New test
mysql-test/r/variables.result:
New test
mysql-test/r/warnings.result:
Test of warning if MySQL creates table with another handler than specified
mysql-test/t/innodb.test:
Added test case for derivied tables
mysql-test/t/subselect.test:
New test
mysql-test/t/variables-master.opt:
Fixed wrong parameter
mysql-test/t/warnings.test:
Test if creating handler of not existing table type
sql/ha_isam.cc:
Added option --skip-isam
sql/ha_isam.h:
Added option --skip-isam
sql/handler.cc:
Added option --skip-isam
sql/item.cc:
Deleted probably wrong bug fix
sql/mysqld.cc:
Added option --skip-isam
sql/share/czech/errmsg.txt:
Added missing ','
sql/share/danish/errmsg.txt:
Added missing ','
sql/share/dutch/errmsg.txt:
Added missing ','
sql/share/english/errmsg.txt:
Added missing ','
changed table handler -> storage engine
sql/share/estonian/errmsg.txt:
Added missing ','
sql/share/french/errmsg.txt:
Added missing ','
sql/share/german/errmsg.txt:
Added missing ','
sql/share/greek/errmsg.txt:
Added missing ','
sql/share/hungarian/errmsg.txt:
Added missing ','
sql/share/italian/errmsg.txt:
Added missing ','
sql/share/japanese/errmsg.txt:
Added missing ','
sql/share/korean/errmsg.txt:
Added missing ','
sql/share/norwegian-ny/errmsg.txt:
Added missing ','
sql/share/norwegian/errmsg.txt:
Added missing ','
sql/share/polish/errmsg.txt:
Added missing ','
sql/share/portuguese/errmsg.txt:
Added missing ','
sql/share/romanian/errmsg.txt:
Added missing ','
sql/share/russian/errmsg.txt:
Added missing ','
sql/share/serbian/errmsg.txt:
Added missing ','
sql/share/slovak/errmsg.txt:
Added missing ','
sql/share/spanish/errmsg.txt:
Added missing ','
sql/share/swedish/errmsg.txt:
Added missing ','
sql/share/ukrainian/errmsg.txt:
Added missing ','
sql/sql_acl.cc:
Fix bug in access checking of derived tables
sql/sql_base.cc:
Indentation change
sql/sql_parse.cc:
Fix bug in access checking of derived tables
sql/sql_select.cc:
Fixed bug in new sub select optimization
sql/sql_table.cc:
Give warning if MySQL doesn't honor given storage engine
sql/sql_yacc.yy:
Allow syntax CREATE TABLE t1 (LIKE t2).
2003-05-13 10:15:11 +02:00
INSERT INTO t1 VALUES("6", "3382", "9", "Test", NULL), ("7", "102", "5", "Le Pekin (Test)", NULL),("584", "1794", "4", "Test de resto", NULL),("837", "1822", "6", "Test 3", NULL),("1119", "3524", "1", "Societe Test", NULL),("1122", "3525", "1", "Fournisseur Test", NULL);
CREATE TABLE t2 (
`id` int(10) unsigned NOT NULL auto_increment,
`id_version` int(10) unsigned NOT NULL default '1',
PRIMARY KEY (`id`),
KEY `id_version` (`id_version`)
2003-12-10 05:31:42 +01:00
) ENGINE=InnoDB;
Give warning if MySQL doesn't honor given storage engine
Allow syntax CREATE TABLE t1 (LIKE t2)
BUILD/compile-pentium-debug-max:
Disable isam
BUILD/compile-pentium-valgrind-max:
Disable isam
include/mysqld_error.h:
New error
mysql-test/r/bdb.result:
new error message
mysql-test/r/innodb.result:
new error message
mysql-test/r/subselect.result:
New test
mysql-test/r/variables.result:
New test
mysql-test/r/warnings.result:
Test of warning if MySQL creates table with another handler than specified
mysql-test/t/innodb.test:
Added test case for derivied tables
mysql-test/t/subselect.test:
New test
mysql-test/t/variables-master.opt:
Fixed wrong parameter
mysql-test/t/warnings.test:
Test if creating handler of not existing table type
sql/ha_isam.cc:
Added option --skip-isam
sql/ha_isam.h:
Added option --skip-isam
sql/handler.cc:
Added option --skip-isam
sql/item.cc:
Deleted probably wrong bug fix
sql/mysqld.cc:
Added option --skip-isam
sql/share/czech/errmsg.txt:
Added missing ','
sql/share/danish/errmsg.txt:
Added missing ','
sql/share/dutch/errmsg.txt:
Added missing ','
sql/share/english/errmsg.txt:
Added missing ','
changed table handler -> storage engine
sql/share/estonian/errmsg.txt:
Added missing ','
sql/share/french/errmsg.txt:
Added missing ','
sql/share/german/errmsg.txt:
Added missing ','
sql/share/greek/errmsg.txt:
Added missing ','
sql/share/hungarian/errmsg.txt:
Added missing ','
sql/share/italian/errmsg.txt:
Added missing ','
sql/share/japanese/errmsg.txt:
Added missing ','
sql/share/korean/errmsg.txt:
Added missing ','
sql/share/norwegian-ny/errmsg.txt:
Added missing ','
sql/share/norwegian/errmsg.txt:
Added missing ','
sql/share/polish/errmsg.txt:
Added missing ','
sql/share/portuguese/errmsg.txt:
Added missing ','
sql/share/romanian/errmsg.txt:
Added missing ','
sql/share/russian/errmsg.txt:
Added missing ','
sql/share/serbian/errmsg.txt:
Added missing ','
sql/share/slovak/errmsg.txt:
Added missing ','
sql/share/spanish/errmsg.txt:
Added missing ','
sql/share/swedish/errmsg.txt:
Added missing ','
sql/share/ukrainian/errmsg.txt:
Added missing ','
sql/sql_acl.cc:
Fix bug in access checking of derived tables
sql/sql_base.cc:
Indentation change
sql/sql_parse.cc:
Fix bug in access checking of derived tables
sql/sql_select.cc:
Fixed bug in new sub select optimization
sql/sql_table.cc:
Give warning if MySQL doesn't honor given storage engine
sql/sql_yacc.yy:
Allow syntax CREATE TABLE t1 (LIKE t2).
2003-05-13 10:15:11 +02:00
INSERT INTO t2 VALUES("3524", "1"),("3525", "1"),("1794", "4"),("102", "5"),("1822", "6"),("3382", "9");
2004-08-23 17:01:22 +02:00
SELECT t2.id, t1.`label` FROM t2 INNER JOIN
(SELECT t1.id_object as id_object FROM t1 WHERE t1.`label` LIKE '%test%') AS lbl
Give warning if MySQL doesn't honor given storage engine
Allow syntax CREATE TABLE t1 (LIKE t2)
BUILD/compile-pentium-debug-max:
Disable isam
BUILD/compile-pentium-valgrind-max:
Disable isam
include/mysqld_error.h:
New error
mysql-test/r/bdb.result:
new error message
mysql-test/r/innodb.result:
new error message
mysql-test/r/subselect.result:
New test
mysql-test/r/variables.result:
New test
mysql-test/r/warnings.result:
Test of warning if MySQL creates table with another handler than specified
mysql-test/t/innodb.test:
Added test case for derivied tables
mysql-test/t/subselect.test:
New test
mysql-test/t/variables-master.opt:
Fixed wrong parameter
mysql-test/t/warnings.test:
Test if creating handler of not existing table type
sql/ha_isam.cc:
Added option --skip-isam
sql/ha_isam.h:
Added option --skip-isam
sql/handler.cc:
Added option --skip-isam
sql/item.cc:
Deleted probably wrong bug fix
sql/mysqld.cc:
Added option --skip-isam
sql/share/czech/errmsg.txt:
Added missing ','
sql/share/danish/errmsg.txt:
Added missing ','
sql/share/dutch/errmsg.txt:
Added missing ','
sql/share/english/errmsg.txt:
Added missing ','
changed table handler -> storage engine
sql/share/estonian/errmsg.txt:
Added missing ','
sql/share/french/errmsg.txt:
Added missing ','
sql/share/german/errmsg.txt:
Added missing ','
sql/share/greek/errmsg.txt:
Added missing ','
sql/share/hungarian/errmsg.txt:
Added missing ','
sql/share/italian/errmsg.txt:
Added missing ','
sql/share/japanese/errmsg.txt:
Added missing ','
sql/share/korean/errmsg.txt:
Added missing ','
sql/share/norwegian-ny/errmsg.txt:
Added missing ','
sql/share/norwegian/errmsg.txt:
Added missing ','
sql/share/polish/errmsg.txt:
Added missing ','
sql/share/portuguese/errmsg.txt:
Added missing ','
sql/share/romanian/errmsg.txt:
Added missing ','
sql/share/russian/errmsg.txt:
Added missing ','
sql/share/serbian/errmsg.txt:
Added missing ','
sql/share/slovak/errmsg.txt:
Added missing ','
sql/share/spanish/errmsg.txt:
Added missing ','
sql/share/swedish/errmsg.txt:
Added missing ','
sql/share/ukrainian/errmsg.txt:
Added missing ','
sql/sql_acl.cc:
Fix bug in access checking of derived tables
sql/sql_base.cc:
Indentation change
sql/sql_parse.cc:
Fix bug in access checking of derived tables
sql/sql_select.cc:
Fixed bug in new sub select optimization
sql/sql_table.cc:
Give warning if MySQL doesn't honor given storage engine
sql/sql_yacc.yy:
Allow syntax CREATE TABLE t1 (LIKE t2).
2003-05-13 10:15:11 +02:00
ON (t2.id = lbl.id_object) INNER JOIN t1 ON (t2.id = t1.id_object);
id label
2003-06-12 15:52:36 +02:00
3382 Test
102 Le Pekin (Test)
1794 Test de resto
1822 Test 3
3524 Societe Test
Give warning if MySQL doesn't honor given storage engine
Allow syntax CREATE TABLE t1 (LIKE t2)
BUILD/compile-pentium-debug-max:
Disable isam
BUILD/compile-pentium-valgrind-max:
Disable isam
include/mysqld_error.h:
New error
mysql-test/r/bdb.result:
new error message
mysql-test/r/innodb.result:
new error message
mysql-test/r/subselect.result:
New test
mysql-test/r/variables.result:
New test
mysql-test/r/warnings.result:
Test of warning if MySQL creates table with another handler than specified
mysql-test/t/innodb.test:
Added test case for derivied tables
mysql-test/t/subselect.test:
New test
mysql-test/t/variables-master.opt:
Fixed wrong parameter
mysql-test/t/warnings.test:
Test if creating handler of not existing table type
sql/ha_isam.cc:
Added option --skip-isam
sql/ha_isam.h:
Added option --skip-isam
sql/handler.cc:
Added option --skip-isam
sql/item.cc:
Deleted probably wrong bug fix
sql/mysqld.cc:
Added option --skip-isam
sql/share/czech/errmsg.txt:
Added missing ','
sql/share/danish/errmsg.txt:
Added missing ','
sql/share/dutch/errmsg.txt:
Added missing ','
sql/share/english/errmsg.txt:
Added missing ','
changed table handler -> storage engine
sql/share/estonian/errmsg.txt:
Added missing ','
sql/share/french/errmsg.txt:
Added missing ','
sql/share/german/errmsg.txt:
Added missing ','
sql/share/greek/errmsg.txt:
Added missing ','
sql/share/hungarian/errmsg.txt:
Added missing ','
sql/share/italian/errmsg.txt:
Added missing ','
sql/share/japanese/errmsg.txt:
Added missing ','
sql/share/korean/errmsg.txt:
Added missing ','
sql/share/norwegian-ny/errmsg.txt:
Added missing ','
sql/share/norwegian/errmsg.txt:
Added missing ','
sql/share/polish/errmsg.txt:
Added missing ','
sql/share/portuguese/errmsg.txt:
Added missing ','
sql/share/romanian/errmsg.txt:
Added missing ','
sql/share/russian/errmsg.txt:
Added missing ','
sql/share/serbian/errmsg.txt:
Added missing ','
sql/share/slovak/errmsg.txt:
Added missing ','
sql/share/spanish/errmsg.txt:
Added missing ','
sql/share/swedish/errmsg.txt:
Added missing ','
sql/share/ukrainian/errmsg.txt:
Added missing ','
sql/sql_acl.cc:
Fix bug in access checking of derived tables
sql/sql_base.cc:
Indentation change
sql/sql_parse.cc:
Fix bug in access checking of derived tables
sql/sql_select.cc:
Fixed bug in new sub select optimization
sql/sql_table.cc:
Give warning if MySQL doesn't honor given storage engine
sql/sql_yacc.yy:
Allow syntax CREATE TABLE t1 (LIKE t2).
2003-05-13 10:15:11 +02:00
3525 Fournisseur Test
drop table t1,t2;
2003-12-10 05:31:42 +01:00
create table t1 (a int, b varchar(200), c text not null) checksum=1 engine=myisam;
create table t2 (a int, b varchar(200), c text not null) checksum=0 engine=innodb;
create table t3 (a int, b varchar(200), c text not null) checksum=1 engine=innodb;
2003-09-03 11:34:32 +02:00
insert t1 values (1, "aaa", "bbb"), (NULL, "", "ccccc"), (0, NULL, "");
insert t2 select * from t1;
insert t3 select * from t1;
checksum table t1, t2, t3, t4 quick;
Table Checksum
2004-12-18 04:19:21 +01:00
test.t1 2948697075
2003-09-03 11:34:32 +02:00
test.t2 NULL
test.t3 NULL
test.t4 NULL
2005-02-24 22:33:42 +01:00
Warnings:
Error 1146 Table 'test.t4' doesn't exist
2005-06-07 04:43:59 +02:00
checksum table t1, t2, t3, t4;
2003-09-03 11:34:32 +02:00
Table Checksum
2004-12-18 04:19:21 +01:00
test.t1 2948697075
2006-02-01 16:46:44 +01:00
test.t2 2948697075
test.t3 2948697075
2005-06-07 04:43:59 +02:00
test.t4 NULL
Warnings:
Error 1146 Table 'test.t4' doesn't exist
checksum table t1, t2, t3, t4 extended;
2003-09-03 11:34:32 +02:00
Table Checksum
2006-02-01 16:46:44 +01:00
test.t1 2948697075
test.t2 2948697075
test.t3 2948697075
2005-06-07 04:43:59 +02:00
test.t4 NULL
Warnings:
Error 1146 Table 'test.t4' doesn't exist
2003-09-03 11:34:32 +02:00
drop table t1,t2,t3;
2004-02-17 00:35:17 +01:00
create table t1 (id int, name char(10) not null, name2 char(10) not null) engine=innodb;
insert into t1 values(1,'first','fff'),(2,'second','sss'),(3,'third','ttt');
2006-07-22 00:08:00 +02:00
select trim(name2) from t1 union all select trim(name) from t1 union all select trim(id) from t1;
trim(name2)
2004-02-17 00:35:17 +01:00
fff
sss
ttt
first
second
third
1
2
3
drop table t1;
2004-03-31 11:29:01 +02:00
create table t1 (a int) engine=innodb;
create table t2 like t1;
drop table t1,t2;
2004-05-11 23:29:52 +02:00
create table t1 (id int(11) not null, id2 int(11) not null, unique (id,id2)) engine=innodb;
create table t2 (id int(11) not null, constraint t1_id_fk foreign key ( id ) references t1 (id)) engine = innodb;
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
2004-10-02 21:20:08 +02:00
`id` int(11) NOT NULL,
`id2` int(11) NOT NULL,
2004-05-11 23:29:52 +02:00
UNIQUE KEY `id` (`id`,`id2`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1
show create table t2;
Table Create Table
t2 CREATE TABLE `t2` (
2004-10-02 21:20:08 +02:00
`id` int(11) NOT NULL,
2004-05-11 23:29:52 +02:00
KEY `t1_id_fk` (`id`),
CONSTRAINT `t1_id_fk` FOREIGN KEY (`id`) REFERENCES `t1` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1
create index id on t2 (id);
show create table t2;
Table Create Table
t2 CREATE TABLE `t2` (
2004-10-02 21:20:08 +02:00
`id` int(11) NOT NULL,
2004-05-11 23:29:52 +02:00
KEY `id` (`id`),
CONSTRAINT `t1_id_fk` FOREIGN KEY (`id`) REFERENCES `t1` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1
create index id2 on t2 (id);
show create table t2;
Table Create Table
t2 CREATE TABLE `t2` (
2004-10-02 21:20:08 +02:00
`id` int(11) NOT NULL,
2004-05-11 23:29:52 +02:00
KEY `id` (`id`),
KEY `id2` (`id`),
CONSTRAINT `t1_id_fk` FOREIGN KEY (`id`) REFERENCES `t1` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1
drop index id2 on t2;
drop index id on t2;
Fixes to tests and their results, to account for differences between InnoDB 1.0.4 and the old builtin.
All committed result differences have either been verified by me or copied from Oracle's provided
results (storage/innodb_plugin/mysql-test/*.result, storage/innodb_plugin/mysql-test/patches).
mysql-test/r/information_schema.result:
queries changed a bit
mysql-test/r/information_schema_db.result:
queries changed a bit
mysql-test/r/innodb-autoinc.result:
importing piece from storage/innodb_plugin/mysql-test/innodb-autoinc.result
mysql-test/r/innodb.result:
result close to storage/innodb_plugin/innodb.result, except 4095 pages instead of 8191, which makes
sense as Summit runs with a buffer pool of 64M, whereas the mentioned result file was made with
a buffer pool of 128M.
mysql-test/r/mysqlshow.result:
InnoDB I_S tables have arrived
mysql-test/suite/funcs_1/r/is_columns_is.result:
queries changed a bit
mysql-test/suite/funcs_1/r/is_columns_is_embedded.result:
queries changed a bit
mysql-test/suite/funcs_1/r/is_tables_is.result:
queries changed a bit
mysql-test/suite/funcs_1/t/is_columns_is.test:
making I_S queries ignore InnoDB I_S tables
mysql-test/suite/funcs_1/t/is_columns_is_embedded.test:
making I_S queries ignore InnoDB I_S tables
mysql-test/suite/funcs_1/t/is_tables_is.test:
making I_S queries ignore InnoDB I_S tables
mysql-test/suite/innodb/r/innodb-zip.result:
result update
mysql-test/suite/innodb/t/innodb-zip.test:
439, as size of prefix key, throws error with certain system zlib (ubuntu
"intrepid") but not with zlib bundled with MySQL, because zlib's
compressBound() are different (and used by InnoDB's page_zip_empty_size()).
mysql-test/suite/sys_vars/r/innodb_file_per_table_basic.result:
result update
mysql-test/suite/sys_vars/r/innodb_lock_wait_timeout_basic.result:
result update
mysql-test/suite/sys_vars/r/innodb_sync_spin_loops_basic_32.result:
result update (default value is 30 in the plugin, 20 in the builtin)
mysql-test/suite/sys_vars/r/innodb_sync_spin_loops_basic_64.result:
result update (default value is 30 in the plugin, 20 in the builtin)
mysql-test/suite/sys_vars/r/table_definition_cache_basic.result:
result update (default value is 400 in Summit)
mysql-test/suite/sys_vars/t/innodb_file_per_table_basic.test:
variable is writable in the plugin (patch from Oracle)
mysql-test/suite/sys_vars/t/innodb_lock_wait_timeout_basic.test:
variable is per-session in the plugin (patch from Oracle)
mysql-test/t/information_schema.test:
making I_S queries ignore InnoDB I_S tables
mysql-test/t/information_schema_db.test:
making I_S queries ignore InnoDB I_S tables
mysql-test/t/innodb-autoinc.test:
importing piece from storage/innodb_plugin/mysql-test/innodb-autoinc.test
mysql-test/t/innodb.test:
importing most of storage/innodb_plugin/t/innodb.test. Most replace_result were not needed (no path printed), some where (for --embedded).
mysql-test/t/mysqlshow.test:
output of test now depends on InnoDB or not InnoDB. As there is no way to make mysqlshow
produce a single output in those two cases (no way to make it exclude InnoDB I_S
tables), let the test depend on InnoDB, it isn't a very selective condition, and the
test is simple enough.
storage/innobase/CMakeLists.txt:
thanks Vlad for the noticing () vs {}
2009-08-07 22:04:53 +02:00
ERROR HY000: Cannot drop index 'id': needed in a foreign key constraint
2004-05-11 23:29:52 +02:00
show create table t2;
Table Create Table
t2 CREATE TABLE `t2` (
2004-10-02 21:20:08 +02:00
`id` int(11) NOT NULL,
2004-05-11 23:29:52 +02:00
KEY `id` (`id`),
CONSTRAINT `t1_id_fk` FOREIGN KEY (`id`) REFERENCES `t1` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1
drop table t2;
create table t2 (id int(11) not null, id2 int(11) not null, constraint t1_id_fk foreign key (id,id2) references t1 (id,id2)) engine = innodb;
show create table t2;
Table Create Table
t2 CREATE TABLE `t2` (
2004-10-02 21:20:08 +02:00
`id` int(11) NOT NULL,
`id2` int(11) NOT NULL,
2004-05-11 23:29:52 +02:00
KEY `t1_id_fk` (`id`,`id2`),
CONSTRAINT `t1_id_fk` FOREIGN KEY (`id`, `id2`) REFERENCES `t1` (`id`, `id2`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1
create unique index id on t2 (id,id2);
show create table t2;
Table Create Table
t2 CREATE TABLE `t2` (
2004-10-02 21:20:08 +02:00
`id` int(11) NOT NULL,
`id2` int(11) NOT NULL,
2004-05-11 23:29:52 +02:00
UNIQUE KEY `id` (`id`,`id2`),
CONSTRAINT `t1_id_fk` FOREIGN KEY (`id`, `id2`) REFERENCES `t1` (`id`, `id2`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1
drop table t2;
create table t2 (id int(11) not null, id2 int(11) not null, unique (id,id2),constraint t1_id_fk foreign key (id2,id) references t1 (id,id2)) engine = innodb;
show create table t2;
Table Create Table
t2 CREATE TABLE `t2` (
2004-10-02 21:20:08 +02:00
`id` int(11) NOT NULL,
`id2` int(11) NOT NULL,
2004-05-11 23:29:52 +02:00
UNIQUE KEY `id` (`id`,`id2`),
KEY `t1_id_fk` (`id2`,`id`),
CONSTRAINT `t1_id_fk` FOREIGN KEY (`id2`, `id`) REFERENCES `t1` (`id`, `id2`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1
drop table t2;
create table t2 (id int(11) not null, id2 int(11) not null, unique (id,id2), constraint t1_id_fk foreign key (id) references t1 (id)) engine = innodb;
show create table t2;
Table Create Table
t2 CREATE TABLE `t2` (
2004-10-02 21:20:08 +02:00
`id` int(11) NOT NULL,
`id2` int(11) NOT NULL,
2004-05-11 23:29:52 +02:00
UNIQUE KEY `id` (`id`,`id2`),
CONSTRAINT `t1_id_fk` FOREIGN KEY (`id`) REFERENCES `t1` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1
drop table t2;
create table t2 (id int(11) not null, id2 int(11) not null, unique (id,id2),constraint t1_id_fk foreign key (id2,id) references t1 (id,id2)) engine = innodb;
show create table t2;
Table Create Table
t2 CREATE TABLE `t2` (
2004-10-02 21:20:08 +02:00
`id` int(11) NOT NULL,
`id2` int(11) NOT NULL,
2004-05-11 23:29:52 +02:00
UNIQUE KEY `id` (`id`,`id2`),
KEY `t1_id_fk` (`id2`,`id`),
CONSTRAINT `t1_id_fk` FOREIGN KEY (`id2`, `id`) REFERENCES `t1` (`id`, `id2`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1
drop table t2;
2004-05-15 10:57:40 +02:00
create table t2 (id int(11) not null auto_increment, id2 int(11) not null, constraint t1_id_fk foreign key (id) references t1 (id), primary key (id), index (id,id2)) engine = innodb;
show create table t2;
Table Create Table
t2 CREATE TABLE `t2` (
2006-04-14 17:39:36 +02:00
`id` int(11) NOT NULL AUTO_INCREMENT,
2004-10-02 21:20:08 +02:00
`id2` int(11) NOT NULL,
2006-04-14 17:39:36 +02:00
PRIMARY KEY (`id`),
2004-05-15 10:57:40 +02:00
KEY `id` (`id`,`id2`),
CONSTRAINT `t1_id_fk` FOREIGN KEY (`id`) REFERENCES `t1` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1
drop table t2;
create table t2 (id int(11) not null auto_increment, id2 int(11) not null, constraint t1_id_fk foreign key (id) references t1 (id)) engine= innodb;
show create table t2;
Table Create Table
t2 CREATE TABLE `t2` (
2006-04-14 17:39:36 +02:00
`id` int(11) NOT NULL AUTO_INCREMENT,
2004-10-02 21:20:08 +02:00
`id2` int(11) NOT NULL,
2004-05-15 10:57:40 +02:00
KEY `t1_id_fk` (`id`),
CONSTRAINT `t1_id_fk` FOREIGN KEY (`id`) REFERENCES `t1` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1
alter table t2 add index id_test (id), add index id_test2 (id,id2);
show create table t2;
Table Create Table
t2 CREATE TABLE `t2` (
2006-04-14 17:39:36 +02:00
`id` int(11) NOT NULL AUTO_INCREMENT,
2004-10-02 21:20:08 +02:00
`id2` int(11) NOT NULL,
2004-05-15 10:57:40 +02:00
KEY `id_test` (`id`),
KEY `id_test2` (`id`,`id2`),
CONSTRAINT `t1_id_fk` FOREIGN KEY (`id`) REFERENCES `t1` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1
drop table t2;
2004-05-11 23:29:52 +02:00
create table t2 (id int(11) not null, id2 int(11) not null, constraint t1_id_fk foreign key (id2,id) references t1 (id)) engine = innodb;
2007-07-18 14:22:05 +02:00
ERROR 42000: Incorrect foreign key definition for 't1_id_fk': Key reference and table reference don't match
2004-05-14 12:49:18 +02:00
create table t2 (a int auto_increment primary key, b int, index(b), foreign key (b) references t1(id), unique(b)) engine=innodb;
show create table t2;
Table Create Table
t2 CREATE TABLE `t2` (
2006-04-14 17:39:36 +02:00
`a` int(11) NOT NULL AUTO_INCREMENT,
`b` int(11) DEFAULT NULL,
PRIMARY KEY (`a`),
2004-05-14 12:49:18 +02:00
UNIQUE KEY `b_2` (`b`),
KEY `b` (`b`),
CONSTRAINT `t2_ibfk_1` FOREIGN KEY (`b`) REFERENCES `t1` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1
drop table t2;
create table t2 (a int auto_increment primary key, b int, foreign key (b) references t1(id), foreign key (b) references t1(id), unique(b)) engine=innodb;
show create table t2;
Table Create Table
t2 CREATE TABLE `t2` (
2006-04-14 17:39:36 +02:00
`a` int(11) NOT NULL AUTO_INCREMENT,
`b` int(11) DEFAULT NULL,
PRIMARY KEY (`a`),
2004-05-14 12:49:18 +02:00
UNIQUE KEY `b` (`b`),
CONSTRAINT `t2_ibfk_1` FOREIGN KEY (`b`) REFERENCES `t1` (`id`),
CONSTRAINT `t2_ibfk_2` FOREIGN KEY (`b`) REFERENCES `t1` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1
drop table t2, t1;
2004-11-22 19:07:04 +01:00
create table t1 (c char(10), index (c,c)) engine=innodb;
ERROR 42S21: Duplicate column name 'c'
create table t1 (c1 char(10), c2 char(10), index (c1,c2,c1)) engine=innodb;
ERROR 42S21: Duplicate column name 'c1'
create table t1 (c1 char(10), c2 char(10), index (c1,c1,c2)) engine=innodb;
ERROR 42S21: Duplicate column name 'c1'
create table t1 (c1 char(10), c2 char(10), index (c2,c1,c1)) engine=innodb;
ERROR 42S21: Duplicate column name 'c1'
create table t1 (c1 char(10), c2 char(10)) engine=innodb;
alter table t1 add key (c1,c1);
ERROR 42S21: Duplicate column name 'c1'
alter table t1 add key (c2,c1,c1);
ERROR 42S21: Duplicate column name 'c1'
alter table t1 add key (c1,c2,c1);
ERROR 42S21: Duplicate column name 'c1'
alter table t1 add key (c1,c1,c2);
ERROR 42S21: Duplicate column name 'c1'
drop table t1;
2005-05-06 17:11:01 +02:00
create table t1(a int(1) , b int(1)) engine=innodb;
insert into t1 values ('1111', '3333');
select distinct concat(a, b) from t1;
concat(a, b)
11113333
drop table t1;
2005-05-07 12:48:56 +02:00
CREATE TABLE t1 ( a char(10) ) ENGINE=InnoDB;
SELECT a FROM t1 WHERE MATCH (a) AGAINST ('test' IN BOOLEAN MODE);
2005-05-14 15:24:36 +02:00
ERROR HY000: The used table type doesn't support FULLTEXT indexes
2005-05-07 18:37:27 +02:00
DROP TABLE t1;
2005-06-03 22:46:03 +02:00
CREATE TABLE t1 (a_id tinyint(4) NOT NULL default '0', PRIMARY KEY (a_id)) ENGINE=InnoDB DEFAULT CHARSET=latin1;
INSERT INTO t1 VALUES (1),(2),(3);
CREATE TABLE t2 (b_id tinyint(4) NOT NULL default '0',b_a tinyint(4) NOT NULL default '0', PRIMARY KEY (b_id), KEY (b_a),
CONSTRAINT fk_b_a FOREIGN KEY (b_a) REFERENCES t1 (a_id) ON DELETE CASCADE ON UPDATE NO ACTION) ENGINE=InnoDB DEFAULT CHARSET=latin1;
INSERT INTO t2 VALUES (1,1),(2,1),(3,1),(4,2),(5,2);
SELECT * FROM (SELECT t1.*,GROUP_CONCAT(t2.b_id SEPARATOR ',') as b_list FROM (t1 LEFT JOIN (t2) on t1.a_id = t2.b_a) GROUP BY t1.a_id ) AS xyz;
a_id b_list
1 1,2,3
2 4,5
3 NULL
DROP TABLE t2;
DROP TABLE t1;
2005-08-29 17:01:46 +02:00
create temporary table t1 (a int) engine=innodb;
insert into t1 values (4711);
truncate t1;
insert into t1 values (42);
select * from t1;
a
42
drop table t1;
create table t1 (a int) engine=innodb;
insert into t1 values (4711);
truncate t1;
insert into t1 values (42);
select * from t1;
a
42
drop table t1;
2005-09-12 17:48:17 +02:00
create table t1 (a int not null, b int not null, c blob not null, d int not null, e int, primary key (a,b,c(255),d)) engine=innodb;
insert into t1 values (2,2,"b",2,2),(1,1,"a",1,1),(3,3,"ab",3,3);
select * from t1 order by a,b,c,d;
a b c d e
1 1 a 1 1
2 2 b 2 2
3 3 ab 3 3
explain select * from t1 order by a,b,c,d;
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 ALL NULL NULL NULL NULL 3 Using filesort
drop table t1;
2005-09-19 02:39:49 +02:00
create table t1 (a char(1), b char(1), key(a, b)) engine=innodb;
insert into t1 values ('8', '6'), ('4', '7');
select min(a) from t1;
min(a)
4
select min(b) from t1 where a='8';
min(b)
6
drop table t1;
2004-10-20 12:56:49 +02:00
create table t1 (x bigint unsigned not null primary key) engine=innodb;
insert into t1(x) values (0xfffffffffffffff0),(0xfffffffffffffff1);
select * from t1;
x
18446744073709551600
18446744073709551601
select count(*) from t1 where x>0;
count(*)
2
select count(*) from t1 where x=0;
count(*)
0
select count(*) from t1 where x<0;
count(*)
0
select count(*) from t1 where x < -16;
count(*)
0
select count(*) from t1 where x = -16;
count(*)
0
explain select count(*) from t1 where x > -16;
id select_type table type possible_keys key key_len ref rows Extra
2005-06-24 08:56:58 +02:00
1 SIMPLE t1 index PRIMARY PRIMARY 8 NULL 2 Using where; Using index
2004-10-20 12:56:49 +02:00
select count(*) from t1 where x > -16;
count(*)
2005-06-24 08:56:58 +02:00
2
2004-10-20 12:56:49 +02:00
select * from t1 where x > -16;
x
2005-06-24 08:56:58 +02:00
18446744073709551600
2004-10-20 12:56:49 +02:00
18446744073709551601
select count(*) from t1 where x = 18446744073709551601;
count(*)
1
drop table t1;
2009-04-15 14:28:07 +02:00
SELECT variable_value FROM information_schema.global_status WHERE LOWER(variable_name) = 'innodb_buffer_pool_pages_total';
variable_value
2009-08-12 16:39:50 +02:00
512
2009-04-15 14:28:07 +02:00
SELECT variable_value FROM information_schema.global_status WHERE LOWER(variable_name) = 'innodb_page_size';
variable_value
16384
SELECT variable_value - @innodb_rows_deleted_orig FROM information_schema.global_status WHERE LOWER(variable_name) = 'innodb_rows_deleted';
variable_value - @innodb_rows_deleted_orig
71
SELECT variable_value - @innodb_rows_inserted_orig FROM information_schema.global_status WHERE LOWER(variable_name) = 'innodb_rows_inserted';
variable_value - @innodb_rows_inserted_orig
1084
SELECT variable_value - @innodb_rows_updated_orig FROM information_schema.global_status WHERE LOWER(variable_name) = 'innodb_rows_updated';
variable_value - @innodb_rows_updated_orig
885
SELECT variable_value - @innodb_row_lock_waits_orig FROM information_schema.global_status WHERE LOWER(variable_name) = 'innodb_row_lock_waits';
variable_value - @innodb_row_lock_waits_orig
0
SELECT variable_value - @innodb_row_lock_current_waits_orig FROM information_schema.global_status WHERE LOWER(variable_name) = 'innodb_row_lock_current_waits';
variable_value - @innodb_row_lock_current_waits_orig
0
SELECT variable_value - @innodb_row_lock_time_orig FROM information_schema.global_status WHERE LOWER(variable_name) = 'innodb_row_lock_time';
variable_value - @innodb_row_lock_time_orig
0
SELECT variable_value - @innodb_row_lock_time_max_orig FROM information_schema.global_status WHERE LOWER(variable_name) = 'innodb_row_lock_time_max';
variable_value - @innodb_row_lock_time_max_orig
0
SELECT variable_value - @innodb_row_lock_time_avg_orig FROM information_schema.global_status WHERE LOWER(variable_name) = 'innodb_row_lock_time_avg';
variable_value - @innodb_row_lock_time_avg_orig
0
Fixes to tests and their results, to account for differences between InnoDB 1.0.4 and the old builtin.
All committed result differences have either been verified by me or copied from Oracle's provided
results (storage/innodb_plugin/mysql-test/*.result, storage/innodb_plugin/mysql-test/patches).
mysql-test/r/information_schema.result:
queries changed a bit
mysql-test/r/information_schema_db.result:
queries changed a bit
mysql-test/r/innodb-autoinc.result:
importing piece from storage/innodb_plugin/mysql-test/innodb-autoinc.result
mysql-test/r/innodb.result:
result close to storage/innodb_plugin/innodb.result, except 4095 pages instead of 8191, which makes
sense as Summit runs with a buffer pool of 64M, whereas the mentioned result file was made with
a buffer pool of 128M.
mysql-test/r/mysqlshow.result:
InnoDB I_S tables have arrived
mysql-test/suite/funcs_1/r/is_columns_is.result:
queries changed a bit
mysql-test/suite/funcs_1/r/is_columns_is_embedded.result:
queries changed a bit
mysql-test/suite/funcs_1/r/is_tables_is.result:
queries changed a bit
mysql-test/suite/funcs_1/t/is_columns_is.test:
making I_S queries ignore InnoDB I_S tables
mysql-test/suite/funcs_1/t/is_columns_is_embedded.test:
making I_S queries ignore InnoDB I_S tables
mysql-test/suite/funcs_1/t/is_tables_is.test:
making I_S queries ignore InnoDB I_S tables
mysql-test/suite/innodb/r/innodb-zip.result:
result update
mysql-test/suite/innodb/t/innodb-zip.test:
439, as size of prefix key, throws error with certain system zlib (ubuntu
"intrepid") but not with zlib bundled with MySQL, because zlib's
compressBound() are different (and used by InnoDB's page_zip_empty_size()).
mysql-test/suite/sys_vars/r/innodb_file_per_table_basic.result:
result update
mysql-test/suite/sys_vars/r/innodb_lock_wait_timeout_basic.result:
result update
mysql-test/suite/sys_vars/r/innodb_sync_spin_loops_basic_32.result:
result update (default value is 30 in the plugin, 20 in the builtin)
mysql-test/suite/sys_vars/r/innodb_sync_spin_loops_basic_64.result:
result update (default value is 30 in the plugin, 20 in the builtin)
mysql-test/suite/sys_vars/r/table_definition_cache_basic.result:
result update (default value is 400 in Summit)
mysql-test/suite/sys_vars/t/innodb_file_per_table_basic.test:
variable is writable in the plugin (patch from Oracle)
mysql-test/suite/sys_vars/t/innodb_lock_wait_timeout_basic.test:
variable is per-session in the plugin (patch from Oracle)
mysql-test/t/information_schema.test:
making I_S queries ignore InnoDB I_S tables
mysql-test/t/information_schema_db.test:
making I_S queries ignore InnoDB I_S tables
mysql-test/t/innodb-autoinc.test:
importing piece from storage/innodb_plugin/mysql-test/innodb-autoinc.test
mysql-test/t/innodb.test:
importing most of storage/innodb_plugin/t/innodb.test. Most replace_result were not needed (no path printed), some where (for --embedded).
mysql-test/t/mysqlshow.test:
output of test now depends on InnoDB or not InnoDB. As there is no way to make mysqlshow
produce a single output in those two cases (no way to make it exclude InnoDB I_S
tables), let the test depend on InnoDB, it isn't a very selective condition, and the
test is simple enough.
storage/innobase/CMakeLists.txt:
thanks Vlad for the noticing () vs {}
2009-08-07 22:04:53 +02:00
SET @innodb_sync_spin_loops_orig = @@innodb_sync_spin_loops;
2005-01-05 12:43:48 +01:00
show variables like "innodb_sync_spin_loops";
Variable_name Value
Fixes to tests and their results, to account for differences between InnoDB 1.0.4 and the old builtin.
All committed result differences have either been verified by me or copied from Oracle's provided
results (storage/innodb_plugin/mysql-test/*.result, storage/innodb_plugin/mysql-test/patches).
mysql-test/r/information_schema.result:
queries changed a bit
mysql-test/r/information_schema_db.result:
queries changed a bit
mysql-test/r/innodb-autoinc.result:
importing piece from storage/innodb_plugin/mysql-test/innodb-autoinc.result
mysql-test/r/innodb.result:
result close to storage/innodb_plugin/innodb.result, except 4095 pages instead of 8191, which makes
sense as Summit runs with a buffer pool of 64M, whereas the mentioned result file was made with
a buffer pool of 128M.
mysql-test/r/mysqlshow.result:
InnoDB I_S tables have arrived
mysql-test/suite/funcs_1/r/is_columns_is.result:
queries changed a bit
mysql-test/suite/funcs_1/r/is_columns_is_embedded.result:
queries changed a bit
mysql-test/suite/funcs_1/r/is_tables_is.result:
queries changed a bit
mysql-test/suite/funcs_1/t/is_columns_is.test:
making I_S queries ignore InnoDB I_S tables
mysql-test/suite/funcs_1/t/is_columns_is_embedded.test:
making I_S queries ignore InnoDB I_S tables
mysql-test/suite/funcs_1/t/is_tables_is.test:
making I_S queries ignore InnoDB I_S tables
mysql-test/suite/innodb/r/innodb-zip.result:
result update
mysql-test/suite/innodb/t/innodb-zip.test:
439, as size of prefix key, throws error with certain system zlib (ubuntu
"intrepid") but not with zlib bundled with MySQL, because zlib's
compressBound() are different (and used by InnoDB's page_zip_empty_size()).
mysql-test/suite/sys_vars/r/innodb_file_per_table_basic.result:
result update
mysql-test/suite/sys_vars/r/innodb_lock_wait_timeout_basic.result:
result update
mysql-test/suite/sys_vars/r/innodb_sync_spin_loops_basic_32.result:
result update (default value is 30 in the plugin, 20 in the builtin)
mysql-test/suite/sys_vars/r/innodb_sync_spin_loops_basic_64.result:
result update (default value is 30 in the plugin, 20 in the builtin)
mysql-test/suite/sys_vars/r/table_definition_cache_basic.result:
result update (default value is 400 in Summit)
mysql-test/suite/sys_vars/t/innodb_file_per_table_basic.test:
variable is writable in the plugin (patch from Oracle)
mysql-test/suite/sys_vars/t/innodb_lock_wait_timeout_basic.test:
variable is per-session in the plugin (patch from Oracle)
mysql-test/t/information_schema.test:
making I_S queries ignore InnoDB I_S tables
mysql-test/t/information_schema_db.test:
making I_S queries ignore InnoDB I_S tables
mysql-test/t/innodb-autoinc.test:
importing piece from storage/innodb_plugin/mysql-test/innodb-autoinc.test
mysql-test/t/innodb.test:
importing most of storage/innodb_plugin/t/innodb.test. Most replace_result were not needed (no path printed), some where (for --embedded).
mysql-test/t/mysqlshow.test:
output of test now depends on InnoDB or not InnoDB. As there is no way to make mysqlshow
produce a single output in those two cases (no way to make it exclude InnoDB I_S
tables), let the test depend on InnoDB, it isn't a very selective condition, and the
test is simple enough.
storage/innobase/CMakeLists.txt:
thanks Vlad for the noticing () vs {}
2009-08-07 22:04:53 +02:00
innodb_sync_spin_loops 30
2005-01-05 12:43:48 +01:00
set global innodb_sync_spin_loops=1000;
show variables like "innodb_sync_spin_loops";
Variable_name Value
innodb_sync_spin_loops 1000
set global innodb_sync_spin_loops=0;
show variables like "innodb_sync_spin_loops";
Variable_name Value
innodb_sync_spin_loops 0
set global innodb_sync_spin_loops=20;
show variables like "innodb_sync_spin_loops";
Variable_name Value
innodb_sync_spin_loops 20
Fixes to tests and their results, to account for differences between InnoDB 1.0.4 and the old builtin.
All committed result differences have either been verified by me or copied from Oracle's provided
results (storage/innodb_plugin/mysql-test/*.result, storage/innodb_plugin/mysql-test/patches).
mysql-test/r/information_schema.result:
queries changed a bit
mysql-test/r/information_schema_db.result:
queries changed a bit
mysql-test/r/innodb-autoinc.result:
importing piece from storage/innodb_plugin/mysql-test/innodb-autoinc.result
mysql-test/r/innodb.result:
result close to storage/innodb_plugin/innodb.result, except 4095 pages instead of 8191, which makes
sense as Summit runs with a buffer pool of 64M, whereas the mentioned result file was made with
a buffer pool of 128M.
mysql-test/r/mysqlshow.result:
InnoDB I_S tables have arrived
mysql-test/suite/funcs_1/r/is_columns_is.result:
queries changed a bit
mysql-test/suite/funcs_1/r/is_columns_is_embedded.result:
queries changed a bit
mysql-test/suite/funcs_1/r/is_tables_is.result:
queries changed a bit
mysql-test/suite/funcs_1/t/is_columns_is.test:
making I_S queries ignore InnoDB I_S tables
mysql-test/suite/funcs_1/t/is_columns_is_embedded.test:
making I_S queries ignore InnoDB I_S tables
mysql-test/suite/funcs_1/t/is_tables_is.test:
making I_S queries ignore InnoDB I_S tables
mysql-test/suite/innodb/r/innodb-zip.result:
result update
mysql-test/suite/innodb/t/innodb-zip.test:
439, as size of prefix key, throws error with certain system zlib (ubuntu
"intrepid") but not with zlib bundled with MySQL, because zlib's
compressBound() are different (and used by InnoDB's page_zip_empty_size()).
mysql-test/suite/sys_vars/r/innodb_file_per_table_basic.result:
result update
mysql-test/suite/sys_vars/r/innodb_lock_wait_timeout_basic.result:
result update
mysql-test/suite/sys_vars/r/innodb_sync_spin_loops_basic_32.result:
result update (default value is 30 in the plugin, 20 in the builtin)
mysql-test/suite/sys_vars/r/innodb_sync_spin_loops_basic_64.result:
result update (default value is 30 in the plugin, 20 in the builtin)
mysql-test/suite/sys_vars/r/table_definition_cache_basic.result:
result update (default value is 400 in Summit)
mysql-test/suite/sys_vars/t/innodb_file_per_table_basic.test:
variable is writable in the plugin (patch from Oracle)
mysql-test/suite/sys_vars/t/innodb_lock_wait_timeout_basic.test:
variable is per-session in the plugin (patch from Oracle)
mysql-test/t/information_schema.test:
making I_S queries ignore InnoDB I_S tables
mysql-test/t/information_schema_db.test:
making I_S queries ignore InnoDB I_S tables
mysql-test/t/innodb-autoinc.test:
importing piece from storage/innodb_plugin/mysql-test/innodb-autoinc.test
mysql-test/t/innodb.test:
importing most of storage/innodb_plugin/t/innodb.test. Most replace_result were not needed (no path printed), some where (for --embedded).
mysql-test/t/mysqlshow.test:
output of test now depends on InnoDB or not InnoDB. As there is no way to make mysqlshow
produce a single output in those two cases (no way to make it exclude InnoDB I_S
tables), let the test depend on InnoDB, it isn't a very selective condition, and the
test is simple enough.
storage/innobase/CMakeLists.txt:
thanks Vlad for the noticing () vs {}
2009-08-07 22:04:53 +02:00
set global innodb_sync_spin_loops=@innodb_sync_spin_loops_orig;
2008-11-13 20:19:00 +01:00
SET @old_innodb_thread_concurrency= @@global.innodb_thread_concurrency;
2005-01-08 15:01:37 +01:00
show variables like "innodb_thread_concurrency";
Variable_name Value
2008-10-15 22:48:40 +02:00
innodb_thread_concurrency 0
2006-01-18 13:20:56 +01:00
set global innodb_thread_concurrency=1001;
Bug#31177: Server variables can't be set to their current values
Default values of variables were not subject to upper/lower bounds
and step, while setting variables was. Bounds and step are also
applied to defaults now; defaults are corrected quietly, values
given by the user are corrected, and a correction-warning is thrown
as needed. Lastly, very large values could wrap around, starting
from 0 again. They are bounded at the maximum value for the
respective data-type now if no lower maximum is specified in the
variable's definition.
client/mysql.cc:
correct maxima in options array
client/mysqltest.c:
adjust minimum for "sleep" option so default value is no longer
out of bounds.
include/m_string.h:
ullstr() - the unsigned brother of llstr()
include/my_getopt.h:
Flag if we bounded the value (that is, correct anything aside from
making value a multiple of block-size)
mysql-test/r/delayed.result:
We throw a warning now when we adjust out of range parameters.
mysql-test/r/index_merge.result:
We throw a warning now when we adjust out of range parameters.
mysql-test/r/innodb.result:
We throw a warning now when we adjust out of range parameters.
mysql-test/r/innodb_mysql.result:
We throw a warning now when we adjust out of range parameters.
mysql-test/r/key_cache.result:
We throw a warning now when we adjust out of range parameters.
mysql-test/r/packet.result:
We throw a warning now when we adjust out of range parameters.
mysql-test/r/ps.result:
We throw a warning now when we adjust out of range parameters.
mysql-test/r/subselect.result:
We throw a warning now when we adjust out of range parameters.
mysql-test/r/type_bit.result:
We throw a warning now when we adjust out of range parameters.
mysql-test/r/type_bit_innodb.result:
We throw a warning now when we adjust out of range parameters.
mysql-test/r/variables.result:
correct results: bounds and step apply to variables' default values, too
mysql-test/t/variables.test:
correct results: bounds and step apply to variables' default values, too
mysys/my_getopt.c:
- apply bounds/step to default values of variables (based on work by serg)
- print complaints about incorrect values for variables (truncation etc.,
by requestion of consulting)
- if no lower maximum is specified in variable definition, bound unsigned
values at their maximum to prevent wrap-around
- some calls to error_reporter had a \n, some didn't. remove \n from calls,
let reporter-function handle it, so the default reporter behaves like that
in mysqld
sql/mysql_priv.h:
correct RANGE_ALLOC_BLOCK_SIZE (cleared with monty)
sql/mysqld.cc:
correct maxima to correct data-type.
correct minima where higher than default.
correct range-alloc-block-size.
correct inno variables so GET_* corresponds to actual variable's type.
sql/set_var.cc:
When the new value for a variable is out of bounds, we'll send the
client a warning (but not if the value was simply not a multiple of
'blocksize'). sys_var_thd_ulong had this, sys_var_long_ptr_global
didn't; broken out and streamlined to avoid duplication of code.
strings/llstr.c:
ullstr() - the unsigned brother of llstr()
2007-11-30 06:32:04 +01:00
Warnings:
Bug#31177: Server variables can't be set to their current values
5.1+ specific fixes (plugins etc.)
include/my_getopt.h:
make both ull and ll global
mysql-test/r/index_merge_myisam.result:
we throw warnings to the client, yea, verily
mysql-test/r/innodb.result:
we throw warnings to the client, yea, verily
mysql-test/r/variables.result:
we throw warnings to the client, yea, verily
mysql-test/t/variables.test:
correct result, is multiple of variable's block_size now
mysys/my_getopt.c:
export getopt_ll_limit_value(), check for integer wrap-around
in it, same as in ull variant. Only print warnings to reporter
when caller didn't ask for diagnostics, otherwise assume caller
will handle any warnings (id est, throw them client-wards)
sql/mysqld.cc:
correct signedness of "concurrent-insert"
sql/sql_plugin.cc:
Throw sys-var out-of-range warnings client-wards for
plugins, too.
2007-12-01 19:55:06 +01:00
Warning 1292 Truncated incorrect thread_concurrency value: '1001'
2005-01-08 15:01:37 +01:00
show variables like "innodb_thread_concurrency";
Variable_name Value
innodb_thread_concurrency 1000
set global innodb_thread_concurrency=0;
show variables like "innodb_thread_concurrency";
Variable_name Value
2006-07-30 03:16:08 +02:00
innodb_thread_concurrency 0
2005-01-08 15:01:37 +01:00
set global innodb_thread_concurrency=16;
show variables like "innodb_thread_concurrency";
Variable_name Value
innodb_thread_concurrency 16
2008-11-13 20:19:00 +01:00
SET @@global.innodb_thread_concurrency= @old_innodb_thread_concurrency;
2005-01-12 20:55:06 +01:00
show variables like "innodb_concurrency_tickets";
2005-01-08 15:01:37 +01:00
Variable_name Value
2005-01-12 20:55:06 +01:00
innodb_concurrency_tickets 500
set global innodb_concurrency_tickets=1000;
show variables like "innodb_concurrency_tickets";
2005-01-08 15:01:37 +01:00
Variable_name Value
2005-01-12 20:55:06 +01:00
innodb_concurrency_tickets 1000
set global innodb_concurrency_tickets=0;
Bug#31177: Server variables can't be set to their current values
Default values of variables were not subject to upper/lower bounds
and step, while setting variables was. Bounds and step are also
applied to defaults now; defaults are corrected quietly, values
given by the user are corrected, and a correction-warning is thrown
as needed. Lastly, very large values could wrap around, starting
from 0 again. They are bounded at the maximum value for the
respective data-type now if no lower maximum is specified in the
variable's definition.
client/mysql.cc:
correct maxima in options array
client/mysqltest.c:
adjust minimum for "sleep" option so default value is no longer
out of bounds.
include/m_string.h:
ullstr() - the unsigned brother of llstr()
include/my_getopt.h:
Flag if we bounded the value (that is, correct anything aside from
making value a multiple of block-size)
mysql-test/r/delayed.result:
We throw a warning now when we adjust out of range parameters.
mysql-test/r/index_merge.result:
We throw a warning now when we adjust out of range parameters.
mysql-test/r/innodb.result:
We throw a warning now when we adjust out of range parameters.
mysql-test/r/innodb_mysql.result:
We throw a warning now when we adjust out of range parameters.
mysql-test/r/key_cache.result:
We throw a warning now when we adjust out of range parameters.
mysql-test/r/packet.result:
We throw a warning now when we adjust out of range parameters.
mysql-test/r/ps.result:
We throw a warning now when we adjust out of range parameters.
mysql-test/r/subselect.result:
We throw a warning now when we adjust out of range parameters.
mysql-test/r/type_bit.result:
We throw a warning now when we adjust out of range parameters.
mysql-test/r/type_bit_innodb.result:
We throw a warning now when we adjust out of range parameters.
mysql-test/r/variables.result:
correct results: bounds and step apply to variables' default values, too
mysql-test/t/variables.test:
correct results: bounds and step apply to variables' default values, too
mysys/my_getopt.c:
- apply bounds/step to default values of variables (based on work by serg)
- print complaints about incorrect values for variables (truncation etc.,
by requestion of consulting)
- if no lower maximum is specified in variable definition, bound unsigned
values at their maximum to prevent wrap-around
- some calls to error_reporter had a \n, some didn't. remove \n from calls,
let reporter-function handle it, so the default reporter behaves like that
in mysqld
sql/mysql_priv.h:
correct RANGE_ALLOC_BLOCK_SIZE (cleared with monty)
sql/mysqld.cc:
correct maxima to correct data-type.
correct minima where higher than default.
correct range-alloc-block-size.
correct inno variables so GET_* corresponds to actual variable's type.
sql/set_var.cc:
When the new value for a variable is out of bounds, we'll send the
client a warning (but not if the value was simply not a multiple of
'blocksize'). sys_var_thd_ulong had this, sys_var_long_ptr_global
didn't; broken out and streamlined to avoid duplication of code.
strings/llstr.c:
ullstr() - the unsigned brother of llstr()
2007-11-30 06:32:04 +01:00
Warnings:
Bug#31177: Server variables can't be set to their current values
5.1+ specific fixes (plugins etc.)
include/my_getopt.h:
make both ull and ll global
mysql-test/r/index_merge_myisam.result:
we throw warnings to the client, yea, verily
mysql-test/r/innodb.result:
we throw warnings to the client, yea, verily
mysql-test/r/variables.result:
we throw warnings to the client, yea, verily
mysql-test/t/variables.test:
correct result, is multiple of variable's block_size now
mysys/my_getopt.c:
export getopt_ll_limit_value(), check for integer wrap-around
in it, same as in ull variant. Only print warnings to reporter
when caller didn't ask for diagnostics, otherwise assume caller
will handle any warnings (id est, throw them client-wards)
sql/mysqld.cc:
correct signedness of "concurrent-insert"
sql/sql_plugin.cc:
Throw sys-var out-of-range warnings client-wards for
plugins, too.
2007-12-01 19:55:06 +01:00
Warning 1292 Truncated incorrect concurrency_tickets value: '0'
2005-01-12 20:55:06 +01:00
show variables like "innodb_concurrency_tickets";
2005-01-08 15:01:37 +01:00
Variable_name Value
2005-01-12 20:55:06 +01:00
innodb_concurrency_tickets 1
set global innodb_concurrency_tickets=500;
show variables like "innodb_concurrency_tickets";
2005-01-08 15:01:37 +01:00
Variable_name Value
2005-01-12 20:55:06 +01:00
innodb_concurrency_tickets 500
2005-01-08 15:01:37 +01:00
show variables like "innodb_thread_sleep_delay";
Variable_name Value
innodb_thread_sleep_delay 10000
set global innodb_thread_sleep_delay=100000;
show variables like "innodb_thread_sleep_delay";
Variable_name Value
innodb_thread_sleep_delay 100000
set global innodb_thread_sleep_delay=0;
show variables like "innodb_thread_sleep_delay";
Variable_name Value
innodb_thread_sleep_delay 0
set global innodb_thread_sleep_delay=10000;
show variables like "innodb_thread_sleep_delay";
Variable_name Value
innodb_thread_sleep_delay 10000
2005-03-17 00:22:12 +01:00
set storage_engine=INNODB;
drop table if exists t1,t2,t3;
--- Testing varchar ---
--- Testing varchar ---
create table t1 (v varchar(10), c char(10), t text);
insert into t1 values('+ ', '+ ', '+ ');
set @a=repeat(' ',20);
insert into t1 values (concat('+',@a),concat('+',@a),concat('+',@a));
Warnings:
Note 1265 Data truncated for column 'v' at row 1
select concat('*',v,'*',c,'*',t,'*') from t1;
concat('*',v,'*',c,'*',t,'*')
*+ *+*+ *
*+ *+*+ *
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
2006-04-14 17:39:36 +02:00
`v` varchar(10) DEFAULT NULL,
`c` char(10) DEFAULT NULL,
2005-03-17 00:22:12 +01:00
`t` text
) ENGINE=InnoDB DEFAULT CHARSET=latin1
create table t2 like t1;
show create table t2;
Table Create Table
t2 CREATE TABLE `t2` (
2006-04-14 17:39:36 +02:00
`v` varchar(10) DEFAULT NULL,
`c` char(10) DEFAULT NULL,
2005-03-17 00:22:12 +01:00
`t` text
) ENGINE=InnoDB DEFAULT CHARSET=latin1
create table t3 select * from t1;
show create table t3;
Table Create Table
t3 CREATE TABLE `t3` (
2006-04-14 17:39:36 +02:00
`v` varchar(10) DEFAULT NULL,
`c` char(10) DEFAULT NULL,
2005-03-17 00:22:12 +01:00
`t` text
) ENGINE=InnoDB DEFAULT CHARSET=latin1
alter table t1 modify c varchar(10);
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
2006-04-14 17:39:36 +02:00
`v` varchar(10) DEFAULT NULL,
`c` varchar(10) DEFAULT NULL,
2005-03-17 00:22:12 +01:00
`t` text
) ENGINE=InnoDB DEFAULT CHARSET=latin1
alter table t1 modify v char(10);
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
2006-04-14 17:39:36 +02:00
`v` char(10) DEFAULT NULL,
`c` varchar(10) DEFAULT NULL,
2005-03-17 00:22:12 +01:00
`t` text
) ENGINE=InnoDB DEFAULT CHARSET=latin1
alter table t1 modify t varchar(10);
Warnings:
Note 1265 Data truncated for column 't' at row 2
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
2006-04-14 17:39:36 +02:00
`v` char(10) DEFAULT NULL,
`c` varchar(10) DEFAULT NULL,
`t` varchar(10) DEFAULT NULL
2005-03-17 00:22:12 +01:00
) ENGINE=InnoDB DEFAULT CHARSET=latin1
select concat('*',v,'*',c,'*',t,'*') from t1;
concat('*',v,'*',c,'*',t,'*')
*+*+*+ *
*+*+*+ *
drop table t1,t2,t3;
create table t1 (v varchar(10), c char(10), t text, key(v), key(c), key(t(10)));
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
2006-04-14 17:39:36 +02:00
`v` varchar(10) DEFAULT NULL,
`c` char(10) DEFAULT NULL,
2005-03-17 00:22:12 +01:00
`t` text,
KEY `v` (`v`),
KEY `c` (`c`),
KEY `t` (`t`(10))
) ENGINE=InnoDB DEFAULT CHARSET=latin1
select count(*) from t1;
count(*)
270
insert into t1 values(concat('a',char(1)),concat('a',char(1)),concat('a',char(1)));
select count(*) from t1 where v='a';
count(*)
10
select count(*) from t1 where c='a';
count(*)
10
select count(*) from t1 where t='a';
count(*)
10
select count(*) from t1 where v='a ';
count(*)
10
select count(*) from t1 where c='a ';
count(*)
10
select count(*) from t1 where t='a ';
count(*)
10
select count(*) from t1 where v between 'a' and 'a ';
count(*)
10
select count(*) from t1 where v between 'a' and 'a ' and v between 'a ' and 'b\n';
count(*)
10
select count(*) from t1 where v like 'a%';
count(*)
11
select count(*) from t1 where c like 'a%';
count(*)
11
select count(*) from t1 where t like 'a%';
count(*)
11
select count(*) from t1 where v like 'a %';
count(*)
9
explain select count(*) from t1 where v='a ';
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 ref v v 13 const # Using where; Using index
explain select count(*) from t1 where c='a ';
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 ref c c 11 const # Using where; Using index
explain select count(*) from t1 where t='a ';
id select_type table type possible_keys key key_len ref rows Extra
2007-02-15 07:06:41 +01:00
1 SIMPLE t1 ref t t 13 const # Using where
2005-03-17 00:22:12 +01:00
explain select count(*) from t1 where v like 'a%';
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 range v v 13 NULL # Using where; Using index
explain select count(*) from t1 where v between 'a' and 'a ';
id select_type table type possible_keys key key_len ref rows Extra
2005-09-29 23:34:19 +02:00
1 SIMPLE t1 ref v v 13 const # Using where; Using index
2005-03-17 00:22:12 +01:00
explain select count(*) from t1 where v between 'a' and 'a ' and v between 'a ' and 'b\n';
id select_type table type possible_keys key key_len ref rows Extra
2005-09-29 23:34:19 +02:00
1 SIMPLE t1 ref v v 13 const # Using where; Using index
2005-03-17 00:22:12 +01:00
alter table t1 add unique(v);
Fixes to tests and their results, to account for differences between InnoDB 1.0.4 and the old builtin.
All committed result differences have either been verified by me or copied from Oracle's provided
results (storage/innodb_plugin/mysql-test/*.result, storage/innodb_plugin/mysql-test/patches).
mysql-test/r/information_schema.result:
queries changed a bit
mysql-test/r/information_schema_db.result:
queries changed a bit
mysql-test/r/innodb-autoinc.result:
importing piece from storage/innodb_plugin/mysql-test/innodb-autoinc.result
mysql-test/r/innodb.result:
result close to storage/innodb_plugin/innodb.result, except 4095 pages instead of 8191, which makes
sense as Summit runs with a buffer pool of 64M, whereas the mentioned result file was made with
a buffer pool of 128M.
mysql-test/r/mysqlshow.result:
InnoDB I_S tables have arrived
mysql-test/suite/funcs_1/r/is_columns_is.result:
queries changed a bit
mysql-test/suite/funcs_1/r/is_columns_is_embedded.result:
queries changed a bit
mysql-test/suite/funcs_1/r/is_tables_is.result:
queries changed a bit
mysql-test/suite/funcs_1/t/is_columns_is.test:
making I_S queries ignore InnoDB I_S tables
mysql-test/suite/funcs_1/t/is_columns_is_embedded.test:
making I_S queries ignore InnoDB I_S tables
mysql-test/suite/funcs_1/t/is_tables_is.test:
making I_S queries ignore InnoDB I_S tables
mysql-test/suite/innodb/r/innodb-zip.result:
result update
mysql-test/suite/innodb/t/innodb-zip.test:
439, as size of prefix key, throws error with certain system zlib (ubuntu
"intrepid") but not with zlib bundled with MySQL, because zlib's
compressBound() are different (and used by InnoDB's page_zip_empty_size()).
mysql-test/suite/sys_vars/r/innodb_file_per_table_basic.result:
result update
mysql-test/suite/sys_vars/r/innodb_lock_wait_timeout_basic.result:
result update
mysql-test/suite/sys_vars/r/innodb_sync_spin_loops_basic_32.result:
result update (default value is 30 in the plugin, 20 in the builtin)
mysql-test/suite/sys_vars/r/innodb_sync_spin_loops_basic_64.result:
result update (default value is 30 in the plugin, 20 in the builtin)
mysql-test/suite/sys_vars/r/table_definition_cache_basic.result:
result update (default value is 400 in Summit)
mysql-test/suite/sys_vars/t/innodb_file_per_table_basic.test:
variable is writable in the plugin (patch from Oracle)
mysql-test/suite/sys_vars/t/innodb_lock_wait_timeout_basic.test:
variable is per-session in the plugin (patch from Oracle)
mysql-test/t/information_schema.test:
making I_S queries ignore InnoDB I_S tables
mysql-test/t/information_schema_db.test:
making I_S queries ignore InnoDB I_S tables
mysql-test/t/innodb-autoinc.test:
importing piece from storage/innodb_plugin/mysql-test/innodb-autoinc.test
mysql-test/t/innodb.test:
importing most of storage/innodb_plugin/t/innodb.test. Most replace_result were not needed (no path printed), some where (for --embedded).
mysql-test/t/mysqlshow.test:
output of test now depends on InnoDB or not InnoDB. As there is no way to make mysqlshow
produce a single output in those two cases (no way to make it exclude InnoDB I_S
tables), let the test depend on InnoDB, it isn't a very selective condition, and the
test is simple enough.
storage/innobase/CMakeLists.txt:
thanks Vlad for the noticing () vs {}
2009-08-07 22:04:53 +02:00
ERROR 23000: Duplicate entry 'v' for key 'v_2'
2005-03-17 00:22:12 +01:00
alter table t1 add key(v);
select concat('*',v,'*',c,'*',t,'*') as qq from t1 where v='a';
qq
*a*a*a*
*a *a*a *
*a *a*a *
*a *a*a *
*a *a*a *
*a *a*a *
*a *a*a *
*a *a*a *
*a *a*a *
*a *a*a *
explain select * from t1 where v='a';
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 ref v,v_2 # 13 const # Using where
select v,count(*) from t1 group by v limit 10;
v count(*)
a 1
a 10
b 10
c 10
d 10
e 10
f 10
g 10
h 10
i 10
select v,count(t) from t1 group by v limit 10;
v count(t)
a 1
a 10
b 10
c 10
d 10
e 10
f 10
g 10
h 10
i 10
select v,count(c) from t1 group by v limit 10;
v count(c)
a 1
a 10
b 10
c 10
d 10
e 10
f 10
g 10
h 10
i 10
select sql_big_result v,count(t) from t1 group by v limit 10;
v count(t)
a 1
a 10
b 10
c 10
d 10
e 10
f 10
g 10
h 10
i 10
select sql_big_result v,count(c) from t1 group by v limit 10;
v count(c)
a 1
2006-10-09 17:51:41 +02:00
a 10
b 10
c 10
d 10
e 10
f 10
g 10
2005-03-17 00:22:12 +01:00
h 10
2006-10-09 17:51:41 +02:00
i 10
2005-03-17 00:22:12 +01:00
select c,count(*) from t1 group by c limit 10;
c count(*)
a 1
a 10
b 10
c 10
d 10
e 10
f 10
g 10
h 10
i 10
select c,count(t) from t1 group by c limit 10;
c count(t)
a 1
a 10
b 10
c 10
d 10
e 10
f 10
g 10
h 10
i 10
select sql_big_result c,count(t) from t1 group by c limit 10;
c count(t)
a 1
a 10
b 10
c 10
d 10
e 10
f 10
g 10
h 10
i 10
select t,count(*) from t1 group by t limit 10;
t count(*)
a 1
a 10
b 10
c 10
d 10
e 10
f 10
g 10
h 10
i 10
select t,count(t) from t1 group by t limit 10;
t count(t)
a 1
a 10
b 10
c 10
d 10
e 10
f 10
g 10
h 10
i 10
select sql_big_result t,count(t) from t1 group by t limit 10;
t count(t)
a 1
a 10
b 10
c 10
d 10
e 10
f 10
g 10
h 10
i 10
alter table t1 modify v varchar(300), drop key v, drop key v_2, add key v (v);
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
2006-04-14 17:39:36 +02:00
`v` varchar(300) DEFAULT NULL,
`c` char(10) DEFAULT NULL,
2005-03-17 00:22:12 +01:00
`t` text,
KEY `c` (`c`),
KEY `t` (`t`(10)),
KEY `v` (`v`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1
select count(*) from t1 where v='a';
count(*)
10
select count(*) from t1 where v='a ';
count(*)
10
select count(*) from t1 where v between 'a' and 'a ';
count(*)
10
select count(*) from t1 where v between 'a' and 'a ' and v between 'a ' and 'b\n';
count(*)
10
select count(*) from t1 where v like 'a%';
count(*)
11
select count(*) from t1 where v like 'a %';
count(*)
9
explain select count(*) from t1 where v='a ';
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 ref v v 303 const # Using where; Using index
explain select count(*) from t1 where v like 'a%';
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 range v v 303 NULL # Using where; Using index
explain select count(*) from t1 where v between 'a' and 'a ';
id select_type table type possible_keys key key_len ref rows Extra
2005-09-29 23:34:19 +02:00
1 SIMPLE t1 ref v v 303 const # Using where; Using index
2005-03-17 00:22:12 +01:00
explain select count(*) from t1 where v between 'a' and 'a ' and v between 'a ' and 'b\n';
id select_type table type possible_keys key key_len ref rows Extra
2005-09-29 23:34:19 +02:00
1 SIMPLE t1 ref v v 303 const # Using where; Using index
2005-03-17 00:22:12 +01:00
explain select * from t1 where v='a';
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 ref v v 303 const # Using where
select v,count(*) from t1 group by v limit 10;
v count(*)
a 1
a 10
b 10
c 10
d 10
e 10
f 10
g 10
h 10
i 10
select v,count(t) from t1 group by v limit 10;
v count(t)
a 1
a 10
b 10
c 10
d 10
e 10
f 10
g 10
h 10
i 10
select sql_big_result v,count(t) from t1 group by v limit 10;
v count(t)
a 1
a 10
b 10
c 10
d 10
e 10
f 10
g 10
h 10
i 10
alter table t1 drop key v, add key v (v(30));
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
2006-04-14 17:39:36 +02:00
`v` varchar(300) DEFAULT NULL,
`c` char(10) DEFAULT NULL,
2005-03-17 00:22:12 +01:00
`t` text,
KEY `c` (`c`),
KEY `t` (`t`(10)),
KEY `v` (`v`(30))
) ENGINE=InnoDB DEFAULT CHARSET=latin1
select count(*) from t1 where v='a';
count(*)
10
select count(*) from t1 where v='a ';
count(*)
10
select count(*) from t1 where v between 'a' and 'a ';
count(*)
10
select count(*) from t1 where v between 'a' and 'a ' and v between 'a ' and 'b\n';
count(*)
10
select count(*) from t1 where v like 'a%';
count(*)
11
select count(*) from t1 where v like 'a %';
count(*)
9
explain select count(*) from t1 where v='a ';
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 ref v v 33 const # Using where
explain select count(*) from t1 where v like 'a%';
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 range v v 33 NULL # Using where
explain select count(*) from t1 where v between 'a' and 'a ';
id select_type table type possible_keys key key_len ref rows Extra
2005-09-29 23:34:19 +02:00
1 SIMPLE t1 ref v v 33 const # Using where
2005-03-17 00:22:12 +01:00
explain select count(*) from t1 where v between 'a' and 'a ' and v between 'a ' and 'b\n';
id select_type table type possible_keys key key_len ref rows Extra
2005-09-29 23:34:19 +02:00
1 SIMPLE t1 ref v v 33 const # Using where
2005-03-17 00:22:12 +01:00
explain select * from t1 where v='a';
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 ref v v 33 const # Using where
select v,count(*) from t1 group by v limit 10;
v count(*)
a 1
a 10
b 10
c 10
d 10
e 10
f 10
g 10
h 10
i 10
select v,count(t) from t1 group by v limit 10;
v count(t)
a 1
a 10
b 10
c 10
d 10
e 10
f 10
g 10
h 10
i 10
select sql_big_result v,count(t) from t1 group by v limit 10;
v count(t)
a 1
a 10
b 10
c 10
d 10
e 10
f 10
g 10
h 10
i 10
alter table t1 modify v varchar(600), drop key v, add key v (v);
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
2006-04-14 17:39:36 +02:00
`v` varchar(600) DEFAULT NULL,
`c` char(10) DEFAULT NULL,
2005-03-17 00:22:12 +01:00
`t` text,
KEY `c` (`c`),
KEY `t` (`t`(10)),
KEY `v` (`v`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1
select v,count(*) from t1 group by v limit 10;
v count(*)
a 1
a 10
b 10
c 10
d 10
e 10
f 10
g 10
h 10
i 10
select v,count(t) from t1 group by v limit 10;
v count(t)
a 1
a 10
b 10
c 10
d 10
e 10
f 10
g 10
h 10
i 10
select sql_big_result v,count(t) from t1 group by v limit 10;
v count(t)
a 1
a 10
b 10
c 10
d 10
e 10
f 10
g 10
h 10
i 10
drop table t1;
create table t1 (a char(10), unique (a));
insert into t1 values ('a ');
insert into t1 values ('a ');
2006-04-14 17:39:36 +02:00
ERROR 23000: Duplicate entry 'a' for key 'a'
2005-03-17 00:22:12 +01:00
alter table t1 modify a varchar(10);
insert into t1 values ('a '),('a '),('a '),('a ');
2006-04-14 17:39:36 +02:00
ERROR 23000: Duplicate entry 'a ' for key 'a'
2005-03-17 00:22:12 +01:00
insert into t1 values ('a ');
2006-04-14 17:39:36 +02:00
ERROR 23000: Duplicate entry 'a ' for key 'a'
2005-03-17 00:22:12 +01:00
insert into t1 values ('a ');
2006-04-14 17:39:36 +02:00
ERROR 23000: Duplicate entry 'a ' for key 'a'
2005-03-17 00:22:12 +01:00
insert into t1 values ('a ');
2006-04-14 17:39:36 +02:00
ERROR 23000: Duplicate entry 'a ' for key 'a'
2005-03-17 00:22:12 +01:00
update t1 set a='a ' where a like 'a%';
select concat(a,'.') from t1;
concat(a,'.')
a .
update t1 set a='abc ' where a like 'a ';
select concat(a,'.') from t1;
concat(a,'.')
a .
update t1 set a='a ' where a like 'a %';
select concat(a,'.') from t1;
concat(a,'.')
a .
update t1 set a='a ' where a like 'a ';
select concat(a,'.') from t1;
concat(a,'.')
a .
drop table t1;
create table t1 (v varchar(10), c char(10), t text, key(v(5)), key(c(5)), key(t(5)));
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
2006-04-14 17:39:36 +02:00
`v` varchar(10) DEFAULT NULL,
`c` char(10) DEFAULT NULL,
2005-03-17 00:22:12 +01:00
`t` text,
KEY `v` (`v`(5)),
KEY `c` (`c`(5)),
KEY `t` (`t`(5))
) ENGINE=InnoDB DEFAULT CHARSET=latin1
drop table t1;
create table t1 (v char(10) character set utf8);
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
2006-04-14 17:39:36 +02:00
`v` char(10) CHARACTER SET utf8 DEFAULT NULL
2005-03-17 00:22:12 +01:00
) ENGINE=InnoDB DEFAULT CHARSET=latin1
drop table t1;
create table t1 (v varchar(10), c char(10)) row_format=fixed;
Fixes to tests and their results, to account for differences between InnoDB 1.0.4 and the old builtin.
All committed result differences have either been verified by me or copied from Oracle's provided
results (storage/innodb_plugin/mysql-test/*.result, storage/innodb_plugin/mysql-test/patches).
mysql-test/r/information_schema.result:
queries changed a bit
mysql-test/r/information_schema_db.result:
queries changed a bit
mysql-test/r/innodb-autoinc.result:
importing piece from storage/innodb_plugin/mysql-test/innodb-autoinc.result
mysql-test/r/innodb.result:
result close to storage/innodb_plugin/innodb.result, except 4095 pages instead of 8191, which makes
sense as Summit runs with a buffer pool of 64M, whereas the mentioned result file was made with
a buffer pool of 128M.
mysql-test/r/mysqlshow.result:
InnoDB I_S tables have arrived
mysql-test/suite/funcs_1/r/is_columns_is.result:
queries changed a bit
mysql-test/suite/funcs_1/r/is_columns_is_embedded.result:
queries changed a bit
mysql-test/suite/funcs_1/r/is_tables_is.result:
queries changed a bit
mysql-test/suite/funcs_1/t/is_columns_is.test:
making I_S queries ignore InnoDB I_S tables
mysql-test/suite/funcs_1/t/is_columns_is_embedded.test:
making I_S queries ignore InnoDB I_S tables
mysql-test/suite/funcs_1/t/is_tables_is.test:
making I_S queries ignore InnoDB I_S tables
mysql-test/suite/innodb/r/innodb-zip.result:
result update
mysql-test/suite/innodb/t/innodb-zip.test:
439, as size of prefix key, throws error with certain system zlib (ubuntu
"intrepid") but not with zlib bundled with MySQL, because zlib's
compressBound() are different (and used by InnoDB's page_zip_empty_size()).
mysql-test/suite/sys_vars/r/innodb_file_per_table_basic.result:
result update
mysql-test/suite/sys_vars/r/innodb_lock_wait_timeout_basic.result:
result update
mysql-test/suite/sys_vars/r/innodb_sync_spin_loops_basic_32.result:
result update (default value is 30 in the plugin, 20 in the builtin)
mysql-test/suite/sys_vars/r/innodb_sync_spin_loops_basic_64.result:
result update (default value is 30 in the plugin, 20 in the builtin)
mysql-test/suite/sys_vars/r/table_definition_cache_basic.result:
result update (default value is 400 in Summit)
mysql-test/suite/sys_vars/t/innodb_file_per_table_basic.test:
variable is writable in the plugin (patch from Oracle)
mysql-test/suite/sys_vars/t/innodb_lock_wait_timeout_basic.test:
variable is per-session in the plugin (patch from Oracle)
mysql-test/t/information_schema.test:
making I_S queries ignore InnoDB I_S tables
mysql-test/t/information_schema_db.test:
making I_S queries ignore InnoDB I_S tables
mysql-test/t/innodb-autoinc.test:
importing piece from storage/innodb_plugin/mysql-test/innodb-autoinc.test
mysql-test/t/innodb.test:
importing most of storage/innodb_plugin/t/innodb.test. Most replace_result were not needed (no path printed), some where (for --embedded).
mysql-test/t/mysqlshow.test:
output of test now depends on InnoDB or not InnoDB. As there is no way to make mysqlshow
produce a single output in those two cases (no way to make it exclude InnoDB I_S
tables), let the test depend on InnoDB, it isn't a very selective condition, and the
test is simple enough.
storage/innobase/CMakeLists.txt:
thanks Vlad for the noticing () vs {}
2009-08-07 22:04:53 +02:00
Warnings:
Warning 1478 InnoDB: assuming ROW_FORMAT=COMPACT.
2005-03-17 00:22:12 +01:00
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
2006-04-14 17:39:36 +02:00
`v` varchar(10) DEFAULT NULL,
`c` char(10) DEFAULT NULL
2005-03-17 00:22:12 +01:00
) ENGINE=InnoDB DEFAULT CHARSET=latin1 ROW_FORMAT=FIXED
insert into t1 values('a','a'),('a ','a ');
select concat('*',v,'*',c,'*') from t1;
concat('*',v,'*',c,'*')
*a*a*
*a *a*
drop table t1;
create table t1 (v varchar(65530), key(v(10)));
insert into t1 values(repeat('a',65530));
select length(v) from t1 where v=repeat('a',65530);
length(v)
65530
drop table t1;
2005-04-26 16:46:52 +02:00
create table t1(a int, b varchar(12), key ba(b, a));
insert into t1 values (1, 'A'), (20, NULL);
explain select * from t1 where a=20 and b is null;
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 ref ba ba 20 const,const 1 Using where; Using index
select * from t1 where a=20 and b is null;
a b
20 NULL
drop table t1;
2005-03-17 00:22:12 +01:00
create table t1 (v varchar(65530), key(v));
2005-12-06 20:02:40 +01:00
Warnings:
Warning 1071 Specified key was too long; max key length is 767 bytes
drop table t1;
2005-03-17 00:22:12 +01:00
create table t1 (v varchar(65536));
Warnings:
Note 1246 Converting column 'v' from VARCHAR to TEXT
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
`v` mediumtext
) ENGINE=InnoDB DEFAULT CHARSET=latin1
drop table t1;
create table t1 (v varchar(65530) character set utf8);
Warnings:
Note 1246 Converting column 'v' from VARCHAR to TEXT
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
2006-04-14 17:39:36 +02:00
`v` mediumtext CHARACTER SET utf8
2005-03-17 00:22:12 +01:00
) ENGINE=InnoDB DEFAULT CHARSET=latin1
drop table t1;
set storage_engine=MyISAM;
2004-12-06 01:00:37 +01:00
create table t1 (v varchar(16384)) engine=innodb;
2005-03-16 16:48:13 +01:00
drop table t1;
2005-06-06 13:03:33 +02:00
create table t1 (a char(1), b char(1), key(a, b)) engine=innodb;
insert into t1 values ('8', '6'), ('4', '7');
select min(a) from t1;
min(a)
4
select min(b) from t1 where a='8';
min(b)
6
drop table t1;
2005-06-06 19:41:52 +02:00
CREATE TABLE t1 ( `a` int(11) NOT NULL auto_increment, `b` int(11) default NULL,PRIMARY KEY (`a`),UNIQUE KEY `b` (`b`)) ENGINE=innodb;
insert into t1 (b) values (1);
replace into t1 (b) values (2), (1), (3);
select * from t1;
a b
2007-11-07 16:59:58 +01:00
3 1
2008-05-07 07:58:21 +02:00
2 2
2005-06-07 11:32:39 +02:00
4 3
2005-06-06 19:41:52 +02:00
truncate table t1;
insert into t1 (b) values (1);
replace into t1 (b) values (2);
replace into t1 (b) values (1);
replace into t1 (b) values (3);
select * from t1;
a b
2007-11-07 16:59:58 +01:00
3 1
2008-05-07 07:58:21 +02:00
2 2
2005-06-07 11:32:39 +02:00
4 3
2005-06-06 19:41:52 +02:00
drop table t1;
2005-06-07 11:27:37 +02:00
create table t1 (rowid int not null auto_increment, val int not null,primary
key (rowid), unique(val)) engine=innodb;
replace into t1 (val) values ('1'),('2');
replace into t1 (val) values ('1'),('2');
insert into t1 (val) values ('1'),('2');
2006-04-14 17:39:36 +02:00
ERROR 23000: Duplicate entry '1' for key 'val'
2005-06-07 11:27:37 +02:00
select * from t1;
rowid val
3 1
4 2
drop table t1;
2005-06-06 19:41:52 +02:00
create table t1 (a int not null auto_increment primary key, val int) engine=InnoDB;
insert into t1 (val) values (1);
update t1 set a=2 where a=1;
insert into t1 (val) values (1);
2006-04-14 17:39:36 +02:00
ERROR 23000: Duplicate entry '2' for key 'PRIMARY'
2005-06-06 19:41:52 +02:00
select * from t1;
a val
2 1
drop table t1;
2005-07-14 15:51:05 +02:00
CREATE TABLE t1 (GRADE DECIMAL(4) NOT NULL, PRIMARY KEY (GRADE)) ENGINE=INNODB;
INSERT INTO t1 (GRADE) VALUES (151),(252),(343);
SELECT GRADE FROM t1 WHERE GRADE > 160 AND GRADE < 300;
GRADE
252
SELECT GRADE FROM t1 WHERE GRADE= 151;
GRADE
151
DROP TABLE t1;
2005-08-09 20:05:07 +02:00
create table t1 (f1 varchar(10), f2 varchar(10), primary key (f1,f2)) engine=innodb;
create table t2 (f3 varchar(10), f4 varchar(10), key (f4)) engine=innodb;
insert into t2 values ('aa','cc');
insert into t1 values ('aa','bb'),('aa','cc');
delete t1 from t1,t2 where f1=f3 and f4='cc';
select * from t1;
f1 f2
drop table t1,t2;
2005-08-17 10:00:20 +02:00
CREATE TABLE t1 (
id INTEGER NOT NULL AUTO_INCREMENT, PRIMARY KEY (id)
) ENGINE=InnoDB;
CREATE TABLE t2 (
id INTEGER NOT NULL,
FOREIGN KEY (id) REFERENCES t1 (id)
) ENGINE=InnoDB;
INSERT INTO t1 (id) VALUES (NULL);
SELECT * FROM t1;
id
1
TRUNCATE t1;
INSERT INTO t1 (id) VALUES (NULL);
SELECT * FROM t1;
id
1
DELETE FROM t1;
TRUNCATE t1;
INSERT INTO t1 (id) VALUES (NULL);
SELECT * FROM t1;
id
1
DROP TABLE t2, t1;
2005-09-06 15:08:05 +02:00
CREATE TABLE t1
(
id INT PRIMARY KEY
) ENGINE=InnoDB;
CREATE TEMPORARY TABLE t2
(
id INT NOT NULL PRIMARY KEY,
b INT,
FOREIGN KEY (b) REFERENCES test.t1(id)
) ENGINE=InnoDB;
Got one of the listed errors
DROP TABLE t1;
2005-09-23 10:20:34 +02:00
create table t1 (col1 varchar(2000), index (col1(767)))
character set = latin1 engine = innodb;
create table t2 (col1 char(255), index (col1))
character set = latin1 engine = innodb;
create table t3 (col1 binary(255), index (col1))
character set = latin1 engine = innodb;
create table t4 (col1 varchar(767), index (col1))
character set = latin1 engine = innodb;
create table t5 (col1 varchar(767) primary key)
character set = latin1 engine = innodb;
create table t6 (col1 varbinary(767) primary key)
character set = latin1 engine = innodb;
create table t7 (col1 text, index(col1(767)))
character set = latin1 engine = innodb;
create table t8 (col1 blob, index(col1(767)))
character set = latin1 engine = innodb;
create table t9 (col1 varchar(512), col2 varchar(512), index(col1, col2))
character set = latin1 engine = innodb;
2005-12-06 20:02:40 +01:00
show create table t9;
Table Create Table
t9 CREATE TABLE `t9` (
2006-04-14 17:39:36 +02:00
`col1` varchar(512) DEFAULT NULL,
`col2` varchar(512) DEFAULT NULL,
2005-12-06 20:02:40 +01:00
KEY `col1` (`col1`,`col2`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1
2005-09-23 10:20:34 +02:00
drop table t1, t2, t3, t4, t5, t6, t7, t8, t9;
2005-12-06 20:02:40 +01:00
create table t1 (col1 varchar(768), index(col1))
2005-09-23 10:20:34 +02:00
character set = latin1 engine = innodb;
2005-12-06 20:02:40 +01:00
Warnings:
Warning 1071 Specified key was too long; max key length is 767 bytes
create table t2 (col1 varbinary(768), index(col1))
2005-09-23 10:20:34 +02:00
character set = latin1 engine = innodb;
2005-12-06 20:02:40 +01:00
Warnings:
Warning 1071 Specified key was too long; max key length is 767 bytes
create table t3 (col1 text, index(col1(768)))
2005-09-23 10:20:34 +02:00
character set = latin1 engine = innodb;
2005-12-06 20:02:40 +01:00
Warnings:
Warning 1071 Specified key was too long; max key length is 767 bytes
create table t4 (col1 blob, index(col1(768)))
2005-09-23 10:20:34 +02:00
character set = latin1 engine = innodb;
2005-12-06 20:02:40 +01:00
Warnings:
Warning 1071 Specified key was too long; max key length is 767 bytes
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
2006-04-14 17:39:36 +02:00
`col1` varchar(768) DEFAULT NULL,
2005-12-06 20:02:40 +01:00
KEY `col1` (`col1`(767))
) ENGINE=InnoDB DEFAULT CHARSET=latin1
drop table t1, t2, t3, t4;
create table t1 (col1 varchar(768) primary key)
character set = latin1 engine = innodb;
ERROR 42000: Specified key was too long; max key length is 767 bytes
create table t2 (col1 varbinary(768) primary key)
character set = latin1 engine = innodb;
ERROR 42000: Specified key was too long; max key length is 767 bytes
create table t3 (col1 text, primary key(col1(768)))
character set = latin1 engine = innodb;
ERROR 42000: Specified key was too long; max key length is 767 bytes
create table t4 (col1 blob, primary key(col1(768)))
2005-09-23 10:20:34 +02:00
character set = latin1 engine = innodb;
2005-12-06 20:02:40 +01:00
ERROR 42000: Specified key was too long; max key length is 767 bytes
2005-09-23 15:22:27 +02:00
CREATE TABLE t1
(
id INT PRIMARY KEY
) ENGINE=InnoDB;
CREATE TABLE t2
(
v INT,
CONSTRAINT c1 FOREIGN KEY (v) REFERENCES t1(id)
) ENGINE=InnoDB;
INSERT INTO t2 VALUES(2);
Applied innodb-5.1-ss594 snapshot.
Fixed BUG#19542 "InnoDB doesn't increase the Handler_read_prev couter".
Fixed BUG#19609 "Case sensitivity of innodb_data_file_path gives stupid error".
Fixed BUG#19727 "InnoDB crashed server and crashed tables are ot recoverable".
Also:
* Remove remnants of the obsolete concept of memoryfixing tables and indexes.
* Remove unused dict_table_LRU_trim().
* Remove unused 'trx' parameter from dict_table_get_on_id_low(),
dict_table_get(), dict_table_get_and_increment_handle_count().
* Add a normal linked list implementation.
* Add a work queue implementation.
* Add 'level' parameter to mutex_create() and rw_lock_create().
Remove mutex_set_level() and rw_lock_set_level().
* Rename SYNC_LEVEL_NONE to SYNC_LEVEL_VARYING.
* Add support for bound ids in InnoDB's parser.
* Define UNIV_BTR_DEBUG for enabling consistency checks of
FIL_PAGE_NEXT and FIL_PAGE_PREV when accessing sibling
pages of B-tree indexes.
btr_validate_level(): Check the validity of the doubly linked
list formed by FIL_PAGE_NEXT and FIL_PAGE_PREV.
* Adapt InnoDB to the new tablename to filename encoding in MySQL 5.1.
ut_print_name(), ut_print_name1(): Add parameter 'table_id' for
distinguishing names of tables from other identifiers.
New: innobase_convert_from_table_id(), innobase_convert_from_id(),
innobase_convert_from_filename(), innobase_get_charset.
dict_accept(), dict_scan_id(), dict_scan_col(), dict_scan_table_name(),
dict_skip_word(), dict_create_foreign_constraints_low(): Add
parameter 'cs' so that isspace() can be replaced with my_isspace(),
whose operation depends on the connection character set.
dict_scan_id(): Convert identifier to UTF-8.
dict_str_starts_with_keyword(): New extern function, to replace
dict_accept() in row_search_for_mysql().
mysql_get_identifier_quote_char(): Replaced with innobase_print_identifier().
ha_innobase::create(): Remove the thd->convert_strin() call. Pass the
statement to InnoDB in the connection character set and let InnoDB
convert the identifier to UTF-8.
* Add max_row_size to dict_table_t.
* btr0cur.c
btr_copy_externally_stored_field(): Only set the 'offset' variable
when needed.
* buf0buf.c
buf_page_io_complete(): Write to the error log if the page number or
the space id o the disk do not match those in memory. Also write to
the error log if a page was read from the doublewrite buffer. The
doublewrite buffer should be only read by the lower-level function
fil_io() at database startup.
* dict0dict.c
dict_scan_table_name(): Remove fallback to differently encoded name
when the table is not found. The encoding is handled at a higher level.
* ha_innodb.cc
Increment statistic counter in ha_innobase::index_prev() (bug 19542).
Add innobase_convert_string wrapper function and a new file
ha_prototypes.h.
innobase_print_identifier(): Remove TODO comment before calling
get_quote_char_for_identifier(). That function apparently assumes
the identifier to be encoded in UTF-8.
* ibuf0ibuf.c|h
ibuf_count_get(), ibuf_counts[], ibuf_count_inited(): Define these
only #ifdef UNIV_IBUF_DEBUG. Previously, when compiled without
UNIV_IBUF_DEBUG, invoking ibuf_count_get() would crash InnoDB.
The function is only being called #ifdef UNIV_IBUF_DEBUG.
* innodb.result
Adjust the results for changes in the foreign key error messages.
* mem0mem.c|h
New: mem_heap_dup(), mem_heap_printf(), mem_heap_cat().
* os0file.c
Check the page trailers also after writing to disk. This improves
chances of diagnosing bug 18886.
os_file_check_page_trailers(): New function for checking that the
two copies of the LSN stamped on the page match.
os_aio_simulated_handle(): Call os_file_check_page_trailers()
before and after os_file_write().
* row0mysql.c
Move trx_commit_for_mysql(trx) calls before calls to
row_mysql_unlock_data_dictionary(trx) (bug 19727).
* row0sel.c
row_fetch_print(): Handle SQL NULL values without crashing.
row_sel_store_mysql_rec(): Remove useless call to rec_get_nth_field
when handling an externally stored column.
Fetch externally stored fields when using InnoDB's internal SQL
parser.
Optimize BLOB selects by using prebuilt->blob_heap directly instead
of first reading BLOB data to a temporary heap and then copying it
to prebuilt->blob_heap.
* srv0srv.c
srv_master_thread(): Remove unreachable code.
* srv0start.c
srv_parse_data_file_paths_and_sizes(): Accept lower-case 'm' and
'g' as abbreviations of megabyte and gigabyte (bug 19609).
srv_parse_megabytes(): New fuction.
* ut0dbg.c|h
Implement InnoDB assertions (ut_a and ut_error) with abort() when
the code is compiled with GCC 3 or later on other platforms than
Windows or Netware. Also disable the variable ut_dbg_stop_threads
and the function ut_dbg_stop_thread() i this case, unless
UNIV_SYC_DEBUG is defined. This should allow the compiler to
generate more compact code for assertions.
* ut0list.c|h
Add ib_list_create_heap().
mysql-test/r/innodb.result:
Applied innodb-5.1-ss594 snapshot.
mysql-test/t/innodb.test:
Copy the comment from the beginning of the file
to the end because MySQL developers continue
adding test cases to this file.
sql/ha_innodb.cc:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/CMakeLists.txt:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/Makefile.am:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/btr/btr0btr.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/btr/btr0cur.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/btr/btr0pcur.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/btr/btr0sea.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/buf/buf0buf.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/buf/buf0flu.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/data/data0type.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/dict/dict0crea.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/dict/dict0dict.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/dict/dict0load.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/dict/dict0mem.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/fil/fil0fil.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/ha/hash0hash.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/ibuf/ibuf0ibuf.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/data0type.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/dict0dict.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/dict0dict.ic:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/dict0mem.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/fil0fil.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/fsp0fsp.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/ibuf0ibuf.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/mem0mem.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/pars0pars.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/pars0sym.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/pars0types.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/rem0rec.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/row0purge.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/row0undo.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/srv0srv.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/sync0rw.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/sync0sync.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/univ.i:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/ut0dbg.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/ut0ut.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/lock/lock0lock.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/log/log0log.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/log/log0recv.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/mem/mem0dbg.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/mem/mem0mem.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/mem/mem0pool.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/os/os0file.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/os/os0thread.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/pars/lexyy.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/pars/pars0lex.l:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/pars/pars0pars.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/pars/pars0sym.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/row/row0ins.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/row/row0mysql.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/row/row0purge.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/row/row0row.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/row/row0sel.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/row/row0upd.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/srv/srv0srv.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/srv/srv0start.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/sync/sync0arr.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/sync/sync0rw.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/sync/sync0sync.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/thr/thr0loc.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/trx/trx0purge.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/trx/trx0rec.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/trx/trx0roll.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/trx/trx0rseg.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/trx/trx0sys.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/trx/trx0trx.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/ut/Makefile.am:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/ut/ut0dbg.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/ut/ut0ut.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/ha_prototypes.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/ut0list.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/ut0list.ic:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/ut0wqueue.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/ut/ut0list.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/ut/ut0wqueue.c:
Applied innodb-5.1-ss594 snapshot.
2006-06-01 08:34:04 +02:00
ERROR 23000: Cannot add or update a child row: a foreign key constraint fails (`test`.`t2`, CONSTRAINT `c1` FOREIGN KEY (`v`) REFERENCES `t1` (`id`))
2005-09-23 15:22:27 +02:00
INSERT INTO t1 VALUES(1);
INSERT INTO t2 VALUES(1);
DELETE FROM t1 WHERE id = 1;
Applied innodb-5.1-ss594 snapshot.
Fixed BUG#19542 "InnoDB doesn't increase the Handler_read_prev couter".
Fixed BUG#19609 "Case sensitivity of innodb_data_file_path gives stupid error".
Fixed BUG#19727 "InnoDB crashed server and crashed tables are ot recoverable".
Also:
* Remove remnants of the obsolete concept of memoryfixing tables and indexes.
* Remove unused dict_table_LRU_trim().
* Remove unused 'trx' parameter from dict_table_get_on_id_low(),
dict_table_get(), dict_table_get_and_increment_handle_count().
* Add a normal linked list implementation.
* Add a work queue implementation.
* Add 'level' parameter to mutex_create() and rw_lock_create().
Remove mutex_set_level() and rw_lock_set_level().
* Rename SYNC_LEVEL_NONE to SYNC_LEVEL_VARYING.
* Add support for bound ids in InnoDB's parser.
* Define UNIV_BTR_DEBUG for enabling consistency checks of
FIL_PAGE_NEXT and FIL_PAGE_PREV when accessing sibling
pages of B-tree indexes.
btr_validate_level(): Check the validity of the doubly linked
list formed by FIL_PAGE_NEXT and FIL_PAGE_PREV.
* Adapt InnoDB to the new tablename to filename encoding in MySQL 5.1.
ut_print_name(), ut_print_name1(): Add parameter 'table_id' for
distinguishing names of tables from other identifiers.
New: innobase_convert_from_table_id(), innobase_convert_from_id(),
innobase_convert_from_filename(), innobase_get_charset.
dict_accept(), dict_scan_id(), dict_scan_col(), dict_scan_table_name(),
dict_skip_word(), dict_create_foreign_constraints_low(): Add
parameter 'cs' so that isspace() can be replaced with my_isspace(),
whose operation depends on the connection character set.
dict_scan_id(): Convert identifier to UTF-8.
dict_str_starts_with_keyword(): New extern function, to replace
dict_accept() in row_search_for_mysql().
mysql_get_identifier_quote_char(): Replaced with innobase_print_identifier().
ha_innobase::create(): Remove the thd->convert_strin() call. Pass the
statement to InnoDB in the connection character set and let InnoDB
convert the identifier to UTF-8.
* Add max_row_size to dict_table_t.
* btr0cur.c
btr_copy_externally_stored_field(): Only set the 'offset' variable
when needed.
* buf0buf.c
buf_page_io_complete(): Write to the error log if the page number or
the space id o the disk do not match those in memory. Also write to
the error log if a page was read from the doublewrite buffer. The
doublewrite buffer should be only read by the lower-level function
fil_io() at database startup.
* dict0dict.c
dict_scan_table_name(): Remove fallback to differently encoded name
when the table is not found. The encoding is handled at a higher level.
* ha_innodb.cc
Increment statistic counter in ha_innobase::index_prev() (bug 19542).
Add innobase_convert_string wrapper function and a new file
ha_prototypes.h.
innobase_print_identifier(): Remove TODO comment before calling
get_quote_char_for_identifier(). That function apparently assumes
the identifier to be encoded in UTF-8.
* ibuf0ibuf.c|h
ibuf_count_get(), ibuf_counts[], ibuf_count_inited(): Define these
only #ifdef UNIV_IBUF_DEBUG. Previously, when compiled without
UNIV_IBUF_DEBUG, invoking ibuf_count_get() would crash InnoDB.
The function is only being called #ifdef UNIV_IBUF_DEBUG.
* innodb.result
Adjust the results for changes in the foreign key error messages.
* mem0mem.c|h
New: mem_heap_dup(), mem_heap_printf(), mem_heap_cat().
* os0file.c
Check the page trailers also after writing to disk. This improves
chances of diagnosing bug 18886.
os_file_check_page_trailers(): New function for checking that the
two copies of the LSN stamped on the page match.
os_aio_simulated_handle(): Call os_file_check_page_trailers()
before and after os_file_write().
* row0mysql.c
Move trx_commit_for_mysql(trx) calls before calls to
row_mysql_unlock_data_dictionary(trx) (bug 19727).
* row0sel.c
row_fetch_print(): Handle SQL NULL values without crashing.
row_sel_store_mysql_rec(): Remove useless call to rec_get_nth_field
when handling an externally stored column.
Fetch externally stored fields when using InnoDB's internal SQL
parser.
Optimize BLOB selects by using prebuilt->blob_heap directly instead
of first reading BLOB data to a temporary heap and then copying it
to prebuilt->blob_heap.
* srv0srv.c
srv_master_thread(): Remove unreachable code.
* srv0start.c
srv_parse_data_file_paths_and_sizes(): Accept lower-case 'm' and
'g' as abbreviations of megabyte and gigabyte (bug 19609).
srv_parse_megabytes(): New fuction.
* ut0dbg.c|h
Implement InnoDB assertions (ut_a and ut_error) with abort() when
the code is compiled with GCC 3 or later on other platforms than
Windows or Netware. Also disable the variable ut_dbg_stop_threads
and the function ut_dbg_stop_thread() i this case, unless
UNIV_SYC_DEBUG is defined. This should allow the compiler to
generate more compact code for assertions.
* ut0list.c|h
Add ib_list_create_heap().
mysql-test/r/innodb.result:
Applied innodb-5.1-ss594 snapshot.
mysql-test/t/innodb.test:
Copy the comment from the beginning of the file
to the end because MySQL developers continue
adding test cases to this file.
sql/ha_innodb.cc:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/CMakeLists.txt:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/Makefile.am:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/btr/btr0btr.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/btr/btr0cur.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/btr/btr0pcur.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/btr/btr0sea.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/buf/buf0buf.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/buf/buf0flu.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/data/data0type.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/dict/dict0crea.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/dict/dict0dict.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/dict/dict0load.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/dict/dict0mem.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/fil/fil0fil.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/ha/hash0hash.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/ibuf/ibuf0ibuf.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/data0type.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/dict0dict.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/dict0dict.ic:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/dict0mem.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/fil0fil.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/fsp0fsp.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/ibuf0ibuf.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/mem0mem.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/pars0pars.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/pars0sym.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/pars0types.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/rem0rec.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/row0purge.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/row0undo.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/srv0srv.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/sync0rw.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/sync0sync.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/univ.i:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/ut0dbg.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/ut0ut.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/lock/lock0lock.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/log/log0log.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/log/log0recv.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/mem/mem0dbg.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/mem/mem0mem.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/mem/mem0pool.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/os/os0file.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/os/os0thread.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/pars/lexyy.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/pars/pars0lex.l:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/pars/pars0pars.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/pars/pars0sym.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/row/row0ins.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/row/row0mysql.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/row/row0purge.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/row/row0row.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/row/row0sel.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/row/row0upd.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/srv/srv0srv.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/srv/srv0start.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/sync/sync0arr.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/sync/sync0rw.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/sync/sync0sync.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/thr/thr0loc.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/trx/trx0purge.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/trx/trx0rec.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/trx/trx0roll.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/trx/trx0rseg.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/trx/trx0sys.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/trx/trx0trx.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/ut/Makefile.am:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/ut/ut0dbg.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/ut/ut0ut.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/ha_prototypes.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/ut0list.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/ut0list.ic:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/ut0wqueue.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/ut/ut0list.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/ut/ut0wqueue.c:
Applied innodb-5.1-ss594 snapshot.
2006-06-01 08:34:04 +02:00
ERROR 23000: Cannot delete or update a parent row: a foreign key constraint fails (`test`.`t2`, CONSTRAINT `c1` FOREIGN KEY (`v`) REFERENCES `t1` (`id`))
2005-09-23 15:22:27 +02:00
DROP TABLE t1;
ERROR 23000: Cannot delete or update a parent row: a foreign key constraint fails
SET FOREIGN_KEY_CHECKS=0;
DROP TABLE t1;
SET FOREIGN_KEY_CHECKS=1;
INSERT INTO t2 VALUES(3);
Applied innodb-5.1-ss594 snapshot.
Fixed BUG#19542 "InnoDB doesn't increase the Handler_read_prev couter".
Fixed BUG#19609 "Case sensitivity of innodb_data_file_path gives stupid error".
Fixed BUG#19727 "InnoDB crashed server and crashed tables are ot recoverable".
Also:
* Remove remnants of the obsolete concept of memoryfixing tables and indexes.
* Remove unused dict_table_LRU_trim().
* Remove unused 'trx' parameter from dict_table_get_on_id_low(),
dict_table_get(), dict_table_get_and_increment_handle_count().
* Add a normal linked list implementation.
* Add a work queue implementation.
* Add 'level' parameter to mutex_create() and rw_lock_create().
Remove mutex_set_level() and rw_lock_set_level().
* Rename SYNC_LEVEL_NONE to SYNC_LEVEL_VARYING.
* Add support for bound ids in InnoDB's parser.
* Define UNIV_BTR_DEBUG for enabling consistency checks of
FIL_PAGE_NEXT and FIL_PAGE_PREV when accessing sibling
pages of B-tree indexes.
btr_validate_level(): Check the validity of the doubly linked
list formed by FIL_PAGE_NEXT and FIL_PAGE_PREV.
* Adapt InnoDB to the new tablename to filename encoding in MySQL 5.1.
ut_print_name(), ut_print_name1(): Add parameter 'table_id' for
distinguishing names of tables from other identifiers.
New: innobase_convert_from_table_id(), innobase_convert_from_id(),
innobase_convert_from_filename(), innobase_get_charset.
dict_accept(), dict_scan_id(), dict_scan_col(), dict_scan_table_name(),
dict_skip_word(), dict_create_foreign_constraints_low(): Add
parameter 'cs' so that isspace() can be replaced with my_isspace(),
whose operation depends on the connection character set.
dict_scan_id(): Convert identifier to UTF-8.
dict_str_starts_with_keyword(): New extern function, to replace
dict_accept() in row_search_for_mysql().
mysql_get_identifier_quote_char(): Replaced with innobase_print_identifier().
ha_innobase::create(): Remove the thd->convert_strin() call. Pass the
statement to InnoDB in the connection character set and let InnoDB
convert the identifier to UTF-8.
* Add max_row_size to dict_table_t.
* btr0cur.c
btr_copy_externally_stored_field(): Only set the 'offset' variable
when needed.
* buf0buf.c
buf_page_io_complete(): Write to the error log if the page number or
the space id o the disk do not match those in memory. Also write to
the error log if a page was read from the doublewrite buffer. The
doublewrite buffer should be only read by the lower-level function
fil_io() at database startup.
* dict0dict.c
dict_scan_table_name(): Remove fallback to differently encoded name
when the table is not found. The encoding is handled at a higher level.
* ha_innodb.cc
Increment statistic counter in ha_innobase::index_prev() (bug 19542).
Add innobase_convert_string wrapper function and a new file
ha_prototypes.h.
innobase_print_identifier(): Remove TODO comment before calling
get_quote_char_for_identifier(). That function apparently assumes
the identifier to be encoded in UTF-8.
* ibuf0ibuf.c|h
ibuf_count_get(), ibuf_counts[], ibuf_count_inited(): Define these
only #ifdef UNIV_IBUF_DEBUG. Previously, when compiled without
UNIV_IBUF_DEBUG, invoking ibuf_count_get() would crash InnoDB.
The function is only being called #ifdef UNIV_IBUF_DEBUG.
* innodb.result
Adjust the results for changes in the foreign key error messages.
* mem0mem.c|h
New: mem_heap_dup(), mem_heap_printf(), mem_heap_cat().
* os0file.c
Check the page trailers also after writing to disk. This improves
chances of diagnosing bug 18886.
os_file_check_page_trailers(): New function for checking that the
two copies of the LSN stamped on the page match.
os_aio_simulated_handle(): Call os_file_check_page_trailers()
before and after os_file_write().
* row0mysql.c
Move trx_commit_for_mysql(trx) calls before calls to
row_mysql_unlock_data_dictionary(trx) (bug 19727).
* row0sel.c
row_fetch_print(): Handle SQL NULL values without crashing.
row_sel_store_mysql_rec(): Remove useless call to rec_get_nth_field
when handling an externally stored column.
Fetch externally stored fields when using InnoDB's internal SQL
parser.
Optimize BLOB selects by using prebuilt->blob_heap directly instead
of first reading BLOB data to a temporary heap and then copying it
to prebuilt->blob_heap.
* srv0srv.c
srv_master_thread(): Remove unreachable code.
* srv0start.c
srv_parse_data_file_paths_and_sizes(): Accept lower-case 'm' and
'g' as abbreviations of megabyte and gigabyte (bug 19609).
srv_parse_megabytes(): New fuction.
* ut0dbg.c|h
Implement InnoDB assertions (ut_a and ut_error) with abort() when
the code is compiled with GCC 3 or later on other platforms than
Windows or Netware. Also disable the variable ut_dbg_stop_threads
and the function ut_dbg_stop_thread() i this case, unless
UNIV_SYC_DEBUG is defined. This should allow the compiler to
generate more compact code for assertions.
* ut0list.c|h
Add ib_list_create_heap().
mysql-test/r/innodb.result:
Applied innodb-5.1-ss594 snapshot.
mysql-test/t/innodb.test:
Copy the comment from the beginning of the file
to the end because MySQL developers continue
adding test cases to this file.
sql/ha_innodb.cc:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/CMakeLists.txt:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/Makefile.am:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/btr/btr0btr.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/btr/btr0cur.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/btr/btr0pcur.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/btr/btr0sea.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/buf/buf0buf.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/buf/buf0flu.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/data/data0type.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/dict/dict0crea.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/dict/dict0dict.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/dict/dict0load.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/dict/dict0mem.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/fil/fil0fil.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/ha/hash0hash.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/ibuf/ibuf0ibuf.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/data0type.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/dict0dict.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/dict0dict.ic:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/dict0mem.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/fil0fil.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/fsp0fsp.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/ibuf0ibuf.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/mem0mem.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/pars0pars.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/pars0sym.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/pars0types.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/rem0rec.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/row0purge.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/row0undo.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/srv0srv.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/sync0rw.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/sync0sync.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/univ.i:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/ut0dbg.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/ut0ut.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/lock/lock0lock.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/log/log0log.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/log/log0recv.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/mem/mem0dbg.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/mem/mem0mem.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/mem/mem0pool.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/os/os0file.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/os/os0thread.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/pars/lexyy.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/pars/pars0lex.l:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/pars/pars0pars.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/pars/pars0sym.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/row/row0ins.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/row/row0mysql.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/row/row0purge.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/row/row0row.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/row/row0sel.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/row/row0upd.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/srv/srv0srv.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/srv/srv0start.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/sync/sync0arr.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/sync/sync0rw.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/sync/sync0sync.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/thr/thr0loc.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/trx/trx0purge.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/trx/trx0rec.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/trx/trx0roll.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/trx/trx0rseg.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/trx/trx0sys.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/trx/trx0trx.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/ut/Makefile.am:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/ut/ut0dbg.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/ut/ut0ut.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/ha_prototypes.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/ut0list.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/ut0list.ic:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/ut0wqueue.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/ut/ut0list.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/ut/ut0wqueue.c:
Applied innodb-5.1-ss594 snapshot.
2006-06-01 08:34:04 +02:00
ERROR 23000: Cannot add or update a child row: a foreign key constraint fails (`test`.`t2`, CONSTRAINT `c1` FOREIGN KEY (`v`) REFERENCES `t1` (`id`))
2005-09-23 15:22:27 +02:00
DROP TABLE t2;
2005-09-30 20:20:10 +02:00
create table t1(a int not null) engine=innodb DEFAULT CHARSET=latin1;
insert into t1 values (1),(2);
2005-09-29 07:34:38 +02:00
set autocommit=0;
2005-09-30 20:20:10 +02:00
checksum table t1;
2005-09-29 07:34:38 +02:00
Table Checksum
2005-09-30 20:20:10 +02:00
test.t1 1531596814
insert into t1 values(3);
checksum table t1;
2005-09-29 07:34:38 +02:00
Table Checksum
2005-10-04 21:37:50 +02:00
test.t1 1531596814
2005-09-29 07:34:38 +02:00
commit;
2005-09-30 20:20:10 +02:00
checksum table t1;
2005-09-29 07:34:38 +02:00
Table Checksum
2005-10-04 21:37:50 +02:00
test.t1 2050879373
2005-09-29 07:34:38 +02:00
commit;
2005-09-30 20:20:10 +02:00
drop table t1;
create table t1(a int not null) engine=innodb DEFAULT CHARSET=latin1;
insert into t1 values (1),(2);
2005-09-29 07:34:38 +02:00
set autocommit=1;
2005-09-30 20:20:10 +02:00
checksum table t1;
2005-09-29 07:34:38 +02:00
Table Checksum
2005-09-30 20:20:10 +02:00
test.t1 1531596814
2005-09-29 07:34:38 +02:00
set autocommit=1;
2005-09-30 20:20:10 +02:00
insert into t1 values(3);
checksum table t1;
2005-09-29 07:34:38 +02:00
Table Checksum
2005-10-04 21:37:50 +02:00
test.t1 2050879373
2005-09-30 20:20:10 +02:00
drop table t1;
2005-12-06 20:02:40 +01:00
set foreign_key_checks=0;
create table t2 (a int primary key, b int, foreign key (b) references t1(a)) engine = innodb;
create table t1(a char(10) primary key, b varchar(20)) engine = innodb;
2006-04-14 17:39:36 +02:00
ERROR HY000: Can't create table 'test.t1' (errno: 150)
2005-12-06 20:02:40 +01:00
set foreign_key_checks=1;
drop table t2;
set foreign_key_checks=0;
create table t1(a varchar(10) primary key) engine = innodb DEFAULT CHARSET=latin1;
create table t2 (a varchar(10), foreign key (a) references t1(a)) engine = innodb DEFAULT CHARSET=utf8;
2006-04-14 17:39:36 +02:00
ERROR HY000: Can't create table 'test.t2' (errno: 150)
2005-12-06 20:02:40 +01:00
set foreign_key_checks=1;
drop table t1;
set foreign_key_checks=0;
create table t2 (a varchar(10), foreign key (a) references t1(a)) engine = innodb;
create table t1(a varchar(10) primary key) engine = innodb;
alter table t1 modify column a int;
Got one of the listed errors
set foreign_key_checks=1;
drop table t2,t1;
set foreign_key_checks=0;
create table t2 (a varchar(10), foreign key (a) references t1(a)) engine = innodb DEFAULT CHARSET=latin1;
create table t1(a varchar(10) primary key) engine = innodb DEFAULT CHARSET=latin1;
alter table t1 convert to character set utf8;
set foreign_key_checks=1;
drop table t2,t1;
set foreign_key_checks=0;
create table t2 (a varchar(10), foreign key (a) references t1(a)) engine = innodb DEFAULT CHARSET=latin1;
create table t3(a varchar(10) primary key) engine = innodb DEFAULT CHARSET=utf8;
rename table t3 to t1;
ERROR HY000: Error on rename of './test/t3' to './test/t1' (errno: 150)
set foreign_key_checks=1;
drop table t2,t3;
2005-12-13 19:35:24 +01:00
create table t1(a int primary key) row_format=redundant engine=innodb;
create table t2(a int primary key,constraint foreign key(a)references t1(a)) row_format=compact engine=innodb;
create table t3(a int primary key) row_format=compact engine=innodb;
create table t4(a int primary key,constraint foreign key(a)references t3(a)) row_format=redundant engine=innodb;
insert into t1 values(1);
insert into t3 values(1);
insert into t2 values(2);
Applied innodb-5.1-ss594 snapshot.
Fixed BUG#19542 "InnoDB doesn't increase the Handler_read_prev couter".
Fixed BUG#19609 "Case sensitivity of innodb_data_file_path gives stupid error".
Fixed BUG#19727 "InnoDB crashed server and crashed tables are ot recoverable".
Also:
* Remove remnants of the obsolete concept of memoryfixing tables and indexes.
* Remove unused dict_table_LRU_trim().
* Remove unused 'trx' parameter from dict_table_get_on_id_low(),
dict_table_get(), dict_table_get_and_increment_handle_count().
* Add a normal linked list implementation.
* Add a work queue implementation.
* Add 'level' parameter to mutex_create() and rw_lock_create().
Remove mutex_set_level() and rw_lock_set_level().
* Rename SYNC_LEVEL_NONE to SYNC_LEVEL_VARYING.
* Add support for bound ids in InnoDB's parser.
* Define UNIV_BTR_DEBUG for enabling consistency checks of
FIL_PAGE_NEXT and FIL_PAGE_PREV when accessing sibling
pages of B-tree indexes.
btr_validate_level(): Check the validity of the doubly linked
list formed by FIL_PAGE_NEXT and FIL_PAGE_PREV.
* Adapt InnoDB to the new tablename to filename encoding in MySQL 5.1.
ut_print_name(), ut_print_name1(): Add parameter 'table_id' for
distinguishing names of tables from other identifiers.
New: innobase_convert_from_table_id(), innobase_convert_from_id(),
innobase_convert_from_filename(), innobase_get_charset.
dict_accept(), dict_scan_id(), dict_scan_col(), dict_scan_table_name(),
dict_skip_word(), dict_create_foreign_constraints_low(): Add
parameter 'cs' so that isspace() can be replaced with my_isspace(),
whose operation depends on the connection character set.
dict_scan_id(): Convert identifier to UTF-8.
dict_str_starts_with_keyword(): New extern function, to replace
dict_accept() in row_search_for_mysql().
mysql_get_identifier_quote_char(): Replaced with innobase_print_identifier().
ha_innobase::create(): Remove the thd->convert_strin() call. Pass the
statement to InnoDB in the connection character set and let InnoDB
convert the identifier to UTF-8.
* Add max_row_size to dict_table_t.
* btr0cur.c
btr_copy_externally_stored_field(): Only set the 'offset' variable
when needed.
* buf0buf.c
buf_page_io_complete(): Write to the error log if the page number or
the space id o the disk do not match those in memory. Also write to
the error log if a page was read from the doublewrite buffer. The
doublewrite buffer should be only read by the lower-level function
fil_io() at database startup.
* dict0dict.c
dict_scan_table_name(): Remove fallback to differently encoded name
when the table is not found. The encoding is handled at a higher level.
* ha_innodb.cc
Increment statistic counter in ha_innobase::index_prev() (bug 19542).
Add innobase_convert_string wrapper function and a new file
ha_prototypes.h.
innobase_print_identifier(): Remove TODO comment before calling
get_quote_char_for_identifier(). That function apparently assumes
the identifier to be encoded in UTF-8.
* ibuf0ibuf.c|h
ibuf_count_get(), ibuf_counts[], ibuf_count_inited(): Define these
only #ifdef UNIV_IBUF_DEBUG. Previously, when compiled without
UNIV_IBUF_DEBUG, invoking ibuf_count_get() would crash InnoDB.
The function is only being called #ifdef UNIV_IBUF_DEBUG.
* innodb.result
Adjust the results for changes in the foreign key error messages.
* mem0mem.c|h
New: mem_heap_dup(), mem_heap_printf(), mem_heap_cat().
* os0file.c
Check the page trailers also after writing to disk. This improves
chances of diagnosing bug 18886.
os_file_check_page_trailers(): New function for checking that the
two copies of the LSN stamped on the page match.
os_aio_simulated_handle(): Call os_file_check_page_trailers()
before and after os_file_write().
* row0mysql.c
Move trx_commit_for_mysql(trx) calls before calls to
row_mysql_unlock_data_dictionary(trx) (bug 19727).
* row0sel.c
row_fetch_print(): Handle SQL NULL values without crashing.
row_sel_store_mysql_rec(): Remove useless call to rec_get_nth_field
when handling an externally stored column.
Fetch externally stored fields when using InnoDB's internal SQL
parser.
Optimize BLOB selects by using prebuilt->blob_heap directly instead
of first reading BLOB data to a temporary heap and then copying it
to prebuilt->blob_heap.
* srv0srv.c
srv_master_thread(): Remove unreachable code.
* srv0start.c
srv_parse_data_file_paths_and_sizes(): Accept lower-case 'm' and
'g' as abbreviations of megabyte and gigabyte (bug 19609).
srv_parse_megabytes(): New fuction.
* ut0dbg.c|h
Implement InnoDB assertions (ut_a and ut_error) with abort() when
the code is compiled with GCC 3 or later on other platforms than
Windows or Netware. Also disable the variable ut_dbg_stop_threads
and the function ut_dbg_stop_thread() i this case, unless
UNIV_SYC_DEBUG is defined. This should allow the compiler to
generate more compact code for assertions.
* ut0list.c|h
Add ib_list_create_heap().
mysql-test/r/innodb.result:
Applied innodb-5.1-ss594 snapshot.
mysql-test/t/innodb.test:
Copy the comment from the beginning of the file
to the end because MySQL developers continue
adding test cases to this file.
sql/ha_innodb.cc:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/CMakeLists.txt:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/Makefile.am:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/btr/btr0btr.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/btr/btr0cur.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/btr/btr0pcur.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/btr/btr0sea.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/buf/buf0buf.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/buf/buf0flu.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/data/data0type.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/dict/dict0crea.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/dict/dict0dict.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/dict/dict0load.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/dict/dict0mem.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/fil/fil0fil.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/ha/hash0hash.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/ibuf/ibuf0ibuf.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/data0type.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/dict0dict.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/dict0dict.ic:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/dict0mem.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/fil0fil.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/fsp0fsp.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/ibuf0ibuf.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/mem0mem.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/pars0pars.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/pars0sym.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/pars0types.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/rem0rec.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/row0purge.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/row0undo.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/srv0srv.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/sync0rw.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/sync0sync.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/univ.i:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/ut0dbg.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/ut0ut.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/lock/lock0lock.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/log/log0log.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/log/log0recv.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/mem/mem0dbg.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/mem/mem0mem.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/mem/mem0pool.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/os/os0file.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/os/os0thread.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/pars/lexyy.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/pars/pars0lex.l:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/pars/pars0pars.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/pars/pars0sym.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/row/row0ins.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/row/row0mysql.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/row/row0purge.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/row/row0row.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/row/row0sel.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/row/row0upd.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/srv/srv0srv.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/srv/srv0start.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/sync/sync0arr.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/sync/sync0rw.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/sync/sync0sync.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/thr/thr0loc.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/trx/trx0purge.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/trx/trx0rec.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/trx/trx0roll.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/trx/trx0rseg.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/trx/trx0sys.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/trx/trx0trx.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/ut/Makefile.am:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/ut/ut0dbg.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/ut/ut0ut.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/ha_prototypes.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/ut0list.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/ut0list.ic:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/ut0wqueue.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/ut/ut0list.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/ut/ut0wqueue.c:
Applied innodb-5.1-ss594 snapshot.
2006-06-01 08:34:04 +02:00
ERROR 23000: Cannot add or update a child row: a foreign key constraint fails (`test`.`t2`, CONSTRAINT `t2_ibfk_1` FOREIGN KEY (`a`) REFERENCES `t1` (`a`))
2005-12-13 19:35:24 +01:00
insert into t4 values(2);
Applied innodb-5.1-ss594 snapshot.
Fixed BUG#19542 "InnoDB doesn't increase the Handler_read_prev couter".
Fixed BUG#19609 "Case sensitivity of innodb_data_file_path gives stupid error".
Fixed BUG#19727 "InnoDB crashed server and crashed tables are ot recoverable".
Also:
* Remove remnants of the obsolete concept of memoryfixing tables and indexes.
* Remove unused dict_table_LRU_trim().
* Remove unused 'trx' parameter from dict_table_get_on_id_low(),
dict_table_get(), dict_table_get_and_increment_handle_count().
* Add a normal linked list implementation.
* Add a work queue implementation.
* Add 'level' parameter to mutex_create() and rw_lock_create().
Remove mutex_set_level() and rw_lock_set_level().
* Rename SYNC_LEVEL_NONE to SYNC_LEVEL_VARYING.
* Add support for bound ids in InnoDB's parser.
* Define UNIV_BTR_DEBUG for enabling consistency checks of
FIL_PAGE_NEXT and FIL_PAGE_PREV when accessing sibling
pages of B-tree indexes.
btr_validate_level(): Check the validity of the doubly linked
list formed by FIL_PAGE_NEXT and FIL_PAGE_PREV.
* Adapt InnoDB to the new tablename to filename encoding in MySQL 5.1.
ut_print_name(), ut_print_name1(): Add parameter 'table_id' for
distinguishing names of tables from other identifiers.
New: innobase_convert_from_table_id(), innobase_convert_from_id(),
innobase_convert_from_filename(), innobase_get_charset.
dict_accept(), dict_scan_id(), dict_scan_col(), dict_scan_table_name(),
dict_skip_word(), dict_create_foreign_constraints_low(): Add
parameter 'cs' so that isspace() can be replaced with my_isspace(),
whose operation depends on the connection character set.
dict_scan_id(): Convert identifier to UTF-8.
dict_str_starts_with_keyword(): New extern function, to replace
dict_accept() in row_search_for_mysql().
mysql_get_identifier_quote_char(): Replaced with innobase_print_identifier().
ha_innobase::create(): Remove the thd->convert_strin() call. Pass the
statement to InnoDB in the connection character set and let InnoDB
convert the identifier to UTF-8.
* Add max_row_size to dict_table_t.
* btr0cur.c
btr_copy_externally_stored_field(): Only set the 'offset' variable
when needed.
* buf0buf.c
buf_page_io_complete(): Write to the error log if the page number or
the space id o the disk do not match those in memory. Also write to
the error log if a page was read from the doublewrite buffer. The
doublewrite buffer should be only read by the lower-level function
fil_io() at database startup.
* dict0dict.c
dict_scan_table_name(): Remove fallback to differently encoded name
when the table is not found. The encoding is handled at a higher level.
* ha_innodb.cc
Increment statistic counter in ha_innobase::index_prev() (bug 19542).
Add innobase_convert_string wrapper function and a new file
ha_prototypes.h.
innobase_print_identifier(): Remove TODO comment before calling
get_quote_char_for_identifier(). That function apparently assumes
the identifier to be encoded in UTF-8.
* ibuf0ibuf.c|h
ibuf_count_get(), ibuf_counts[], ibuf_count_inited(): Define these
only #ifdef UNIV_IBUF_DEBUG. Previously, when compiled without
UNIV_IBUF_DEBUG, invoking ibuf_count_get() would crash InnoDB.
The function is only being called #ifdef UNIV_IBUF_DEBUG.
* innodb.result
Adjust the results for changes in the foreign key error messages.
* mem0mem.c|h
New: mem_heap_dup(), mem_heap_printf(), mem_heap_cat().
* os0file.c
Check the page trailers also after writing to disk. This improves
chances of diagnosing bug 18886.
os_file_check_page_trailers(): New function for checking that the
two copies of the LSN stamped on the page match.
os_aio_simulated_handle(): Call os_file_check_page_trailers()
before and after os_file_write().
* row0mysql.c
Move trx_commit_for_mysql(trx) calls before calls to
row_mysql_unlock_data_dictionary(trx) (bug 19727).
* row0sel.c
row_fetch_print(): Handle SQL NULL values without crashing.
row_sel_store_mysql_rec(): Remove useless call to rec_get_nth_field
when handling an externally stored column.
Fetch externally stored fields when using InnoDB's internal SQL
parser.
Optimize BLOB selects by using prebuilt->blob_heap directly instead
of first reading BLOB data to a temporary heap and then copying it
to prebuilt->blob_heap.
* srv0srv.c
srv_master_thread(): Remove unreachable code.
* srv0start.c
srv_parse_data_file_paths_and_sizes(): Accept lower-case 'm' and
'g' as abbreviations of megabyte and gigabyte (bug 19609).
srv_parse_megabytes(): New fuction.
* ut0dbg.c|h
Implement InnoDB assertions (ut_a and ut_error) with abort() when
the code is compiled with GCC 3 or later on other platforms than
Windows or Netware. Also disable the variable ut_dbg_stop_threads
and the function ut_dbg_stop_thread() i this case, unless
UNIV_SYC_DEBUG is defined. This should allow the compiler to
generate more compact code for assertions.
* ut0list.c|h
Add ib_list_create_heap().
mysql-test/r/innodb.result:
Applied innodb-5.1-ss594 snapshot.
mysql-test/t/innodb.test:
Copy the comment from the beginning of the file
to the end because MySQL developers continue
adding test cases to this file.
sql/ha_innodb.cc:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/CMakeLists.txt:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/Makefile.am:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/btr/btr0btr.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/btr/btr0cur.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/btr/btr0pcur.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/btr/btr0sea.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/buf/buf0buf.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/buf/buf0flu.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/data/data0type.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/dict/dict0crea.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/dict/dict0dict.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/dict/dict0load.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/dict/dict0mem.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/fil/fil0fil.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/ha/hash0hash.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/ibuf/ibuf0ibuf.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/data0type.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/dict0dict.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/dict0dict.ic:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/dict0mem.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/fil0fil.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/fsp0fsp.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/ibuf0ibuf.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/mem0mem.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/pars0pars.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/pars0sym.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/pars0types.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/rem0rec.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/row0purge.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/row0undo.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/srv0srv.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/sync0rw.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/sync0sync.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/univ.i:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/ut0dbg.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/ut0ut.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/lock/lock0lock.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/log/log0log.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/log/log0recv.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/mem/mem0dbg.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/mem/mem0mem.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/mem/mem0pool.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/os/os0file.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/os/os0thread.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/pars/lexyy.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/pars/pars0lex.l:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/pars/pars0pars.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/pars/pars0sym.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/row/row0ins.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/row/row0mysql.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/row/row0purge.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/row/row0row.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/row/row0sel.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/row/row0upd.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/srv/srv0srv.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/srv/srv0start.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/sync/sync0arr.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/sync/sync0rw.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/sync/sync0sync.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/thr/thr0loc.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/trx/trx0purge.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/trx/trx0rec.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/trx/trx0roll.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/trx/trx0rseg.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/trx/trx0sys.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/trx/trx0trx.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/ut/Makefile.am:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/ut/ut0dbg.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/ut/ut0ut.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/ha_prototypes.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/ut0list.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/ut0list.ic:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/ut0wqueue.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/ut/ut0list.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/ut/ut0wqueue.c:
Applied innodb-5.1-ss594 snapshot.
2006-06-01 08:34:04 +02:00
ERROR 23000: Cannot add or update a child row: a foreign key constraint fails (`test`.`t4`, CONSTRAINT `t4_ibfk_1` FOREIGN KEY (`a`) REFERENCES `t3` (`a`))
2005-12-13 19:35:24 +01:00
insert into t2 values(1);
insert into t4 values(1);
update t1 set a=2;
Applied innodb-5.1-ss594 snapshot.
Fixed BUG#19542 "InnoDB doesn't increase the Handler_read_prev couter".
Fixed BUG#19609 "Case sensitivity of innodb_data_file_path gives stupid error".
Fixed BUG#19727 "InnoDB crashed server and crashed tables are ot recoverable".
Also:
* Remove remnants of the obsolete concept of memoryfixing tables and indexes.
* Remove unused dict_table_LRU_trim().
* Remove unused 'trx' parameter from dict_table_get_on_id_low(),
dict_table_get(), dict_table_get_and_increment_handle_count().
* Add a normal linked list implementation.
* Add a work queue implementation.
* Add 'level' parameter to mutex_create() and rw_lock_create().
Remove mutex_set_level() and rw_lock_set_level().
* Rename SYNC_LEVEL_NONE to SYNC_LEVEL_VARYING.
* Add support for bound ids in InnoDB's parser.
* Define UNIV_BTR_DEBUG for enabling consistency checks of
FIL_PAGE_NEXT and FIL_PAGE_PREV when accessing sibling
pages of B-tree indexes.
btr_validate_level(): Check the validity of the doubly linked
list formed by FIL_PAGE_NEXT and FIL_PAGE_PREV.
* Adapt InnoDB to the new tablename to filename encoding in MySQL 5.1.
ut_print_name(), ut_print_name1(): Add parameter 'table_id' for
distinguishing names of tables from other identifiers.
New: innobase_convert_from_table_id(), innobase_convert_from_id(),
innobase_convert_from_filename(), innobase_get_charset.
dict_accept(), dict_scan_id(), dict_scan_col(), dict_scan_table_name(),
dict_skip_word(), dict_create_foreign_constraints_low(): Add
parameter 'cs' so that isspace() can be replaced with my_isspace(),
whose operation depends on the connection character set.
dict_scan_id(): Convert identifier to UTF-8.
dict_str_starts_with_keyword(): New extern function, to replace
dict_accept() in row_search_for_mysql().
mysql_get_identifier_quote_char(): Replaced with innobase_print_identifier().
ha_innobase::create(): Remove the thd->convert_strin() call. Pass the
statement to InnoDB in the connection character set and let InnoDB
convert the identifier to UTF-8.
* Add max_row_size to dict_table_t.
* btr0cur.c
btr_copy_externally_stored_field(): Only set the 'offset' variable
when needed.
* buf0buf.c
buf_page_io_complete(): Write to the error log if the page number or
the space id o the disk do not match those in memory. Also write to
the error log if a page was read from the doublewrite buffer. The
doublewrite buffer should be only read by the lower-level function
fil_io() at database startup.
* dict0dict.c
dict_scan_table_name(): Remove fallback to differently encoded name
when the table is not found. The encoding is handled at a higher level.
* ha_innodb.cc
Increment statistic counter in ha_innobase::index_prev() (bug 19542).
Add innobase_convert_string wrapper function and a new file
ha_prototypes.h.
innobase_print_identifier(): Remove TODO comment before calling
get_quote_char_for_identifier(). That function apparently assumes
the identifier to be encoded in UTF-8.
* ibuf0ibuf.c|h
ibuf_count_get(), ibuf_counts[], ibuf_count_inited(): Define these
only #ifdef UNIV_IBUF_DEBUG. Previously, when compiled without
UNIV_IBUF_DEBUG, invoking ibuf_count_get() would crash InnoDB.
The function is only being called #ifdef UNIV_IBUF_DEBUG.
* innodb.result
Adjust the results for changes in the foreign key error messages.
* mem0mem.c|h
New: mem_heap_dup(), mem_heap_printf(), mem_heap_cat().
* os0file.c
Check the page trailers also after writing to disk. This improves
chances of diagnosing bug 18886.
os_file_check_page_trailers(): New function for checking that the
two copies of the LSN stamped on the page match.
os_aio_simulated_handle(): Call os_file_check_page_trailers()
before and after os_file_write().
* row0mysql.c
Move trx_commit_for_mysql(trx) calls before calls to
row_mysql_unlock_data_dictionary(trx) (bug 19727).
* row0sel.c
row_fetch_print(): Handle SQL NULL values without crashing.
row_sel_store_mysql_rec(): Remove useless call to rec_get_nth_field
when handling an externally stored column.
Fetch externally stored fields when using InnoDB's internal SQL
parser.
Optimize BLOB selects by using prebuilt->blob_heap directly instead
of first reading BLOB data to a temporary heap and then copying it
to prebuilt->blob_heap.
* srv0srv.c
srv_master_thread(): Remove unreachable code.
* srv0start.c
srv_parse_data_file_paths_and_sizes(): Accept lower-case 'm' and
'g' as abbreviations of megabyte and gigabyte (bug 19609).
srv_parse_megabytes(): New fuction.
* ut0dbg.c|h
Implement InnoDB assertions (ut_a and ut_error) with abort() when
the code is compiled with GCC 3 or later on other platforms than
Windows or Netware. Also disable the variable ut_dbg_stop_threads
and the function ut_dbg_stop_thread() i this case, unless
UNIV_SYC_DEBUG is defined. This should allow the compiler to
generate more compact code for assertions.
* ut0list.c|h
Add ib_list_create_heap().
mysql-test/r/innodb.result:
Applied innodb-5.1-ss594 snapshot.
mysql-test/t/innodb.test:
Copy the comment from the beginning of the file
to the end because MySQL developers continue
adding test cases to this file.
sql/ha_innodb.cc:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/CMakeLists.txt:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/Makefile.am:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/btr/btr0btr.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/btr/btr0cur.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/btr/btr0pcur.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/btr/btr0sea.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/buf/buf0buf.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/buf/buf0flu.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/data/data0type.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/dict/dict0crea.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/dict/dict0dict.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/dict/dict0load.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/dict/dict0mem.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/fil/fil0fil.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/ha/hash0hash.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/ibuf/ibuf0ibuf.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/data0type.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/dict0dict.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/dict0dict.ic:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/dict0mem.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/fil0fil.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/fsp0fsp.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/ibuf0ibuf.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/mem0mem.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/pars0pars.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/pars0sym.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/pars0types.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/rem0rec.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/row0purge.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/row0undo.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/srv0srv.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/sync0rw.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/sync0sync.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/univ.i:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/ut0dbg.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/ut0ut.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/lock/lock0lock.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/log/log0log.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/log/log0recv.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/mem/mem0dbg.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/mem/mem0mem.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/mem/mem0pool.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/os/os0file.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/os/os0thread.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/pars/lexyy.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/pars/pars0lex.l:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/pars/pars0pars.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/pars/pars0sym.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/row/row0ins.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/row/row0mysql.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/row/row0purge.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/row/row0row.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/row/row0sel.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/row/row0upd.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/srv/srv0srv.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/srv/srv0start.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/sync/sync0arr.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/sync/sync0rw.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/sync/sync0sync.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/thr/thr0loc.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/trx/trx0purge.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/trx/trx0rec.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/trx/trx0roll.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/trx/trx0rseg.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/trx/trx0sys.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/trx/trx0trx.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/ut/Makefile.am:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/ut/ut0dbg.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/ut/ut0ut.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/ha_prototypes.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/ut0list.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/ut0list.ic:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/ut0wqueue.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/ut/ut0list.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/ut/ut0wqueue.c:
Applied innodb-5.1-ss594 snapshot.
2006-06-01 08:34:04 +02:00
ERROR 23000: Cannot delete or update a parent row: a foreign key constraint fails (`test`.`t2`, CONSTRAINT `t2_ibfk_1` FOREIGN KEY (`a`) REFERENCES `t1` (`a`))
2005-12-13 19:35:24 +01:00
update t2 set a=2;
Applied innodb-5.1-ss594 snapshot.
Fixed BUG#19542 "InnoDB doesn't increase the Handler_read_prev couter".
Fixed BUG#19609 "Case sensitivity of innodb_data_file_path gives stupid error".
Fixed BUG#19727 "InnoDB crashed server and crashed tables are ot recoverable".
Also:
* Remove remnants of the obsolete concept of memoryfixing tables and indexes.
* Remove unused dict_table_LRU_trim().
* Remove unused 'trx' parameter from dict_table_get_on_id_low(),
dict_table_get(), dict_table_get_and_increment_handle_count().
* Add a normal linked list implementation.
* Add a work queue implementation.
* Add 'level' parameter to mutex_create() and rw_lock_create().
Remove mutex_set_level() and rw_lock_set_level().
* Rename SYNC_LEVEL_NONE to SYNC_LEVEL_VARYING.
* Add support for bound ids in InnoDB's parser.
* Define UNIV_BTR_DEBUG for enabling consistency checks of
FIL_PAGE_NEXT and FIL_PAGE_PREV when accessing sibling
pages of B-tree indexes.
btr_validate_level(): Check the validity of the doubly linked
list formed by FIL_PAGE_NEXT and FIL_PAGE_PREV.
* Adapt InnoDB to the new tablename to filename encoding in MySQL 5.1.
ut_print_name(), ut_print_name1(): Add parameter 'table_id' for
distinguishing names of tables from other identifiers.
New: innobase_convert_from_table_id(), innobase_convert_from_id(),
innobase_convert_from_filename(), innobase_get_charset.
dict_accept(), dict_scan_id(), dict_scan_col(), dict_scan_table_name(),
dict_skip_word(), dict_create_foreign_constraints_low(): Add
parameter 'cs' so that isspace() can be replaced with my_isspace(),
whose operation depends on the connection character set.
dict_scan_id(): Convert identifier to UTF-8.
dict_str_starts_with_keyword(): New extern function, to replace
dict_accept() in row_search_for_mysql().
mysql_get_identifier_quote_char(): Replaced with innobase_print_identifier().
ha_innobase::create(): Remove the thd->convert_strin() call. Pass the
statement to InnoDB in the connection character set and let InnoDB
convert the identifier to UTF-8.
* Add max_row_size to dict_table_t.
* btr0cur.c
btr_copy_externally_stored_field(): Only set the 'offset' variable
when needed.
* buf0buf.c
buf_page_io_complete(): Write to the error log if the page number or
the space id o the disk do not match those in memory. Also write to
the error log if a page was read from the doublewrite buffer. The
doublewrite buffer should be only read by the lower-level function
fil_io() at database startup.
* dict0dict.c
dict_scan_table_name(): Remove fallback to differently encoded name
when the table is not found. The encoding is handled at a higher level.
* ha_innodb.cc
Increment statistic counter in ha_innobase::index_prev() (bug 19542).
Add innobase_convert_string wrapper function and a new file
ha_prototypes.h.
innobase_print_identifier(): Remove TODO comment before calling
get_quote_char_for_identifier(). That function apparently assumes
the identifier to be encoded in UTF-8.
* ibuf0ibuf.c|h
ibuf_count_get(), ibuf_counts[], ibuf_count_inited(): Define these
only #ifdef UNIV_IBUF_DEBUG. Previously, when compiled without
UNIV_IBUF_DEBUG, invoking ibuf_count_get() would crash InnoDB.
The function is only being called #ifdef UNIV_IBUF_DEBUG.
* innodb.result
Adjust the results for changes in the foreign key error messages.
* mem0mem.c|h
New: mem_heap_dup(), mem_heap_printf(), mem_heap_cat().
* os0file.c
Check the page trailers also after writing to disk. This improves
chances of diagnosing bug 18886.
os_file_check_page_trailers(): New function for checking that the
two copies of the LSN stamped on the page match.
os_aio_simulated_handle(): Call os_file_check_page_trailers()
before and after os_file_write().
* row0mysql.c
Move trx_commit_for_mysql(trx) calls before calls to
row_mysql_unlock_data_dictionary(trx) (bug 19727).
* row0sel.c
row_fetch_print(): Handle SQL NULL values without crashing.
row_sel_store_mysql_rec(): Remove useless call to rec_get_nth_field
when handling an externally stored column.
Fetch externally stored fields when using InnoDB's internal SQL
parser.
Optimize BLOB selects by using prebuilt->blob_heap directly instead
of first reading BLOB data to a temporary heap and then copying it
to prebuilt->blob_heap.
* srv0srv.c
srv_master_thread(): Remove unreachable code.
* srv0start.c
srv_parse_data_file_paths_and_sizes(): Accept lower-case 'm' and
'g' as abbreviations of megabyte and gigabyte (bug 19609).
srv_parse_megabytes(): New fuction.
* ut0dbg.c|h
Implement InnoDB assertions (ut_a and ut_error) with abort() when
the code is compiled with GCC 3 or later on other platforms than
Windows or Netware. Also disable the variable ut_dbg_stop_threads
and the function ut_dbg_stop_thread() i this case, unless
UNIV_SYC_DEBUG is defined. This should allow the compiler to
generate more compact code for assertions.
* ut0list.c|h
Add ib_list_create_heap().
mysql-test/r/innodb.result:
Applied innodb-5.1-ss594 snapshot.
mysql-test/t/innodb.test:
Copy the comment from the beginning of the file
to the end because MySQL developers continue
adding test cases to this file.
sql/ha_innodb.cc:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/CMakeLists.txt:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/Makefile.am:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/btr/btr0btr.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/btr/btr0cur.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/btr/btr0pcur.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/btr/btr0sea.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/buf/buf0buf.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/buf/buf0flu.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/data/data0type.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/dict/dict0crea.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/dict/dict0dict.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/dict/dict0load.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/dict/dict0mem.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/fil/fil0fil.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/ha/hash0hash.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/ibuf/ibuf0ibuf.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/data0type.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/dict0dict.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/dict0dict.ic:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/dict0mem.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/fil0fil.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/fsp0fsp.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/ibuf0ibuf.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/mem0mem.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/pars0pars.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/pars0sym.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/pars0types.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/rem0rec.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/row0purge.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/row0undo.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/srv0srv.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/sync0rw.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/sync0sync.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/univ.i:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/ut0dbg.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/ut0ut.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/lock/lock0lock.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/log/log0log.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/log/log0recv.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/mem/mem0dbg.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/mem/mem0mem.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/mem/mem0pool.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/os/os0file.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/os/os0thread.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/pars/lexyy.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/pars/pars0lex.l:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/pars/pars0pars.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/pars/pars0sym.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/row/row0ins.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/row/row0mysql.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/row/row0purge.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/row/row0row.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/row/row0sel.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/row/row0upd.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/srv/srv0srv.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/srv/srv0start.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/sync/sync0arr.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/sync/sync0rw.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/sync/sync0sync.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/thr/thr0loc.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/trx/trx0purge.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/trx/trx0rec.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/trx/trx0roll.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/trx/trx0rseg.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/trx/trx0sys.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/trx/trx0trx.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/ut/Makefile.am:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/ut/ut0dbg.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/ut/ut0ut.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/ha_prototypes.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/ut0list.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/ut0list.ic:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/ut0wqueue.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/ut/ut0list.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/ut/ut0wqueue.c:
Applied innodb-5.1-ss594 snapshot.
2006-06-01 08:34:04 +02:00
ERROR 23000: Cannot add or update a child row: a foreign key constraint fails (`test`.`t2`, CONSTRAINT `t2_ibfk_1` FOREIGN KEY (`a`) REFERENCES `t1` (`a`))
2005-12-13 19:35:24 +01:00
update t3 set a=2;
Applied innodb-5.1-ss594 snapshot.
Fixed BUG#19542 "InnoDB doesn't increase the Handler_read_prev couter".
Fixed BUG#19609 "Case sensitivity of innodb_data_file_path gives stupid error".
Fixed BUG#19727 "InnoDB crashed server and crashed tables are ot recoverable".
Also:
* Remove remnants of the obsolete concept of memoryfixing tables and indexes.
* Remove unused dict_table_LRU_trim().
* Remove unused 'trx' parameter from dict_table_get_on_id_low(),
dict_table_get(), dict_table_get_and_increment_handle_count().
* Add a normal linked list implementation.
* Add a work queue implementation.
* Add 'level' parameter to mutex_create() and rw_lock_create().
Remove mutex_set_level() and rw_lock_set_level().
* Rename SYNC_LEVEL_NONE to SYNC_LEVEL_VARYING.
* Add support for bound ids in InnoDB's parser.
* Define UNIV_BTR_DEBUG for enabling consistency checks of
FIL_PAGE_NEXT and FIL_PAGE_PREV when accessing sibling
pages of B-tree indexes.
btr_validate_level(): Check the validity of the doubly linked
list formed by FIL_PAGE_NEXT and FIL_PAGE_PREV.
* Adapt InnoDB to the new tablename to filename encoding in MySQL 5.1.
ut_print_name(), ut_print_name1(): Add parameter 'table_id' for
distinguishing names of tables from other identifiers.
New: innobase_convert_from_table_id(), innobase_convert_from_id(),
innobase_convert_from_filename(), innobase_get_charset.
dict_accept(), dict_scan_id(), dict_scan_col(), dict_scan_table_name(),
dict_skip_word(), dict_create_foreign_constraints_low(): Add
parameter 'cs' so that isspace() can be replaced with my_isspace(),
whose operation depends on the connection character set.
dict_scan_id(): Convert identifier to UTF-8.
dict_str_starts_with_keyword(): New extern function, to replace
dict_accept() in row_search_for_mysql().
mysql_get_identifier_quote_char(): Replaced with innobase_print_identifier().
ha_innobase::create(): Remove the thd->convert_strin() call. Pass the
statement to InnoDB in the connection character set and let InnoDB
convert the identifier to UTF-8.
* Add max_row_size to dict_table_t.
* btr0cur.c
btr_copy_externally_stored_field(): Only set the 'offset' variable
when needed.
* buf0buf.c
buf_page_io_complete(): Write to the error log if the page number or
the space id o the disk do not match those in memory. Also write to
the error log if a page was read from the doublewrite buffer. The
doublewrite buffer should be only read by the lower-level function
fil_io() at database startup.
* dict0dict.c
dict_scan_table_name(): Remove fallback to differently encoded name
when the table is not found. The encoding is handled at a higher level.
* ha_innodb.cc
Increment statistic counter in ha_innobase::index_prev() (bug 19542).
Add innobase_convert_string wrapper function and a new file
ha_prototypes.h.
innobase_print_identifier(): Remove TODO comment before calling
get_quote_char_for_identifier(). That function apparently assumes
the identifier to be encoded in UTF-8.
* ibuf0ibuf.c|h
ibuf_count_get(), ibuf_counts[], ibuf_count_inited(): Define these
only #ifdef UNIV_IBUF_DEBUG. Previously, when compiled without
UNIV_IBUF_DEBUG, invoking ibuf_count_get() would crash InnoDB.
The function is only being called #ifdef UNIV_IBUF_DEBUG.
* innodb.result
Adjust the results for changes in the foreign key error messages.
* mem0mem.c|h
New: mem_heap_dup(), mem_heap_printf(), mem_heap_cat().
* os0file.c
Check the page trailers also after writing to disk. This improves
chances of diagnosing bug 18886.
os_file_check_page_trailers(): New function for checking that the
two copies of the LSN stamped on the page match.
os_aio_simulated_handle(): Call os_file_check_page_trailers()
before and after os_file_write().
* row0mysql.c
Move trx_commit_for_mysql(trx) calls before calls to
row_mysql_unlock_data_dictionary(trx) (bug 19727).
* row0sel.c
row_fetch_print(): Handle SQL NULL values without crashing.
row_sel_store_mysql_rec(): Remove useless call to rec_get_nth_field
when handling an externally stored column.
Fetch externally stored fields when using InnoDB's internal SQL
parser.
Optimize BLOB selects by using prebuilt->blob_heap directly instead
of first reading BLOB data to a temporary heap and then copying it
to prebuilt->blob_heap.
* srv0srv.c
srv_master_thread(): Remove unreachable code.
* srv0start.c
srv_parse_data_file_paths_and_sizes(): Accept lower-case 'm' and
'g' as abbreviations of megabyte and gigabyte (bug 19609).
srv_parse_megabytes(): New fuction.
* ut0dbg.c|h
Implement InnoDB assertions (ut_a and ut_error) with abort() when
the code is compiled with GCC 3 or later on other platforms than
Windows or Netware. Also disable the variable ut_dbg_stop_threads
and the function ut_dbg_stop_thread() i this case, unless
UNIV_SYC_DEBUG is defined. This should allow the compiler to
generate more compact code for assertions.
* ut0list.c|h
Add ib_list_create_heap().
mysql-test/r/innodb.result:
Applied innodb-5.1-ss594 snapshot.
mysql-test/t/innodb.test:
Copy the comment from the beginning of the file
to the end because MySQL developers continue
adding test cases to this file.
sql/ha_innodb.cc:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/CMakeLists.txt:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/Makefile.am:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/btr/btr0btr.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/btr/btr0cur.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/btr/btr0pcur.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/btr/btr0sea.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/buf/buf0buf.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/buf/buf0flu.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/data/data0type.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/dict/dict0crea.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/dict/dict0dict.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/dict/dict0load.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/dict/dict0mem.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/fil/fil0fil.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/ha/hash0hash.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/ibuf/ibuf0ibuf.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/data0type.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/dict0dict.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/dict0dict.ic:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/dict0mem.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/fil0fil.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/fsp0fsp.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/ibuf0ibuf.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/mem0mem.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/pars0pars.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/pars0sym.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/pars0types.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/rem0rec.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/row0purge.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/row0undo.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/srv0srv.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/sync0rw.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/sync0sync.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/univ.i:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/ut0dbg.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/ut0ut.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/lock/lock0lock.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/log/log0log.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/log/log0recv.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/mem/mem0dbg.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/mem/mem0mem.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/mem/mem0pool.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/os/os0file.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/os/os0thread.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/pars/lexyy.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/pars/pars0lex.l:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/pars/pars0pars.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/pars/pars0sym.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/row/row0ins.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/row/row0mysql.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/row/row0purge.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/row/row0row.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/row/row0sel.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/row/row0upd.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/srv/srv0srv.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/srv/srv0start.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/sync/sync0arr.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/sync/sync0rw.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/sync/sync0sync.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/thr/thr0loc.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/trx/trx0purge.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/trx/trx0rec.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/trx/trx0roll.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/trx/trx0rseg.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/trx/trx0sys.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/trx/trx0trx.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/ut/Makefile.am:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/ut/ut0dbg.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/ut/ut0ut.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/ha_prototypes.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/ut0list.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/ut0list.ic:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/ut0wqueue.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/ut/ut0list.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/ut/ut0wqueue.c:
Applied innodb-5.1-ss594 snapshot.
2006-06-01 08:34:04 +02:00
ERROR 23000: Cannot delete or update a parent row: a foreign key constraint fails (`test`.`t4`, CONSTRAINT `t4_ibfk_1` FOREIGN KEY (`a`) REFERENCES `t3` (`a`))
2005-12-13 19:35:24 +01:00
update t4 set a=2;
Applied innodb-5.1-ss594 snapshot.
Fixed BUG#19542 "InnoDB doesn't increase the Handler_read_prev couter".
Fixed BUG#19609 "Case sensitivity of innodb_data_file_path gives stupid error".
Fixed BUG#19727 "InnoDB crashed server and crashed tables are ot recoverable".
Also:
* Remove remnants of the obsolete concept of memoryfixing tables and indexes.
* Remove unused dict_table_LRU_trim().
* Remove unused 'trx' parameter from dict_table_get_on_id_low(),
dict_table_get(), dict_table_get_and_increment_handle_count().
* Add a normal linked list implementation.
* Add a work queue implementation.
* Add 'level' parameter to mutex_create() and rw_lock_create().
Remove mutex_set_level() and rw_lock_set_level().
* Rename SYNC_LEVEL_NONE to SYNC_LEVEL_VARYING.
* Add support for bound ids in InnoDB's parser.
* Define UNIV_BTR_DEBUG for enabling consistency checks of
FIL_PAGE_NEXT and FIL_PAGE_PREV when accessing sibling
pages of B-tree indexes.
btr_validate_level(): Check the validity of the doubly linked
list formed by FIL_PAGE_NEXT and FIL_PAGE_PREV.
* Adapt InnoDB to the new tablename to filename encoding in MySQL 5.1.
ut_print_name(), ut_print_name1(): Add parameter 'table_id' for
distinguishing names of tables from other identifiers.
New: innobase_convert_from_table_id(), innobase_convert_from_id(),
innobase_convert_from_filename(), innobase_get_charset.
dict_accept(), dict_scan_id(), dict_scan_col(), dict_scan_table_name(),
dict_skip_word(), dict_create_foreign_constraints_low(): Add
parameter 'cs' so that isspace() can be replaced with my_isspace(),
whose operation depends on the connection character set.
dict_scan_id(): Convert identifier to UTF-8.
dict_str_starts_with_keyword(): New extern function, to replace
dict_accept() in row_search_for_mysql().
mysql_get_identifier_quote_char(): Replaced with innobase_print_identifier().
ha_innobase::create(): Remove the thd->convert_strin() call. Pass the
statement to InnoDB in the connection character set and let InnoDB
convert the identifier to UTF-8.
* Add max_row_size to dict_table_t.
* btr0cur.c
btr_copy_externally_stored_field(): Only set the 'offset' variable
when needed.
* buf0buf.c
buf_page_io_complete(): Write to the error log if the page number or
the space id o the disk do not match those in memory. Also write to
the error log if a page was read from the doublewrite buffer. The
doublewrite buffer should be only read by the lower-level function
fil_io() at database startup.
* dict0dict.c
dict_scan_table_name(): Remove fallback to differently encoded name
when the table is not found. The encoding is handled at a higher level.
* ha_innodb.cc
Increment statistic counter in ha_innobase::index_prev() (bug 19542).
Add innobase_convert_string wrapper function and a new file
ha_prototypes.h.
innobase_print_identifier(): Remove TODO comment before calling
get_quote_char_for_identifier(). That function apparently assumes
the identifier to be encoded in UTF-8.
* ibuf0ibuf.c|h
ibuf_count_get(), ibuf_counts[], ibuf_count_inited(): Define these
only #ifdef UNIV_IBUF_DEBUG. Previously, when compiled without
UNIV_IBUF_DEBUG, invoking ibuf_count_get() would crash InnoDB.
The function is only being called #ifdef UNIV_IBUF_DEBUG.
* innodb.result
Adjust the results for changes in the foreign key error messages.
* mem0mem.c|h
New: mem_heap_dup(), mem_heap_printf(), mem_heap_cat().
* os0file.c
Check the page trailers also after writing to disk. This improves
chances of diagnosing bug 18886.
os_file_check_page_trailers(): New function for checking that the
two copies of the LSN stamped on the page match.
os_aio_simulated_handle(): Call os_file_check_page_trailers()
before and after os_file_write().
* row0mysql.c
Move trx_commit_for_mysql(trx) calls before calls to
row_mysql_unlock_data_dictionary(trx) (bug 19727).
* row0sel.c
row_fetch_print(): Handle SQL NULL values without crashing.
row_sel_store_mysql_rec(): Remove useless call to rec_get_nth_field
when handling an externally stored column.
Fetch externally stored fields when using InnoDB's internal SQL
parser.
Optimize BLOB selects by using prebuilt->blob_heap directly instead
of first reading BLOB data to a temporary heap and then copying it
to prebuilt->blob_heap.
* srv0srv.c
srv_master_thread(): Remove unreachable code.
* srv0start.c
srv_parse_data_file_paths_and_sizes(): Accept lower-case 'm' and
'g' as abbreviations of megabyte and gigabyte (bug 19609).
srv_parse_megabytes(): New fuction.
* ut0dbg.c|h
Implement InnoDB assertions (ut_a and ut_error) with abort() when
the code is compiled with GCC 3 or later on other platforms than
Windows or Netware. Also disable the variable ut_dbg_stop_threads
and the function ut_dbg_stop_thread() i this case, unless
UNIV_SYC_DEBUG is defined. This should allow the compiler to
generate more compact code for assertions.
* ut0list.c|h
Add ib_list_create_heap().
mysql-test/r/innodb.result:
Applied innodb-5.1-ss594 snapshot.
mysql-test/t/innodb.test:
Copy the comment from the beginning of the file
to the end because MySQL developers continue
adding test cases to this file.
sql/ha_innodb.cc:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/CMakeLists.txt:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/Makefile.am:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/btr/btr0btr.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/btr/btr0cur.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/btr/btr0pcur.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/btr/btr0sea.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/buf/buf0buf.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/buf/buf0flu.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/data/data0type.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/dict/dict0crea.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/dict/dict0dict.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/dict/dict0load.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/dict/dict0mem.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/fil/fil0fil.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/ha/hash0hash.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/ibuf/ibuf0ibuf.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/data0type.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/dict0dict.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/dict0dict.ic:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/dict0mem.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/fil0fil.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/fsp0fsp.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/ibuf0ibuf.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/mem0mem.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/pars0pars.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/pars0sym.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/pars0types.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/rem0rec.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/row0purge.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/row0undo.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/srv0srv.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/sync0rw.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/sync0sync.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/univ.i:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/ut0dbg.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/ut0ut.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/lock/lock0lock.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/log/log0log.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/log/log0recv.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/mem/mem0dbg.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/mem/mem0mem.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/mem/mem0pool.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/os/os0file.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/os/os0thread.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/pars/lexyy.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/pars/pars0lex.l:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/pars/pars0pars.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/pars/pars0sym.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/row/row0ins.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/row/row0mysql.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/row/row0purge.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/row/row0row.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/row/row0sel.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/row/row0upd.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/srv/srv0srv.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/srv/srv0start.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/sync/sync0arr.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/sync/sync0rw.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/sync/sync0sync.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/thr/thr0loc.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/trx/trx0purge.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/trx/trx0rec.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/trx/trx0roll.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/trx/trx0rseg.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/trx/trx0sys.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/trx/trx0trx.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/ut/Makefile.am:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/ut/ut0dbg.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/ut/ut0ut.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/ha_prototypes.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/ut0list.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/ut0list.ic:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/ut0wqueue.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/ut/ut0list.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/ut/ut0wqueue.c:
Applied innodb-5.1-ss594 snapshot.
2006-06-01 08:34:04 +02:00
ERROR 23000: Cannot add or update a child row: a foreign key constraint fails (`test`.`t4`, CONSTRAINT `t4_ibfk_1` FOREIGN KEY (`a`) REFERENCES `t3` (`a`))
2005-12-13 19:35:24 +01:00
truncate t1;
Applied innodb-5.1-ss594 snapshot.
Fixed BUG#19542 "InnoDB doesn't increase the Handler_read_prev couter".
Fixed BUG#19609 "Case sensitivity of innodb_data_file_path gives stupid error".
Fixed BUG#19727 "InnoDB crashed server and crashed tables are ot recoverable".
Also:
* Remove remnants of the obsolete concept of memoryfixing tables and indexes.
* Remove unused dict_table_LRU_trim().
* Remove unused 'trx' parameter from dict_table_get_on_id_low(),
dict_table_get(), dict_table_get_and_increment_handle_count().
* Add a normal linked list implementation.
* Add a work queue implementation.
* Add 'level' parameter to mutex_create() and rw_lock_create().
Remove mutex_set_level() and rw_lock_set_level().
* Rename SYNC_LEVEL_NONE to SYNC_LEVEL_VARYING.
* Add support for bound ids in InnoDB's parser.
* Define UNIV_BTR_DEBUG for enabling consistency checks of
FIL_PAGE_NEXT and FIL_PAGE_PREV when accessing sibling
pages of B-tree indexes.
btr_validate_level(): Check the validity of the doubly linked
list formed by FIL_PAGE_NEXT and FIL_PAGE_PREV.
* Adapt InnoDB to the new tablename to filename encoding in MySQL 5.1.
ut_print_name(), ut_print_name1(): Add parameter 'table_id' for
distinguishing names of tables from other identifiers.
New: innobase_convert_from_table_id(), innobase_convert_from_id(),
innobase_convert_from_filename(), innobase_get_charset.
dict_accept(), dict_scan_id(), dict_scan_col(), dict_scan_table_name(),
dict_skip_word(), dict_create_foreign_constraints_low(): Add
parameter 'cs' so that isspace() can be replaced with my_isspace(),
whose operation depends on the connection character set.
dict_scan_id(): Convert identifier to UTF-8.
dict_str_starts_with_keyword(): New extern function, to replace
dict_accept() in row_search_for_mysql().
mysql_get_identifier_quote_char(): Replaced with innobase_print_identifier().
ha_innobase::create(): Remove the thd->convert_strin() call. Pass the
statement to InnoDB in the connection character set and let InnoDB
convert the identifier to UTF-8.
* Add max_row_size to dict_table_t.
* btr0cur.c
btr_copy_externally_stored_field(): Only set the 'offset' variable
when needed.
* buf0buf.c
buf_page_io_complete(): Write to the error log if the page number or
the space id o the disk do not match those in memory. Also write to
the error log if a page was read from the doublewrite buffer. The
doublewrite buffer should be only read by the lower-level function
fil_io() at database startup.
* dict0dict.c
dict_scan_table_name(): Remove fallback to differently encoded name
when the table is not found. The encoding is handled at a higher level.
* ha_innodb.cc
Increment statistic counter in ha_innobase::index_prev() (bug 19542).
Add innobase_convert_string wrapper function and a new file
ha_prototypes.h.
innobase_print_identifier(): Remove TODO comment before calling
get_quote_char_for_identifier(). That function apparently assumes
the identifier to be encoded in UTF-8.
* ibuf0ibuf.c|h
ibuf_count_get(), ibuf_counts[], ibuf_count_inited(): Define these
only #ifdef UNIV_IBUF_DEBUG. Previously, when compiled without
UNIV_IBUF_DEBUG, invoking ibuf_count_get() would crash InnoDB.
The function is only being called #ifdef UNIV_IBUF_DEBUG.
* innodb.result
Adjust the results for changes in the foreign key error messages.
* mem0mem.c|h
New: mem_heap_dup(), mem_heap_printf(), mem_heap_cat().
* os0file.c
Check the page trailers also after writing to disk. This improves
chances of diagnosing bug 18886.
os_file_check_page_trailers(): New function for checking that the
two copies of the LSN stamped on the page match.
os_aio_simulated_handle(): Call os_file_check_page_trailers()
before and after os_file_write().
* row0mysql.c
Move trx_commit_for_mysql(trx) calls before calls to
row_mysql_unlock_data_dictionary(trx) (bug 19727).
* row0sel.c
row_fetch_print(): Handle SQL NULL values without crashing.
row_sel_store_mysql_rec(): Remove useless call to rec_get_nth_field
when handling an externally stored column.
Fetch externally stored fields when using InnoDB's internal SQL
parser.
Optimize BLOB selects by using prebuilt->blob_heap directly instead
of first reading BLOB data to a temporary heap and then copying it
to prebuilt->blob_heap.
* srv0srv.c
srv_master_thread(): Remove unreachable code.
* srv0start.c
srv_parse_data_file_paths_and_sizes(): Accept lower-case 'm' and
'g' as abbreviations of megabyte and gigabyte (bug 19609).
srv_parse_megabytes(): New fuction.
* ut0dbg.c|h
Implement InnoDB assertions (ut_a and ut_error) with abort() when
the code is compiled with GCC 3 or later on other platforms than
Windows or Netware. Also disable the variable ut_dbg_stop_threads
and the function ut_dbg_stop_thread() i this case, unless
UNIV_SYC_DEBUG is defined. This should allow the compiler to
generate more compact code for assertions.
* ut0list.c|h
Add ib_list_create_heap().
mysql-test/r/innodb.result:
Applied innodb-5.1-ss594 snapshot.
mysql-test/t/innodb.test:
Copy the comment from the beginning of the file
to the end because MySQL developers continue
adding test cases to this file.
sql/ha_innodb.cc:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/CMakeLists.txt:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/Makefile.am:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/btr/btr0btr.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/btr/btr0cur.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/btr/btr0pcur.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/btr/btr0sea.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/buf/buf0buf.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/buf/buf0flu.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/data/data0type.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/dict/dict0crea.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/dict/dict0dict.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/dict/dict0load.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/dict/dict0mem.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/fil/fil0fil.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/ha/hash0hash.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/ibuf/ibuf0ibuf.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/data0type.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/dict0dict.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/dict0dict.ic:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/dict0mem.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/fil0fil.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/fsp0fsp.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/ibuf0ibuf.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/mem0mem.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/pars0pars.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/pars0sym.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/pars0types.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/rem0rec.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/row0purge.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/row0undo.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/srv0srv.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/sync0rw.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/sync0sync.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/univ.i:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/ut0dbg.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/ut0ut.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/lock/lock0lock.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/log/log0log.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/log/log0recv.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/mem/mem0dbg.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/mem/mem0mem.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/mem/mem0pool.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/os/os0file.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/os/os0thread.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/pars/lexyy.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/pars/pars0lex.l:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/pars/pars0pars.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/pars/pars0sym.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/row/row0ins.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/row/row0mysql.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/row/row0purge.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/row/row0row.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/row/row0sel.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/row/row0upd.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/srv/srv0srv.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/srv/srv0start.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/sync/sync0arr.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/sync/sync0rw.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/sync/sync0sync.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/thr/thr0loc.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/trx/trx0purge.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/trx/trx0rec.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/trx/trx0roll.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/trx/trx0rseg.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/trx/trx0sys.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/trx/trx0trx.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/ut/Makefile.am:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/ut/ut0dbg.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/ut/ut0ut.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/ha_prototypes.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/ut0list.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/ut0list.ic:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/ut0wqueue.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/ut/ut0list.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/ut/ut0wqueue.c:
Applied innodb-5.1-ss594 snapshot.
2006-06-01 08:34:04 +02:00
ERROR 23000: Cannot delete or update a parent row: a foreign key constraint fails (`test`.`t2`, CONSTRAINT `t2_ibfk_1` FOREIGN KEY (`a`) REFERENCES `t1` (`a`))
2005-12-13 19:35:24 +01:00
truncate t3;
Applied innodb-5.1-ss594 snapshot.
Fixed BUG#19542 "InnoDB doesn't increase the Handler_read_prev couter".
Fixed BUG#19609 "Case sensitivity of innodb_data_file_path gives stupid error".
Fixed BUG#19727 "InnoDB crashed server and crashed tables are ot recoverable".
Also:
* Remove remnants of the obsolete concept of memoryfixing tables and indexes.
* Remove unused dict_table_LRU_trim().
* Remove unused 'trx' parameter from dict_table_get_on_id_low(),
dict_table_get(), dict_table_get_and_increment_handle_count().
* Add a normal linked list implementation.
* Add a work queue implementation.
* Add 'level' parameter to mutex_create() and rw_lock_create().
Remove mutex_set_level() and rw_lock_set_level().
* Rename SYNC_LEVEL_NONE to SYNC_LEVEL_VARYING.
* Add support for bound ids in InnoDB's parser.
* Define UNIV_BTR_DEBUG for enabling consistency checks of
FIL_PAGE_NEXT and FIL_PAGE_PREV when accessing sibling
pages of B-tree indexes.
btr_validate_level(): Check the validity of the doubly linked
list formed by FIL_PAGE_NEXT and FIL_PAGE_PREV.
* Adapt InnoDB to the new tablename to filename encoding in MySQL 5.1.
ut_print_name(), ut_print_name1(): Add parameter 'table_id' for
distinguishing names of tables from other identifiers.
New: innobase_convert_from_table_id(), innobase_convert_from_id(),
innobase_convert_from_filename(), innobase_get_charset.
dict_accept(), dict_scan_id(), dict_scan_col(), dict_scan_table_name(),
dict_skip_word(), dict_create_foreign_constraints_low(): Add
parameter 'cs' so that isspace() can be replaced with my_isspace(),
whose operation depends on the connection character set.
dict_scan_id(): Convert identifier to UTF-8.
dict_str_starts_with_keyword(): New extern function, to replace
dict_accept() in row_search_for_mysql().
mysql_get_identifier_quote_char(): Replaced with innobase_print_identifier().
ha_innobase::create(): Remove the thd->convert_strin() call. Pass the
statement to InnoDB in the connection character set and let InnoDB
convert the identifier to UTF-8.
* Add max_row_size to dict_table_t.
* btr0cur.c
btr_copy_externally_stored_field(): Only set the 'offset' variable
when needed.
* buf0buf.c
buf_page_io_complete(): Write to the error log if the page number or
the space id o the disk do not match those in memory. Also write to
the error log if a page was read from the doublewrite buffer. The
doublewrite buffer should be only read by the lower-level function
fil_io() at database startup.
* dict0dict.c
dict_scan_table_name(): Remove fallback to differently encoded name
when the table is not found. The encoding is handled at a higher level.
* ha_innodb.cc
Increment statistic counter in ha_innobase::index_prev() (bug 19542).
Add innobase_convert_string wrapper function and a new file
ha_prototypes.h.
innobase_print_identifier(): Remove TODO comment before calling
get_quote_char_for_identifier(). That function apparently assumes
the identifier to be encoded in UTF-8.
* ibuf0ibuf.c|h
ibuf_count_get(), ibuf_counts[], ibuf_count_inited(): Define these
only #ifdef UNIV_IBUF_DEBUG. Previously, when compiled without
UNIV_IBUF_DEBUG, invoking ibuf_count_get() would crash InnoDB.
The function is only being called #ifdef UNIV_IBUF_DEBUG.
* innodb.result
Adjust the results for changes in the foreign key error messages.
* mem0mem.c|h
New: mem_heap_dup(), mem_heap_printf(), mem_heap_cat().
* os0file.c
Check the page trailers also after writing to disk. This improves
chances of diagnosing bug 18886.
os_file_check_page_trailers(): New function for checking that the
two copies of the LSN stamped on the page match.
os_aio_simulated_handle(): Call os_file_check_page_trailers()
before and after os_file_write().
* row0mysql.c
Move trx_commit_for_mysql(trx) calls before calls to
row_mysql_unlock_data_dictionary(trx) (bug 19727).
* row0sel.c
row_fetch_print(): Handle SQL NULL values without crashing.
row_sel_store_mysql_rec(): Remove useless call to rec_get_nth_field
when handling an externally stored column.
Fetch externally stored fields when using InnoDB's internal SQL
parser.
Optimize BLOB selects by using prebuilt->blob_heap directly instead
of first reading BLOB data to a temporary heap and then copying it
to prebuilt->blob_heap.
* srv0srv.c
srv_master_thread(): Remove unreachable code.
* srv0start.c
srv_parse_data_file_paths_and_sizes(): Accept lower-case 'm' and
'g' as abbreviations of megabyte and gigabyte (bug 19609).
srv_parse_megabytes(): New fuction.
* ut0dbg.c|h
Implement InnoDB assertions (ut_a and ut_error) with abort() when
the code is compiled with GCC 3 or later on other platforms than
Windows or Netware. Also disable the variable ut_dbg_stop_threads
and the function ut_dbg_stop_thread() i this case, unless
UNIV_SYC_DEBUG is defined. This should allow the compiler to
generate more compact code for assertions.
* ut0list.c|h
Add ib_list_create_heap().
mysql-test/r/innodb.result:
Applied innodb-5.1-ss594 snapshot.
mysql-test/t/innodb.test:
Copy the comment from the beginning of the file
to the end because MySQL developers continue
adding test cases to this file.
sql/ha_innodb.cc:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/CMakeLists.txt:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/Makefile.am:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/btr/btr0btr.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/btr/btr0cur.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/btr/btr0pcur.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/btr/btr0sea.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/buf/buf0buf.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/buf/buf0flu.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/data/data0type.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/dict/dict0crea.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/dict/dict0dict.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/dict/dict0load.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/dict/dict0mem.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/fil/fil0fil.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/ha/hash0hash.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/ibuf/ibuf0ibuf.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/data0type.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/dict0dict.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/dict0dict.ic:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/dict0mem.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/fil0fil.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/fsp0fsp.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/ibuf0ibuf.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/mem0mem.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/pars0pars.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/pars0sym.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/pars0types.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/rem0rec.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/row0purge.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/row0undo.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/srv0srv.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/sync0rw.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/sync0sync.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/univ.i:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/ut0dbg.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/ut0ut.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/lock/lock0lock.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/log/log0log.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/log/log0recv.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/mem/mem0dbg.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/mem/mem0mem.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/mem/mem0pool.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/os/os0file.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/os/os0thread.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/pars/lexyy.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/pars/pars0lex.l:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/pars/pars0pars.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/pars/pars0sym.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/row/row0ins.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/row/row0mysql.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/row/row0purge.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/row/row0row.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/row/row0sel.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/row/row0upd.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/srv/srv0srv.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/srv/srv0start.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/sync/sync0arr.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/sync/sync0rw.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/sync/sync0sync.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/thr/thr0loc.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/trx/trx0purge.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/trx/trx0rec.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/trx/trx0roll.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/trx/trx0rseg.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/trx/trx0sys.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/trx/trx0trx.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/ut/Makefile.am:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/ut/ut0dbg.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/ut/ut0ut.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/ha_prototypes.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/ut0list.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/ut0list.ic:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/ut0wqueue.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/ut/ut0list.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/ut/ut0wqueue.c:
Applied innodb-5.1-ss594 snapshot.
2006-06-01 08:34:04 +02:00
ERROR 23000: Cannot delete or update a parent row: a foreign key constraint fails (`test`.`t4`, CONSTRAINT `t4_ibfk_1` FOREIGN KEY (`a`) REFERENCES `t3` (`a`))
2005-12-13 19:35:24 +01:00
truncate t2;
truncate t4;
truncate t1;
truncate t3;
drop table t4,t3,t2,t1;
2006-01-16 12:32:43 +01:00
create table t1 (a varchar(255) character set utf8,
b varchar(255) character set utf8,
c varchar(255) character set utf8,
d varchar(255) character set utf8,
key (a,b,c,d)) engine=innodb;
drop table t1;
create table t1 (a varchar(255) character set utf8,
b varchar(255) character set utf8,
c varchar(255) character set utf8,
d varchar(255) character set utf8,
e varchar(255) character set utf8,
key (a,b,c,d,e)) engine=innodb;
ERROR 42000: Specified key was too long; max key length is 3072 bytes
create table t1 (s1 varbinary(2),primary key (s1)) engine=innodb;
create table t2 (s1 binary(2),primary key (s1)) engine=innodb;
create table t3 (s1 varchar(2) binary,primary key (s1)) engine=innodb;
create table t4 (s1 char(2) binary,primary key (s1)) engine=innodb;
insert into t1 values (0x41),(0x4120),(0x4100);
insert into t2 values (0x41),(0x4120),(0x4100);
2009-10-15 14:23:43 +02:00
ERROR 23000: Duplicate entry 'A\x00' for key 'PRIMARY'
2006-01-16 12:32:43 +01:00
insert into t2 values (0x41),(0x4120);
insert into t3 values (0x41),(0x4120),(0x4100);
2006-04-14 17:39:36 +02:00
ERROR 23000: Duplicate entry 'A ' for key 'PRIMARY'
2006-01-16 12:32:43 +01:00
insert into t3 values (0x41),(0x4100);
insert into t4 values (0x41),(0x4120),(0x4100);
2006-04-14 17:39:36 +02:00
ERROR 23000: Duplicate entry 'A' for key 'PRIMARY'
2006-01-16 12:32:43 +01:00
insert into t4 values (0x41),(0x4100);
select hex(s1) from t1;
hex(s1)
41
4100
4120
select hex(s1) from t2;
hex(s1)
4100
4120
select hex(s1) from t3;
hex(s1)
4100
41
select hex(s1) from t4;
hex(s1)
4100
41
drop table t1,t2,t3,t4;
create table t1 (a int primary key,s1 varbinary(3) not null unique) engine=innodb;
create table t2 (s1 binary(2) not null, constraint c foreign key(s1) references t1(s1) on update cascade) engine=innodb;
insert into t1 values(1,0x4100),(2,0x41),(3,0x4120),(4,0x42);
insert into t2 values(0x42);
Applied innodb-5.1-ss594 snapshot.
Fixed BUG#19542 "InnoDB doesn't increase the Handler_read_prev couter".
Fixed BUG#19609 "Case sensitivity of innodb_data_file_path gives stupid error".
Fixed BUG#19727 "InnoDB crashed server and crashed tables are ot recoverable".
Also:
* Remove remnants of the obsolete concept of memoryfixing tables and indexes.
* Remove unused dict_table_LRU_trim().
* Remove unused 'trx' parameter from dict_table_get_on_id_low(),
dict_table_get(), dict_table_get_and_increment_handle_count().
* Add a normal linked list implementation.
* Add a work queue implementation.
* Add 'level' parameter to mutex_create() and rw_lock_create().
Remove mutex_set_level() and rw_lock_set_level().
* Rename SYNC_LEVEL_NONE to SYNC_LEVEL_VARYING.
* Add support for bound ids in InnoDB's parser.
* Define UNIV_BTR_DEBUG for enabling consistency checks of
FIL_PAGE_NEXT and FIL_PAGE_PREV when accessing sibling
pages of B-tree indexes.
btr_validate_level(): Check the validity of the doubly linked
list formed by FIL_PAGE_NEXT and FIL_PAGE_PREV.
* Adapt InnoDB to the new tablename to filename encoding in MySQL 5.1.
ut_print_name(), ut_print_name1(): Add parameter 'table_id' for
distinguishing names of tables from other identifiers.
New: innobase_convert_from_table_id(), innobase_convert_from_id(),
innobase_convert_from_filename(), innobase_get_charset.
dict_accept(), dict_scan_id(), dict_scan_col(), dict_scan_table_name(),
dict_skip_word(), dict_create_foreign_constraints_low(): Add
parameter 'cs' so that isspace() can be replaced with my_isspace(),
whose operation depends on the connection character set.
dict_scan_id(): Convert identifier to UTF-8.
dict_str_starts_with_keyword(): New extern function, to replace
dict_accept() in row_search_for_mysql().
mysql_get_identifier_quote_char(): Replaced with innobase_print_identifier().
ha_innobase::create(): Remove the thd->convert_strin() call. Pass the
statement to InnoDB in the connection character set and let InnoDB
convert the identifier to UTF-8.
* Add max_row_size to dict_table_t.
* btr0cur.c
btr_copy_externally_stored_field(): Only set the 'offset' variable
when needed.
* buf0buf.c
buf_page_io_complete(): Write to the error log if the page number or
the space id o the disk do not match those in memory. Also write to
the error log if a page was read from the doublewrite buffer. The
doublewrite buffer should be only read by the lower-level function
fil_io() at database startup.
* dict0dict.c
dict_scan_table_name(): Remove fallback to differently encoded name
when the table is not found. The encoding is handled at a higher level.
* ha_innodb.cc
Increment statistic counter in ha_innobase::index_prev() (bug 19542).
Add innobase_convert_string wrapper function and a new file
ha_prototypes.h.
innobase_print_identifier(): Remove TODO comment before calling
get_quote_char_for_identifier(). That function apparently assumes
the identifier to be encoded in UTF-8.
* ibuf0ibuf.c|h
ibuf_count_get(), ibuf_counts[], ibuf_count_inited(): Define these
only #ifdef UNIV_IBUF_DEBUG. Previously, when compiled without
UNIV_IBUF_DEBUG, invoking ibuf_count_get() would crash InnoDB.
The function is only being called #ifdef UNIV_IBUF_DEBUG.
* innodb.result
Adjust the results for changes in the foreign key error messages.
* mem0mem.c|h
New: mem_heap_dup(), mem_heap_printf(), mem_heap_cat().
* os0file.c
Check the page trailers also after writing to disk. This improves
chances of diagnosing bug 18886.
os_file_check_page_trailers(): New function for checking that the
two copies of the LSN stamped on the page match.
os_aio_simulated_handle(): Call os_file_check_page_trailers()
before and after os_file_write().
* row0mysql.c
Move trx_commit_for_mysql(trx) calls before calls to
row_mysql_unlock_data_dictionary(trx) (bug 19727).
* row0sel.c
row_fetch_print(): Handle SQL NULL values without crashing.
row_sel_store_mysql_rec(): Remove useless call to rec_get_nth_field
when handling an externally stored column.
Fetch externally stored fields when using InnoDB's internal SQL
parser.
Optimize BLOB selects by using prebuilt->blob_heap directly instead
of first reading BLOB data to a temporary heap and then copying it
to prebuilt->blob_heap.
* srv0srv.c
srv_master_thread(): Remove unreachable code.
* srv0start.c
srv_parse_data_file_paths_and_sizes(): Accept lower-case 'm' and
'g' as abbreviations of megabyte and gigabyte (bug 19609).
srv_parse_megabytes(): New fuction.
* ut0dbg.c|h
Implement InnoDB assertions (ut_a and ut_error) with abort() when
the code is compiled with GCC 3 or later on other platforms than
Windows or Netware. Also disable the variable ut_dbg_stop_threads
and the function ut_dbg_stop_thread() i this case, unless
UNIV_SYC_DEBUG is defined. This should allow the compiler to
generate more compact code for assertions.
* ut0list.c|h
Add ib_list_create_heap().
mysql-test/r/innodb.result:
Applied innodb-5.1-ss594 snapshot.
mysql-test/t/innodb.test:
Copy the comment from the beginning of the file
to the end because MySQL developers continue
adding test cases to this file.
sql/ha_innodb.cc:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/CMakeLists.txt:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/Makefile.am:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/btr/btr0btr.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/btr/btr0cur.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/btr/btr0pcur.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/btr/btr0sea.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/buf/buf0buf.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/buf/buf0flu.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/data/data0type.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/dict/dict0crea.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/dict/dict0dict.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/dict/dict0load.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/dict/dict0mem.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/fil/fil0fil.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/ha/hash0hash.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/ibuf/ibuf0ibuf.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/data0type.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/dict0dict.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/dict0dict.ic:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/dict0mem.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/fil0fil.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/fsp0fsp.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/ibuf0ibuf.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/mem0mem.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/pars0pars.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/pars0sym.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/pars0types.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/rem0rec.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/row0purge.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/row0undo.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/srv0srv.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/sync0rw.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/sync0sync.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/univ.i:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/ut0dbg.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/ut0ut.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/lock/lock0lock.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/log/log0log.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/log/log0recv.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/mem/mem0dbg.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/mem/mem0mem.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/mem/mem0pool.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/os/os0file.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/os/os0thread.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/pars/lexyy.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/pars/pars0lex.l:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/pars/pars0pars.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/pars/pars0sym.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/row/row0ins.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/row/row0mysql.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/row/row0purge.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/row/row0row.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/row/row0sel.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/row/row0upd.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/srv/srv0srv.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/srv/srv0start.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/sync/sync0arr.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/sync/sync0rw.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/sync/sync0sync.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/thr/thr0loc.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/trx/trx0purge.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/trx/trx0rec.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/trx/trx0roll.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/trx/trx0rseg.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/trx/trx0sys.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/trx/trx0trx.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/ut/Makefile.am:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/ut/ut0dbg.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/ut/ut0ut.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/ha_prototypes.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/ut0list.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/ut0list.ic:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/ut0wqueue.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/ut/ut0list.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/ut/ut0wqueue.c:
Applied innodb-5.1-ss594 snapshot.
2006-06-01 08:34:04 +02:00
ERROR 23000: Cannot add or update a child row: a foreign key constraint fails (`test`.`t2`, CONSTRAINT `c` FOREIGN KEY (`s1`) REFERENCES `t1` (`s1`) ON UPDATE CASCADE)
2006-01-16 12:32:43 +01:00
insert into t2 values(0x41);
select hex(s1) from t2;
hex(s1)
4100
update t1 set s1=0x123456 where a=2;
select hex(s1) from t2;
hex(s1)
4100
update t1 set s1=0x12 where a=1;
Applied innodb-5.1-ss594 snapshot.
Fixed BUG#19542 "InnoDB doesn't increase the Handler_read_prev couter".
Fixed BUG#19609 "Case sensitivity of innodb_data_file_path gives stupid error".
Fixed BUG#19727 "InnoDB crashed server and crashed tables are ot recoverable".
Also:
* Remove remnants of the obsolete concept of memoryfixing tables and indexes.
* Remove unused dict_table_LRU_trim().
* Remove unused 'trx' parameter from dict_table_get_on_id_low(),
dict_table_get(), dict_table_get_and_increment_handle_count().
* Add a normal linked list implementation.
* Add a work queue implementation.
* Add 'level' parameter to mutex_create() and rw_lock_create().
Remove mutex_set_level() and rw_lock_set_level().
* Rename SYNC_LEVEL_NONE to SYNC_LEVEL_VARYING.
* Add support for bound ids in InnoDB's parser.
* Define UNIV_BTR_DEBUG for enabling consistency checks of
FIL_PAGE_NEXT and FIL_PAGE_PREV when accessing sibling
pages of B-tree indexes.
btr_validate_level(): Check the validity of the doubly linked
list formed by FIL_PAGE_NEXT and FIL_PAGE_PREV.
* Adapt InnoDB to the new tablename to filename encoding in MySQL 5.1.
ut_print_name(), ut_print_name1(): Add parameter 'table_id' for
distinguishing names of tables from other identifiers.
New: innobase_convert_from_table_id(), innobase_convert_from_id(),
innobase_convert_from_filename(), innobase_get_charset.
dict_accept(), dict_scan_id(), dict_scan_col(), dict_scan_table_name(),
dict_skip_word(), dict_create_foreign_constraints_low(): Add
parameter 'cs' so that isspace() can be replaced with my_isspace(),
whose operation depends on the connection character set.
dict_scan_id(): Convert identifier to UTF-8.
dict_str_starts_with_keyword(): New extern function, to replace
dict_accept() in row_search_for_mysql().
mysql_get_identifier_quote_char(): Replaced with innobase_print_identifier().
ha_innobase::create(): Remove the thd->convert_strin() call. Pass the
statement to InnoDB in the connection character set and let InnoDB
convert the identifier to UTF-8.
* Add max_row_size to dict_table_t.
* btr0cur.c
btr_copy_externally_stored_field(): Only set the 'offset' variable
when needed.
* buf0buf.c
buf_page_io_complete(): Write to the error log if the page number or
the space id o the disk do not match those in memory. Also write to
the error log if a page was read from the doublewrite buffer. The
doublewrite buffer should be only read by the lower-level function
fil_io() at database startup.
* dict0dict.c
dict_scan_table_name(): Remove fallback to differently encoded name
when the table is not found. The encoding is handled at a higher level.
* ha_innodb.cc
Increment statistic counter in ha_innobase::index_prev() (bug 19542).
Add innobase_convert_string wrapper function and a new file
ha_prototypes.h.
innobase_print_identifier(): Remove TODO comment before calling
get_quote_char_for_identifier(). That function apparently assumes
the identifier to be encoded in UTF-8.
* ibuf0ibuf.c|h
ibuf_count_get(), ibuf_counts[], ibuf_count_inited(): Define these
only #ifdef UNIV_IBUF_DEBUG. Previously, when compiled without
UNIV_IBUF_DEBUG, invoking ibuf_count_get() would crash InnoDB.
The function is only being called #ifdef UNIV_IBUF_DEBUG.
* innodb.result
Adjust the results for changes in the foreign key error messages.
* mem0mem.c|h
New: mem_heap_dup(), mem_heap_printf(), mem_heap_cat().
* os0file.c
Check the page trailers also after writing to disk. This improves
chances of diagnosing bug 18886.
os_file_check_page_trailers(): New function for checking that the
two copies of the LSN stamped on the page match.
os_aio_simulated_handle(): Call os_file_check_page_trailers()
before and after os_file_write().
* row0mysql.c
Move trx_commit_for_mysql(trx) calls before calls to
row_mysql_unlock_data_dictionary(trx) (bug 19727).
* row0sel.c
row_fetch_print(): Handle SQL NULL values without crashing.
row_sel_store_mysql_rec(): Remove useless call to rec_get_nth_field
when handling an externally stored column.
Fetch externally stored fields when using InnoDB's internal SQL
parser.
Optimize BLOB selects by using prebuilt->blob_heap directly instead
of first reading BLOB data to a temporary heap and then copying it
to prebuilt->blob_heap.
* srv0srv.c
srv_master_thread(): Remove unreachable code.
* srv0start.c
srv_parse_data_file_paths_and_sizes(): Accept lower-case 'm' and
'g' as abbreviations of megabyte and gigabyte (bug 19609).
srv_parse_megabytes(): New fuction.
* ut0dbg.c|h
Implement InnoDB assertions (ut_a and ut_error) with abort() when
the code is compiled with GCC 3 or later on other platforms than
Windows or Netware. Also disable the variable ut_dbg_stop_threads
and the function ut_dbg_stop_thread() i this case, unless
UNIV_SYC_DEBUG is defined. This should allow the compiler to
generate more compact code for assertions.
* ut0list.c|h
Add ib_list_create_heap().
mysql-test/r/innodb.result:
Applied innodb-5.1-ss594 snapshot.
mysql-test/t/innodb.test:
Copy the comment from the beginning of the file
to the end because MySQL developers continue
adding test cases to this file.
sql/ha_innodb.cc:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/CMakeLists.txt:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/Makefile.am:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/btr/btr0btr.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/btr/btr0cur.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/btr/btr0pcur.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/btr/btr0sea.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/buf/buf0buf.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/buf/buf0flu.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/data/data0type.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/dict/dict0crea.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/dict/dict0dict.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/dict/dict0load.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/dict/dict0mem.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/fil/fil0fil.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/ha/hash0hash.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/ibuf/ibuf0ibuf.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/data0type.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/dict0dict.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/dict0dict.ic:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/dict0mem.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/fil0fil.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/fsp0fsp.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/ibuf0ibuf.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/mem0mem.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/pars0pars.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/pars0sym.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/pars0types.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/rem0rec.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/row0purge.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/row0undo.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/srv0srv.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/sync0rw.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/sync0sync.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/univ.i:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/ut0dbg.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/ut0ut.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/lock/lock0lock.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/log/log0log.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/log/log0recv.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/mem/mem0dbg.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/mem/mem0mem.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/mem/mem0pool.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/os/os0file.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/os/os0thread.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/pars/lexyy.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/pars/pars0lex.l:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/pars/pars0pars.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/pars/pars0sym.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/row/row0ins.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/row/row0mysql.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/row/row0purge.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/row/row0row.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/row/row0sel.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/row/row0upd.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/srv/srv0srv.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/srv/srv0start.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/sync/sync0arr.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/sync/sync0rw.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/sync/sync0sync.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/thr/thr0loc.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/trx/trx0purge.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/trx/trx0rec.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/trx/trx0roll.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/trx/trx0rseg.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/trx/trx0sys.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/trx/trx0trx.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/ut/Makefile.am:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/ut/ut0dbg.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/ut/ut0ut.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/ha_prototypes.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/ut0list.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/ut0list.ic:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/ut0wqueue.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/ut/ut0list.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/ut/ut0wqueue.c:
Applied innodb-5.1-ss594 snapshot.
2006-06-01 08:34:04 +02:00
ERROR 23000: Cannot delete or update a parent row: a foreign key constraint fails (`test`.`t2`, CONSTRAINT `c` FOREIGN KEY (`s1`) REFERENCES `t1` (`s1`) ON UPDATE CASCADE)
2006-01-16 12:32:43 +01:00
update t1 set s1=0x12345678 where a=1;
Applied innodb-5.1-ss594 snapshot.
Fixed BUG#19542 "InnoDB doesn't increase the Handler_read_prev couter".
Fixed BUG#19609 "Case sensitivity of innodb_data_file_path gives stupid error".
Fixed BUG#19727 "InnoDB crashed server and crashed tables are ot recoverable".
Also:
* Remove remnants of the obsolete concept of memoryfixing tables and indexes.
* Remove unused dict_table_LRU_trim().
* Remove unused 'trx' parameter from dict_table_get_on_id_low(),
dict_table_get(), dict_table_get_and_increment_handle_count().
* Add a normal linked list implementation.
* Add a work queue implementation.
* Add 'level' parameter to mutex_create() and rw_lock_create().
Remove mutex_set_level() and rw_lock_set_level().
* Rename SYNC_LEVEL_NONE to SYNC_LEVEL_VARYING.
* Add support for bound ids in InnoDB's parser.
* Define UNIV_BTR_DEBUG for enabling consistency checks of
FIL_PAGE_NEXT and FIL_PAGE_PREV when accessing sibling
pages of B-tree indexes.
btr_validate_level(): Check the validity of the doubly linked
list formed by FIL_PAGE_NEXT and FIL_PAGE_PREV.
* Adapt InnoDB to the new tablename to filename encoding in MySQL 5.1.
ut_print_name(), ut_print_name1(): Add parameter 'table_id' for
distinguishing names of tables from other identifiers.
New: innobase_convert_from_table_id(), innobase_convert_from_id(),
innobase_convert_from_filename(), innobase_get_charset.
dict_accept(), dict_scan_id(), dict_scan_col(), dict_scan_table_name(),
dict_skip_word(), dict_create_foreign_constraints_low(): Add
parameter 'cs' so that isspace() can be replaced with my_isspace(),
whose operation depends on the connection character set.
dict_scan_id(): Convert identifier to UTF-8.
dict_str_starts_with_keyword(): New extern function, to replace
dict_accept() in row_search_for_mysql().
mysql_get_identifier_quote_char(): Replaced with innobase_print_identifier().
ha_innobase::create(): Remove the thd->convert_strin() call. Pass the
statement to InnoDB in the connection character set and let InnoDB
convert the identifier to UTF-8.
* Add max_row_size to dict_table_t.
* btr0cur.c
btr_copy_externally_stored_field(): Only set the 'offset' variable
when needed.
* buf0buf.c
buf_page_io_complete(): Write to the error log if the page number or
the space id o the disk do not match those in memory. Also write to
the error log if a page was read from the doublewrite buffer. The
doublewrite buffer should be only read by the lower-level function
fil_io() at database startup.
* dict0dict.c
dict_scan_table_name(): Remove fallback to differently encoded name
when the table is not found. The encoding is handled at a higher level.
* ha_innodb.cc
Increment statistic counter in ha_innobase::index_prev() (bug 19542).
Add innobase_convert_string wrapper function and a new file
ha_prototypes.h.
innobase_print_identifier(): Remove TODO comment before calling
get_quote_char_for_identifier(). That function apparently assumes
the identifier to be encoded in UTF-8.
* ibuf0ibuf.c|h
ibuf_count_get(), ibuf_counts[], ibuf_count_inited(): Define these
only #ifdef UNIV_IBUF_DEBUG. Previously, when compiled without
UNIV_IBUF_DEBUG, invoking ibuf_count_get() would crash InnoDB.
The function is only being called #ifdef UNIV_IBUF_DEBUG.
* innodb.result
Adjust the results for changes in the foreign key error messages.
* mem0mem.c|h
New: mem_heap_dup(), mem_heap_printf(), mem_heap_cat().
* os0file.c
Check the page trailers also after writing to disk. This improves
chances of diagnosing bug 18886.
os_file_check_page_trailers(): New function for checking that the
two copies of the LSN stamped on the page match.
os_aio_simulated_handle(): Call os_file_check_page_trailers()
before and after os_file_write().
* row0mysql.c
Move trx_commit_for_mysql(trx) calls before calls to
row_mysql_unlock_data_dictionary(trx) (bug 19727).
* row0sel.c
row_fetch_print(): Handle SQL NULL values without crashing.
row_sel_store_mysql_rec(): Remove useless call to rec_get_nth_field
when handling an externally stored column.
Fetch externally stored fields when using InnoDB's internal SQL
parser.
Optimize BLOB selects by using prebuilt->blob_heap directly instead
of first reading BLOB data to a temporary heap and then copying it
to prebuilt->blob_heap.
* srv0srv.c
srv_master_thread(): Remove unreachable code.
* srv0start.c
srv_parse_data_file_paths_and_sizes(): Accept lower-case 'm' and
'g' as abbreviations of megabyte and gigabyte (bug 19609).
srv_parse_megabytes(): New fuction.
* ut0dbg.c|h
Implement InnoDB assertions (ut_a and ut_error) with abort() when
the code is compiled with GCC 3 or later on other platforms than
Windows or Netware. Also disable the variable ut_dbg_stop_threads
and the function ut_dbg_stop_thread() i this case, unless
UNIV_SYC_DEBUG is defined. This should allow the compiler to
generate more compact code for assertions.
* ut0list.c|h
Add ib_list_create_heap().
mysql-test/r/innodb.result:
Applied innodb-5.1-ss594 snapshot.
mysql-test/t/innodb.test:
Copy the comment from the beginning of the file
to the end because MySQL developers continue
adding test cases to this file.
sql/ha_innodb.cc:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/CMakeLists.txt:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/Makefile.am:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/btr/btr0btr.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/btr/btr0cur.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/btr/btr0pcur.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/btr/btr0sea.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/buf/buf0buf.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/buf/buf0flu.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/data/data0type.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/dict/dict0crea.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/dict/dict0dict.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/dict/dict0load.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/dict/dict0mem.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/fil/fil0fil.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/ha/hash0hash.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/ibuf/ibuf0ibuf.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/data0type.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/dict0dict.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/dict0dict.ic:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/dict0mem.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/fil0fil.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/fsp0fsp.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/ibuf0ibuf.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/mem0mem.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/pars0pars.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/pars0sym.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/pars0types.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/rem0rec.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/row0purge.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/row0undo.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/srv0srv.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/sync0rw.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/sync0sync.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/univ.i:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/ut0dbg.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/ut0ut.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/lock/lock0lock.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/log/log0log.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/log/log0recv.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/mem/mem0dbg.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/mem/mem0mem.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/mem/mem0pool.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/os/os0file.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/os/os0thread.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/pars/lexyy.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/pars/pars0lex.l:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/pars/pars0pars.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/pars/pars0sym.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/row/row0ins.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/row/row0mysql.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/row/row0purge.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/row/row0row.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/row/row0sel.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/row/row0upd.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/srv/srv0srv.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/srv/srv0start.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/sync/sync0arr.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/sync/sync0rw.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/sync/sync0sync.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/thr/thr0loc.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/trx/trx0purge.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/trx/trx0rec.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/trx/trx0roll.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/trx/trx0rseg.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/trx/trx0sys.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/trx/trx0trx.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/ut/Makefile.am:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/ut/ut0dbg.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/ut/ut0ut.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/ha_prototypes.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/ut0list.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/ut0list.ic:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/ut0wqueue.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/ut/ut0list.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/ut/ut0wqueue.c:
Applied innodb-5.1-ss594 snapshot.
2006-06-01 08:34:04 +02:00
ERROR 23000: Cannot delete or update a parent row: a foreign key constraint fails (`test`.`t2`, CONSTRAINT `c` FOREIGN KEY (`s1`) REFERENCES `t1` (`s1`) ON UPDATE CASCADE)
2006-01-16 12:32:43 +01:00
update t1 set s1=0x123457 where a=1;
Applied innodb-5.1-ss594 snapshot.
Fixed BUG#19542 "InnoDB doesn't increase the Handler_read_prev couter".
Fixed BUG#19609 "Case sensitivity of innodb_data_file_path gives stupid error".
Fixed BUG#19727 "InnoDB crashed server and crashed tables are ot recoverable".
Also:
* Remove remnants of the obsolete concept of memoryfixing tables and indexes.
* Remove unused dict_table_LRU_trim().
* Remove unused 'trx' parameter from dict_table_get_on_id_low(),
dict_table_get(), dict_table_get_and_increment_handle_count().
* Add a normal linked list implementation.
* Add a work queue implementation.
* Add 'level' parameter to mutex_create() and rw_lock_create().
Remove mutex_set_level() and rw_lock_set_level().
* Rename SYNC_LEVEL_NONE to SYNC_LEVEL_VARYING.
* Add support for bound ids in InnoDB's parser.
* Define UNIV_BTR_DEBUG for enabling consistency checks of
FIL_PAGE_NEXT and FIL_PAGE_PREV when accessing sibling
pages of B-tree indexes.
btr_validate_level(): Check the validity of the doubly linked
list formed by FIL_PAGE_NEXT and FIL_PAGE_PREV.
* Adapt InnoDB to the new tablename to filename encoding in MySQL 5.1.
ut_print_name(), ut_print_name1(): Add parameter 'table_id' for
distinguishing names of tables from other identifiers.
New: innobase_convert_from_table_id(), innobase_convert_from_id(),
innobase_convert_from_filename(), innobase_get_charset.
dict_accept(), dict_scan_id(), dict_scan_col(), dict_scan_table_name(),
dict_skip_word(), dict_create_foreign_constraints_low(): Add
parameter 'cs' so that isspace() can be replaced with my_isspace(),
whose operation depends on the connection character set.
dict_scan_id(): Convert identifier to UTF-8.
dict_str_starts_with_keyword(): New extern function, to replace
dict_accept() in row_search_for_mysql().
mysql_get_identifier_quote_char(): Replaced with innobase_print_identifier().
ha_innobase::create(): Remove the thd->convert_strin() call. Pass the
statement to InnoDB in the connection character set and let InnoDB
convert the identifier to UTF-8.
* Add max_row_size to dict_table_t.
* btr0cur.c
btr_copy_externally_stored_field(): Only set the 'offset' variable
when needed.
* buf0buf.c
buf_page_io_complete(): Write to the error log if the page number or
the space id o the disk do not match those in memory. Also write to
the error log if a page was read from the doublewrite buffer. The
doublewrite buffer should be only read by the lower-level function
fil_io() at database startup.
* dict0dict.c
dict_scan_table_name(): Remove fallback to differently encoded name
when the table is not found. The encoding is handled at a higher level.
* ha_innodb.cc
Increment statistic counter in ha_innobase::index_prev() (bug 19542).
Add innobase_convert_string wrapper function and a new file
ha_prototypes.h.
innobase_print_identifier(): Remove TODO comment before calling
get_quote_char_for_identifier(). That function apparently assumes
the identifier to be encoded in UTF-8.
* ibuf0ibuf.c|h
ibuf_count_get(), ibuf_counts[], ibuf_count_inited(): Define these
only #ifdef UNIV_IBUF_DEBUG. Previously, when compiled without
UNIV_IBUF_DEBUG, invoking ibuf_count_get() would crash InnoDB.
The function is only being called #ifdef UNIV_IBUF_DEBUG.
* innodb.result
Adjust the results for changes in the foreign key error messages.
* mem0mem.c|h
New: mem_heap_dup(), mem_heap_printf(), mem_heap_cat().
* os0file.c
Check the page trailers also after writing to disk. This improves
chances of diagnosing bug 18886.
os_file_check_page_trailers(): New function for checking that the
two copies of the LSN stamped on the page match.
os_aio_simulated_handle(): Call os_file_check_page_trailers()
before and after os_file_write().
* row0mysql.c
Move trx_commit_for_mysql(trx) calls before calls to
row_mysql_unlock_data_dictionary(trx) (bug 19727).
* row0sel.c
row_fetch_print(): Handle SQL NULL values without crashing.
row_sel_store_mysql_rec(): Remove useless call to rec_get_nth_field
when handling an externally stored column.
Fetch externally stored fields when using InnoDB's internal SQL
parser.
Optimize BLOB selects by using prebuilt->blob_heap directly instead
of first reading BLOB data to a temporary heap and then copying it
to prebuilt->blob_heap.
* srv0srv.c
srv_master_thread(): Remove unreachable code.
* srv0start.c
srv_parse_data_file_paths_and_sizes(): Accept lower-case 'm' and
'g' as abbreviations of megabyte and gigabyte (bug 19609).
srv_parse_megabytes(): New fuction.
* ut0dbg.c|h
Implement InnoDB assertions (ut_a and ut_error) with abort() when
the code is compiled with GCC 3 or later on other platforms than
Windows or Netware. Also disable the variable ut_dbg_stop_threads
and the function ut_dbg_stop_thread() i this case, unless
UNIV_SYC_DEBUG is defined. This should allow the compiler to
generate more compact code for assertions.
* ut0list.c|h
Add ib_list_create_heap().
mysql-test/r/innodb.result:
Applied innodb-5.1-ss594 snapshot.
mysql-test/t/innodb.test:
Copy the comment from the beginning of the file
to the end because MySQL developers continue
adding test cases to this file.
sql/ha_innodb.cc:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/CMakeLists.txt:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/Makefile.am:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/btr/btr0btr.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/btr/btr0cur.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/btr/btr0pcur.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/btr/btr0sea.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/buf/buf0buf.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/buf/buf0flu.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/data/data0type.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/dict/dict0crea.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/dict/dict0dict.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/dict/dict0load.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/dict/dict0mem.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/fil/fil0fil.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/ha/hash0hash.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/ibuf/ibuf0ibuf.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/data0type.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/dict0dict.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/dict0dict.ic:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/dict0mem.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/fil0fil.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/fsp0fsp.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/ibuf0ibuf.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/mem0mem.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/pars0pars.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/pars0sym.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/pars0types.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/rem0rec.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/row0purge.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/row0undo.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/srv0srv.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/sync0rw.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/sync0sync.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/univ.i:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/ut0dbg.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/ut0ut.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/lock/lock0lock.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/log/log0log.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/log/log0recv.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/mem/mem0dbg.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/mem/mem0mem.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/mem/mem0pool.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/os/os0file.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/os/os0thread.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/pars/lexyy.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/pars/pars0lex.l:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/pars/pars0pars.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/pars/pars0sym.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/row/row0ins.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/row/row0mysql.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/row/row0purge.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/row/row0row.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/row/row0sel.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/row/row0upd.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/srv/srv0srv.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/srv/srv0start.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/sync/sync0arr.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/sync/sync0rw.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/sync/sync0sync.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/thr/thr0loc.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/trx/trx0purge.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/trx/trx0rec.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/trx/trx0roll.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/trx/trx0rseg.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/trx/trx0sys.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/trx/trx0trx.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/ut/Makefile.am:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/ut/ut0dbg.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/ut/ut0ut.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/ha_prototypes.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/ut0list.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/ut0list.ic:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/ut0wqueue.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/ut/ut0list.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/ut/ut0wqueue.c:
Applied innodb-5.1-ss594 snapshot.
2006-06-01 08:34:04 +02:00
ERROR 23000: Cannot delete or update a parent row: a foreign key constraint fails (`test`.`t2`, CONSTRAINT `c` FOREIGN KEY (`s1`) REFERENCES `t1` (`s1`) ON UPDATE CASCADE)
2006-01-16 12:32:43 +01:00
update t1 set s1=0x1220 where a=1;
select hex(s1) from t2;
hex(s1)
1220
update t1 set s1=0x1200 where a=1;
select hex(s1) from t2;
hex(s1)
1200
update t1 set s1=0x4200 where a=1;
select hex(s1) from t2;
hex(s1)
4200
delete from t1 where a=1;
Applied innodb-5.1-ss594 snapshot.
Fixed BUG#19542 "InnoDB doesn't increase the Handler_read_prev couter".
Fixed BUG#19609 "Case sensitivity of innodb_data_file_path gives stupid error".
Fixed BUG#19727 "InnoDB crashed server and crashed tables are ot recoverable".
Also:
* Remove remnants of the obsolete concept of memoryfixing tables and indexes.
* Remove unused dict_table_LRU_trim().
* Remove unused 'trx' parameter from dict_table_get_on_id_low(),
dict_table_get(), dict_table_get_and_increment_handle_count().
* Add a normal linked list implementation.
* Add a work queue implementation.
* Add 'level' parameter to mutex_create() and rw_lock_create().
Remove mutex_set_level() and rw_lock_set_level().
* Rename SYNC_LEVEL_NONE to SYNC_LEVEL_VARYING.
* Add support for bound ids in InnoDB's parser.
* Define UNIV_BTR_DEBUG for enabling consistency checks of
FIL_PAGE_NEXT and FIL_PAGE_PREV when accessing sibling
pages of B-tree indexes.
btr_validate_level(): Check the validity of the doubly linked
list formed by FIL_PAGE_NEXT and FIL_PAGE_PREV.
* Adapt InnoDB to the new tablename to filename encoding in MySQL 5.1.
ut_print_name(), ut_print_name1(): Add parameter 'table_id' for
distinguishing names of tables from other identifiers.
New: innobase_convert_from_table_id(), innobase_convert_from_id(),
innobase_convert_from_filename(), innobase_get_charset.
dict_accept(), dict_scan_id(), dict_scan_col(), dict_scan_table_name(),
dict_skip_word(), dict_create_foreign_constraints_low(): Add
parameter 'cs' so that isspace() can be replaced with my_isspace(),
whose operation depends on the connection character set.
dict_scan_id(): Convert identifier to UTF-8.
dict_str_starts_with_keyword(): New extern function, to replace
dict_accept() in row_search_for_mysql().
mysql_get_identifier_quote_char(): Replaced with innobase_print_identifier().
ha_innobase::create(): Remove the thd->convert_strin() call. Pass the
statement to InnoDB in the connection character set and let InnoDB
convert the identifier to UTF-8.
* Add max_row_size to dict_table_t.
* btr0cur.c
btr_copy_externally_stored_field(): Only set the 'offset' variable
when needed.
* buf0buf.c
buf_page_io_complete(): Write to the error log if the page number or
the space id o the disk do not match those in memory. Also write to
the error log if a page was read from the doublewrite buffer. The
doublewrite buffer should be only read by the lower-level function
fil_io() at database startup.
* dict0dict.c
dict_scan_table_name(): Remove fallback to differently encoded name
when the table is not found. The encoding is handled at a higher level.
* ha_innodb.cc
Increment statistic counter in ha_innobase::index_prev() (bug 19542).
Add innobase_convert_string wrapper function and a new file
ha_prototypes.h.
innobase_print_identifier(): Remove TODO comment before calling
get_quote_char_for_identifier(). That function apparently assumes
the identifier to be encoded in UTF-8.
* ibuf0ibuf.c|h
ibuf_count_get(), ibuf_counts[], ibuf_count_inited(): Define these
only #ifdef UNIV_IBUF_DEBUG. Previously, when compiled without
UNIV_IBUF_DEBUG, invoking ibuf_count_get() would crash InnoDB.
The function is only being called #ifdef UNIV_IBUF_DEBUG.
* innodb.result
Adjust the results for changes in the foreign key error messages.
* mem0mem.c|h
New: mem_heap_dup(), mem_heap_printf(), mem_heap_cat().
* os0file.c
Check the page trailers also after writing to disk. This improves
chances of diagnosing bug 18886.
os_file_check_page_trailers(): New function for checking that the
two copies of the LSN stamped on the page match.
os_aio_simulated_handle(): Call os_file_check_page_trailers()
before and after os_file_write().
* row0mysql.c
Move trx_commit_for_mysql(trx) calls before calls to
row_mysql_unlock_data_dictionary(trx) (bug 19727).
* row0sel.c
row_fetch_print(): Handle SQL NULL values without crashing.
row_sel_store_mysql_rec(): Remove useless call to rec_get_nth_field
when handling an externally stored column.
Fetch externally stored fields when using InnoDB's internal SQL
parser.
Optimize BLOB selects by using prebuilt->blob_heap directly instead
of first reading BLOB data to a temporary heap and then copying it
to prebuilt->blob_heap.
* srv0srv.c
srv_master_thread(): Remove unreachable code.
* srv0start.c
srv_parse_data_file_paths_and_sizes(): Accept lower-case 'm' and
'g' as abbreviations of megabyte and gigabyte (bug 19609).
srv_parse_megabytes(): New fuction.
* ut0dbg.c|h
Implement InnoDB assertions (ut_a and ut_error) with abort() when
the code is compiled with GCC 3 or later on other platforms than
Windows or Netware. Also disable the variable ut_dbg_stop_threads
and the function ut_dbg_stop_thread() i this case, unless
UNIV_SYC_DEBUG is defined. This should allow the compiler to
generate more compact code for assertions.
* ut0list.c|h
Add ib_list_create_heap().
mysql-test/r/innodb.result:
Applied innodb-5.1-ss594 snapshot.
mysql-test/t/innodb.test:
Copy the comment from the beginning of the file
to the end because MySQL developers continue
adding test cases to this file.
sql/ha_innodb.cc:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/CMakeLists.txt:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/Makefile.am:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/btr/btr0btr.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/btr/btr0cur.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/btr/btr0pcur.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/btr/btr0sea.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/buf/buf0buf.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/buf/buf0flu.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/data/data0type.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/dict/dict0crea.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/dict/dict0dict.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/dict/dict0load.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/dict/dict0mem.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/fil/fil0fil.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/ha/hash0hash.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/ibuf/ibuf0ibuf.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/data0type.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/dict0dict.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/dict0dict.ic:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/dict0mem.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/fil0fil.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/fsp0fsp.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/ibuf0ibuf.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/mem0mem.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/pars0pars.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/pars0sym.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/pars0types.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/rem0rec.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/row0purge.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/row0undo.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/srv0srv.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/sync0rw.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/sync0sync.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/univ.i:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/ut0dbg.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/ut0ut.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/lock/lock0lock.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/log/log0log.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/log/log0recv.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/mem/mem0dbg.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/mem/mem0mem.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/mem/mem0pool.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/os/os0file.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/os/os0thread.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/pars/lexyy.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/pars/pars0lex.l:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/pars/pars0pars.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/pars/pars0sym.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/row/row0ins.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/row/row0mysql.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/row/row0purge.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/row/row0row.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/row/row0sel.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/row/row0upd.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/srv/srv0srv.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/srv/srv0start.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/sync/sync0arr.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/sync/sync0rw.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/sync/sync0sync.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/thr/thr0loc.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/trx/trx0purge.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/trx/trx0rec.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/trx/trx0roll.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/trx/trx0rseg.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/trx/trx0sys.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/trx/trx0trx.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/ut/Makefile.am:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/ut/ut0dbg.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/ut/ut0ut.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/ha_prototypes.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/ut0list.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/ut0list.ic:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/ut0wqueue.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/ut/ut0list.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/ut/ut0wqueue.c:
Applied innodb-5.1-ss594 snapshot.
2006-06-01 08:34:04 +02:00
ERROR 23000: Cannot delete or update a parent row: a foreign key constraint fails (`test`.`t2`, CONSTRAINT `c` FOREIGN KEY (`s1`) REFERENCES `t1` (`s1`) ON UPDATE CASCADE)
2006-01-16 12:32:43 +01:00
delete from t1 where a=2;
update t2 set s1=0x4120;
delete from t1;
Applied innodb-5.1-ss594 snapshot.
Fixed BUG#19542 "InnoDB doesn't increase the Handler_read_prev couter".
Fixed BUG#19609 "Case sensitivity of innodb_data_file_path gives stupid error".
Fixed BUG#19727 "InnoDB crashed server and crashed tables are ot recoverable".
Also:
* Remove remnants of the obsolete concept of memoryfixing tables and indexes.
* Remove unused dict_table_LRU_trim().
* Remove unused 'trx' parameter from dict_table_get_on_id_low(),
dict_table_get(), dict_table_get_and_increment_handle_count().
* Add a normal linked list implementation.
* Add a work queue implementation.
* Add 'level' parameter to mutex_create() and rw_lock_create().
Remove mutex_set_level() and rw_lock_set_level().
* Rename SYNC_LEVEL_NONE to SYNC_LEVEL_VARYING.
* Add support for bound ids in InnoDB's parser.
* Define UNIV_BTR_DEBUG for enabling consistency checks of
FIL_PAGE_NEXT and FIL_PAGE_PREV when accessing sibling
pages of B-tree indexes.
btr_validate_level(): Check the validity of the doubly linked
list formed by FIL_PAGE_NEXT and FIL_PAGE_PREV.
* Adapt InnoDB to the new tablename to filename encoding in MySQL 5.1.
ut_print_name(), ut_print_name1(): Add parameter 'table_id' for
distinguishing names of tables from other identifiers.
New: innobase_convert_from_table_id(), innobase_convert_from_id(),
innobase_convert_from_filename(), innobase_get_charset.
dict_accept(), dict_scan_id(), dict_scan_col(), dict_scan_table_name(),
dict_skip_word(), dict_create_foreign_constraints_low(): Add
parameter 'cs' so that isspace() can be replaced with my_isspace(),
whose operation depends on the connection character set.
dict_scan_id(): Convert identifier to UTF-8.
dict_str_starts_with_keyword(): New extern function, to replace
dict_accept() in row_search_for_mysql().
mysql_get_identifier_quote_char(): Replaced with innobase_print_identifier().
ha_innobase::create(): Remove the thd->convert_strin() call. Pass the
statement to InnoDB in the connection character set and let InnoDB
convert the identifier to UTF-8.
* Add max_row_size to dict_table_t.
* btr0cur.c
btr_copy_externally_stored_field(): Only set the 'offset' variable
when needed.
* buf0buf.c
buf_page_io_complete(): Write to the error log if the page number or
the space id o the disk do not match those in memory. Also write to
the error log if a page was read from the doublewrite buffer. The
doublewrite buffer should be only read by the lower-level function
fil_io() at database startup.
* dict0dict.c
dict_scan_table_name(): Remove fallback to differently encoded name
when the table is not found. The encoding is handled at a higher level.
* ha_innodb.cc
Increment statistic counter in ha_innobase::index_prev() (bug 19542).
Add innobase_convert_string wrapper function and a new file
ha_prototypes.h.
innobase_print_identifier(): Remove TODO comment before calling
get_quote_char_for_identifier(). That function apparently assumes
the identifier to be encoded in UTF-8.
* ibuf0ibuf.c|h
ibuf_count_get(), ibuf_counts[], ibuf_count_inited(): Define these
only #ifdef UNIV_IBUF_DEBUG. Previously, when compiled without
UNIV_IBUF_DEBUG, invoking ibuf_count_get() would crash InnoDB.
The function is only being called #ifdef UNIV_IBUF_DEBUG.
* innodb.result
Adjust the results for changes in the foreign key error messages.
* mem0mem.c|h
New: mem_heap_dup(), mem_heap_printf(), mem_heap_cat().
* os0file.c
Check the page trailers also after writing to disk. This improves
chances of diagnosing bug 18886.
os_file_check_page_trailers(): New function for checking that the
two copies of the LSN stamped on the page match.
os_aio_simulated_handle(): Call os_file_check_page_trailers()
before and after os_file_write().
* row0mysql.c
Move trx_commit_for_mysql(trx) calls before calls to
row_mysql_unlock_data_dictionary(trx) (bug 19727).
* row0sel.c
row_fetch_print(): Handle SQL NULL values without crashing.
row_sel_store_mysql_rec(): Remove useless call to rec_get_nth_field
when handling an externally stored column.
Fetch externally stored fields when using InnoDB's internal SQL
parser.
Optimize BLOB selects by using prebuilt->blob_heap directly instead
of first reading BLOB data to a temporary heap and then copying it
to prebuilt->blob_heap.
* srv0srv.c
srv_master_thread(): Remove unreachable code.
* srv0start.c
srv_parse_data_file_paths_and_sizes(): Accept lower-case 'm' and
'g' as abbreviations of megabyte and gigabyte (bug 19609).
srv_parse_megabytes(): New fuction.
* ut0dbg.c|h
Implement InnoDB assertions (ut_a and ut_error) with abort() when
the code is compiled with GCC 3 or later on other platforms than
Windows or Netware. Also disable the variable ut_dbg_stop_threads
and the function ut_dbg_stop_thread() i this case, unless
UNIV_SYC_DEBUG is defined. This should allow the compiler to
generate more compact code for assertions.
* ut0list.c|h
Add ib_list_create_heap().
mysql-test/r/innodb.result:
Applied innodb-5.1-ss594 snapshot.
mysql-test/t/innodb.test:
Copy the comment from the beginning of the file
to the end because MySQL developers continue
adding test cases to this file.
sql/ha_innodb.cc:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/CMakeLists.txt:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/Makefile.am:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/btr/btr0btr.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/btr/btr0cur.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/btr/btr0pcur.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/btr/btr0sea.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/buf/buf0buf.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/buf/buf0flu.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/data/data0type.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/dict/dict0crea.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/dict/dict0dict.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/dict/dict0load.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/dict/dict0mem.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/fil/fil0fil.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/ha/hash0hash.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/ibuf/ibuf0ibuf.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/data0type.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/dict0dict.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/dict0dict.ic:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/dict0mem.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/fil0fil.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/fsp0fsp.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/ibuf0ibuf.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/mem0mem.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/pars0pars.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/pars0sym.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/pars0types.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/rem0rec.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/row0purge.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/row0undo.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/srv0srv.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/sync0rw.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/sync0sync.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/univ.i:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/ut0dbg.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/ut0ut.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/lock/lock0lock.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/log/log0log.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/log/log0recv.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/mem/mem0dbg.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/mem/mem0mem.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/mem/mem0pool.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/os/os0file.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/os/os0thread.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/pars/lexyy.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/pars/pars0lex.l:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/pars/pars0pars.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/pars/pars0sym.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/row/row0ins.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/row/row0mysql.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/row/row0purge.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/row/row0row.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/row/row0sel.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/row/row0upd.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/srv/srv0srv.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/srv/srv0start.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/sync/sync0arr.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/sync/sync0rw.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/sync/sync0sync.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/thr/thr0loc.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/trx/trx0purge.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/trx/trx0rec.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/trx/trx0roll.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/trx/trx0rseg.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/trx/trx0sys.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/trx/trx0trx.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/ut/Makefile.am:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/ut/ut0dbg.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/ut/ut0ut.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/ha_prototypes.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/ut0list.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/ut0list.ic:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/ut0wqueue.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/ut/ut0list.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/ut/ut0wqueue.c:
Applied innodb-5.1-ss594 snapshot.
2006-06-01 08:34:04 +02:00
ERROR 23000: Cannot delete or update a parent row: a foreign key constraint fails (`test`.`t2`, CONSTRAINT `c` FOREIGN KEY (`s1`) REFERENCES `t1` (`s1`) ON UPDATE CASCADE)
2006-01-16 12:32:43 +01:00
delete from t1 where a!=3;
select a,hex(s1) from t1;
a hex(s1)
3 4120
select hex(s1) from t2;
hex(s1)
4120
drop table t2,t1;
create table t1 (a int primary key,s1 varchar(2) binary not null unique) engine=innodb;
create table t2 (s1 char(2) binary not null, constraint c foreign key(s1) references t1(s1) on update cascade) engine=innodb;
insert into t1 values(1,0x4100),(2,0x41);
insert into t2 values(0x41);
select hex(s1) from t2;
hex(s1)
41
update t1 set s1=0x1234 where a=1;
select hex(s1) from t2;
hex(s1)
41
update t1 set s1=0x12 where a=2;
select hex(s1) from t2;
hex(s1)
12
delete from t1 where a=1;
delete from t1 where a=2;
Applied innodb-5.1-ss594 snapshot.
Fixed BUG#19542 "InnoDB doesn't increase the Handler_read_prev couter".
Fixed BUG#19609 "Case sensitivity of innodb_data_file_path gives stupid error".
Fixed BUG#19727 "InnoDB crashed server and crashed tables are ot recoverable".
Also:
* Remove remnants of the obsolete concept of memoryfixing tables and indexes.
* Remove unused dict_table_LRU_trim().
* Remove unused 'trx' parameter from dict_table_get_on_id_low(),
dict_table_get(), dict_table_get_and_increment_handle_count().
* Add a normal linked list implementation.
* Add a work queue implementation.
* Add 'level' parameter to mutex_create() and rw_lock_create().
Remove mutex_set_level() and rw_lock_set_level().
* Rename SYNC_LEVEL_NONE to SYNC_LEVEL_VARYING.
* Add support for bound ids in InnoDB's parser.
* Define UNIV_BTR_DEBUG for enabling consistency checks of
FIL_PAGE_NEXT and FIL_PAGE_PREV when accessing sibling
pages of B-tree indexes.
btr_validate_level(): Check the validity of the doubly linked
list formed by FIL_PAGE_NEXT and FIL_PAGE_PREV.
* Adapt InnoDB to the new tablename to filename encoding in MySQL 5.1.
ut_print_name(), ut_print_name1(): Add parameter 'table_id' for
distinguishing names of tables from other identifiers.
New: innobase_convert_from_table_id(), innobase_convert_from_id(),
innobase_convert_from_filename(), innobase_get_charset.
dict_accept(), dict_scan_id(), dict_scan_col(), dict_scan_table_name(),
dict_skip_word(), dict_create_foreign_constraints_low(): Add
parameter 'cs' so that isspace() can be replaced with my_isspace(),
whose operation depends on the connection character set.
dict_scan_id(): Convert identifier to UTF-8.
dict_str_starts_with_keyword(): New extern function, to replace
dict_accept() in row_search_for_mysql().
mysql_get_identifier_quote_char(): Replaced with innobase_print_identifier().
ha_innobase::create(): Remove the thd->convert_strin() call. Pass the
statement to InnoDB in the connection character set and let InnoDB
convert the identifier to UTF-8.
* Add max_row_size to dict_table_t.
* btr0cur.c
btr_copy_externally_stored_field(): Only set the 'offset' variable
when needed.
* buf0buf.c
buf_page_io_complete(): Write to the error log if the page number or
the space id o the disk do not match those in memory. Also write to
the error log if a page was read from the doublewrite buffer. The
doublewrite buffer should be only read by the lower-level function
fil_io() at database startup.
* dict0dict.c
dict_scan_table_name(): Remove fallback to differently encoded name
when the table is not found. The encoding is handled at a higher level.
* ha_innodb.cc
Increment statistic counter in ha_innobase::index_prev() (bug 19542).
Add innobase_convert_string wrapper function and a new file
ha_prototypes.h.
innobase_print_identifier(): Remove TODO comment before calling
get_quote_char_for_identifier(). That function apparently assumes
the identifier to be encoded in UTF-8.
* ibuf0ibuf.c|h
ibuf_count_get(), ibuf_counts[], ibuf_count_inited(): Define these
only #ifdef UNIV_IBUF_DEBUG. Previously, when compiled without
UNIV_IBUF_DEBUG, invoking ibuf_count_get() would crash InnoDB.
The function is only being called #ifdef UNIV_IBUF_DEBUG.
* innodb.result
Adjust the results for changes in the foreign key error messages.
* mem0mem.c|h
New: mem_heap_dup(), mem_heap_printf(), mem_heap_cat().
* os0file.c
Check the page trailers also after writing to disk. This improves
chances of diagnosing bug 18886.
os_file_check_page_trailers(): New function for checking that the
two copies of the LSN stamped on the page match.
os_aio_simulated_handle(): Call os_file_check_page_trailers()
before and after os_file_write().
* row0mysql.c
Move trx_commit_for_mysql(trx) calls before calls to
row_mysql_unlock_data_dictionary(trx) (bug 19727).
* row0sel.c
row_fetch_print(): Handle SQL NULL values without crashing.
row_sel_store_mysql_rec(): Remove useless call to rec_get_nth_field
when handling an externally stored column.
Fetch externally stored fields when using InnoDB's internal SQL
parser.
Optimize BLOB selects by using prebuilt->blob_heap directly instead
of first reading BLOB data to a temporary heap and then copying it
to prebuilt->blob_heap.
* srv0srv.c
srv_master_thread(): Remove unreachable code.
* srv0start.c
srv_parse_data_file_paths_and_sizes(): Accept lower-case 'm' and
'g' as abbreviations of megabyte and gigabyte (bug 19609).
srv_parse_megabytes(): New fuction.
* ut0dbg.c|h
Implement InnoDB assertions (ut_a and ut_error) with abort() when
the code is compiled with GCC 3 or later on other platforms than
Windows or Netware. Also disable the variable ut_dbg_stop_threads
and the function ut_dbg_stop_thread() i this case, unless
UNIV_SYC_DEBUG is defined. This should allow the compiler to
generate more compact code for assertions.
* ut0list.c|h
Add ib_list_create_heap().
mysql-test/r/innodb.result:
Applied innodb-5.1-ss594 snapshot.
mysql-test/t/innodb.test:
Copy the comment from the beginning of the file
to the end because MySQL developers continue
adding test cases to this file.
sql/ha_innodb.cc:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/CMakeLists.txt:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/Makefile.am:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/btr/btr0btr.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/btr/btr0cur.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/btr/btr0pcur.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/btr/btr0sea.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/buf/buf0buf.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/buf/buf0flu.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/data/data0type.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/dict/dict0crea.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/dict/dict0dict.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/dict/dict0load.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/dict/dict0mem.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/fil/fil0fil.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/ha/hash0hash.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/ibuf/ibuf0ibuf.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/data0type.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/dict0dict.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/dict0dict.ic:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/dict0mem.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/fil0fil.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/fsp0fsp.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/ibuf0ibuf.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/mem0mem.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/pars0pars.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/pars0sym.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/pars0types.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/rem0rec.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/row0purge.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/row0undo.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/srv0srv.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/sync0rw.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/sync0sync.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/univ.i:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/ut0dbg.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/ut0ut.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/lock/lock0lock.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/log/log0log.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/log/log0recv.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/mem/mem0dbg.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/mem/mem0mem.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/mem/mem0pool.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/os/os0file.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/os/os0thread.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/pars/lexyy.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/pars/pars0lex.l:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/pars/pars0pars.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/pars/pars0sym.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/row/row0ins.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/row/row0mysql.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/row/row0purge.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/row/row0row.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/row/row0sel.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/row/row0upd.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/srv/srv0srv.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/srv/srv0start.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/sync/sync0arr.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/sync/sync0rw.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/sync/sync0sync.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/thr/thr0loc.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/trx/trx0purge.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/trx/trx0rec.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/trx/trx0roll.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/trx/trx0rseg.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/trx/trx0sys.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/trx/trx0trx.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/ut/Makefile.am:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/ut/ut0dbg.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/ut/ut0ut.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/ha_prototypes.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/ut0list.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/ut0list.ic:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/ut0wqueue.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/ut/ut0list.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/ut/ut0wqueue.c:
Applied innodb-5.1-ss594 snapshot.
2006-06-01 08:34:04 +02:00
ERROR 23000: Cannot delete or update a parent row: a foreign key constraint fails (`test`.`t2`, CONSTRAINT `c` FOREIGN KEY (`s1`) REFERENCES `t1` (`s1`) ON UPDATE CASCADE)
2006-01-16 12:32:43 +01:00
select a,hex(s1) from t1;
a hex(s1)
2 12
select hex(s1) from t2;
hex(s1)
12
drop table t2,t1;
Fixed: BUG#15653, BUG#16157, BUG#16229, BUG#16298, BUG#16387, BUG#16582.
Applied innodb-5.0-ss149/162 snapshots.
innobase/btr/btr0sea.c:
Applied innodb-5.0-149/162 snapshots.
Account for a race condition when dropping the adaptive hash
index for a B-tree page (Bug #16582).
btr_search_drop_page_hash_index(): Retry the operation if a
hash index with different parameters was built meanwhile.
Add diagnostics for the case that hash node pointers to
the page remain. This fix is from Heikki.
btr_search_info-update_hash(), btr_search_info_update_slow():
Document the parameter "info" as in/out.
innobase/dict/dict0dict.c:
Applied innodb-5.0-149/162 snapshots.
Do not mistake TABLENAME_ibfk_0 for auto generated id (Bug #16387).
dict_table_get_highest_foreign_id(): Ignore foreign constraint
identifiers starting with the pattern TABLENAME_ibfk_0.
innobase/dict/dict0load.c:
Applied innodb-5.0-149/162 snapshots.
dict_load_columns(): Set the charset-collation code
DATA_MYSQL_BINARY_CHARSET_COLL for those binary string columns
that lack a charset-collation code, i.e., the tables were created
with an older version of MySQL/InnoDB than 4.1.2 (Bug #16298).
innobase/fil/fil0fil.c:
Applied innodb-5.0-149/162 snapshots.
Keep track on unflushed modifications to file spaces. When there
are tens of thousands of file spaces, flushing all files in
fil_flush_file_spaces() would be very slow (Bug #15653).
fil_flush_file_spaces(): Only flush unflushed file spaces.
fil_space_t, fil_system_t: Add a list of unflushed spaces.
innobase/include/univ.i:
Applied innodb-5.0-149/162 snapshots.
Avoid breaking --with-debug builds on QNS and other systems
whose compiler pretends to be GCC 2.
Outside __WIN__ define UNIV_INLINE as static inline.
innobase/os/os0sync.c:
Applied innodb-5.0-149/162 snapshots.
Replace goto in os_event_wait with a normal loop.
innobase/srv/srv0start.c:
Applied innodb-5.0-149/162 snapshots.
Fix bug #16157, a crash when innodb_log_group_home_dir is set
to an empty string. This patch is from Heikki.
mysql-test/r/innodb.result:
Applied innodb-5.0-149/162 snapshots.
Fixed results for added test cases.
mysql-test/t/innodb.test:
Applied innodb-5.0-149/162 snapshots.
Added test cases.
sql/ha_innodb.cc:
Applied innodb-5.0-149/162 snapshots.
Remove some declarations of unused global variables and member
variables of class ha_innobase.
Added diagnostic code trx_print() to
innobase_query_caching_of_table_permitted() to find reason
why we are holding adaptive search latch.
Fixed bug #16229 MySQL/InnoDB uses full explicit table locks
in trigger processing. Take a InnoDB table lock only if user
has explicitly requested a table lock. Added some additional
comments to store_lock() and external_lock(). Fixed some
code style errors.
Remember to use noninlined versions of the functions on
ha_innodb.cc !
sql/ha_innodb.h:
Applied innodb-5.0-149/162 snapshots.
Remove some declarations of unused global variables and member
variables of class ha_innobase.
2006-01-31 19:41:48 +01:00
CREATE TABLE t1(a INT, PRIMARY KEY(a)) ENGINE=InnoDB;
CREATE TABLE t2(a INT) ENGINE=InnoDB;
ALTER TABLE t2 ADD FOREIGN KEY (a) REFERENCES t1(a);
ALTER TABLE t2 DROP FOREIGN KEY t2_ibfk_1;
ALTER TABLE t2 ADD CONSTRAINT t2_ibfk_0 FOREIGN KEY (a) REFERENCES t1(a);
ALTER TABLE t2 DROP FOREIGN KEY t2_ibfk_0;
SHOW CREATE TABLE t2;
Table Create Table
t2 CREATE TABLE `t2` (
2006-04-14 17:39:36 +02:00
`a` int(11) DEFAULT NULL,
Fixed: BUG#15653, BUG#16157, BUG#16229, BUG#16298, BUG#16387, BUG#16582.
Applied innodb-5.0-ss149/162 snapshots.
innobase/btr/btr0sea.c:
Applied innodb-5.0-149/162 snapshots.
Account for a race condition when dropping the adaptive hash
index for a B-tree page (Bug #16582).
btr_search_drop_page_hash_index(): Retry the operation if a
hash index with different parameters was built meanwhile.
Add diagnostics for the case that hash node pointers to
the page remain. This fix is from Heikki.
btr_search_info-update_hash(), btr_search_info_update_slow():
Document the parameter "info" as in/out.
innobase/dict/dict0dict.c:
Applied innodb-5.0-149/162 snapshots.
Do not mistake TABLENAME_ibfk_0 for auto generated id (Bug #16387).
dict_table_get_highest_foreign_id(): Ignore foreign constraint
identifiers starting with the pattern TABLENAME_ibfk_0.
innobase/dict/dict0load.c:
Applied innodb-5.0-149/162 snapshots.
dict_load_columns(): Set the charset-collation code
DATA_MYSQL_BINARY_CHARSET_COLL for those binary string columns
that lack a charset-collation code, i.e., the tables were created
with an older version of MySQL/InnoDB than 4.1.2 (Bug #16298).
innobase/fil/fil0fil.c:
Applied innodb-5.0-149/162 snapshots.
Keep track on unflushed modifications to file spaces. When there
are tens of thousands of file spaces, flushing all files in
fil_flush_file_spaces() would be very slow (Bug #15653).
fil_flush_file_spaces(): Only flush unflushed file spaces.
fil_space_t, fil_system_t: Add a list of unflushed spaces.
innobase/include/univ.i:
Applied innodb-5.0-149/162 snapshots.
Avoid breaking --with-debug builds on QNS and other systems
whose compiler pretends to be GCC 2.
Outside __WIN__ define UNIV_INLINE as static inline.
innobase/os/os0sync.c:
Applied innodb-5.0-149/162 snapshots.
Replace goto in os_event_wait with a normal loop.
innobase/srv/srv0start.c:
Applied innodb-5.0-149/162 snapshots.
Fix bug #16157, a crash when innodb_log_group_home_dir is set
to an empty string. This patch is from Heikki.
mysql-test/r/innodb.result:
Applied innodb-5.0-149/162 snapshots.
Fixed results for added test cases.
mysql-test/t/innodb.test:
Applied innodb-5.0-149/162 snapshots.
Added test cases.
sql/ha_innodb.cc:
Applied innodb-5.0-149/162 snapshots.
Remove some declarations of unused global variables and member
variables of class ha_innobase.
Added diagnostic code trx_print() to
innobase_query_caching_of_table_permitted() to find reason
why we are holding adaptive search latch.
Fixed bug #16229 MySQL/InnoDB uses full explicit table locks
in trigger processing. Take a InnoDB table lock only if user
has explicitly requested a table lock. Added some additional
comments to store_lock() and external_lock(). Fixed some
code style errors.
Remember to use noninlined versions of the functions on
ha_innodb.cc !
sql/ha_innodb.h:
Applied innodb-5.0-149/162 snapshots.
Remove some declarations of unused global variables and member
variables of class ha_innobase.
2006-01-31 19:41:48 +01:00
KEY `t2_ibfk_0` (`a`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1
DROP TABLE t2,t1;
create table t1(a int not null, b int, c int, d int, primary key(a)) engine=innodb;
insert into t1(a) values (1),(2),(3);
commit;
set autocommit = 0;
update t1 set b = 5 where a = 2;
create trigger t1t before insert on t1 for each row begin set NEW.b = NEW.a * 10 + 5, NEW.c = NEW.a / 10; end |
set autocommit = 0;
insert into t1(a) values (10),(20),(30),(40),(50),(60),(70),(80),(90),(100),
(11),(21),(31),(41),(51),(61),(71),(81),(91),(101),
(12),(22),(32),(42),(52),(62),(72),(82),(92),(102),
(13),(23),(33),(43),(53),(63),(73),(83),(93),(103),
(14),(24),(34),(44),(54),(64),(74),(84),(94),(104);
commit;
commit;
drop trigger t1t;
drop table t1;
create table t1(a int not null, b int, c int, d int, primary key(a)) engine=innodb;
create table t2(a int not null, b int, c int, d int, primary key(a)) engine=innodb;
create table t3(a int not null, b int, c int, d int, primary key(a)) engine=innodb;
create table t4(a int not null, b int, c int, d int, primary key(a)) engine=innodb;
create table t5(a int not null, b int, c int, d int, primary key(a)) engine=innodb;
insert into t1(a) values (1),(2),(3);
insert into t2(a) values (1),(2),(3);
insert into t3(a) values (1),(2),(3);
insert into t4(a) values (1),(2),(3);
insert into t3(a) values (5),(7),(8);
insert into t4(a) values (5),(7),(8);
insert into t5(a) values (1),(2),(3),(4),(5),(6),(7),(8),(9),(10),(11),(12);
create trigger t1t before insert on t1 for each row begin
INSERT INTO t2 SET a = NEW.a;
end |
create trigger t2t before insert on t2 for each row begin
DELETE FROM t3 WHERE a = NEW.a;
end |
create trigger t3t before delete on t3 for each row begin
UPDATE t4 SET b = b + 1 WHERE a = OLD.a;
end |
create trigger t4t before update on t4 for each row begin
UPDATE t5 SET b = b + 1 where a = NEW.a;
end |
commit;
set autocommit = 0;
update t1 set b = b + 5 where a = 1;
update t2 set b = b + 5 where a = 1;
update t3 set b = b + 5 where a = 1;
update t4 set b = b + 5 where a = 1;
insert into t5(a) values(20);
set autocommit = 0;
insert into t1(a) values(7);
insert into t2(a) values(8);
delete from t2 where a = 3;
update t4 set b = b + 1 where a = 3;
commit;
drop trigger t1t;
drop trigger t2t;
drop trigger t3t;
drop trigger t4t;
drop table t1, t2, t3, t4, t5;
2006-04-14 17:39:36 +02:00
CREATE TABLE t1 (
field1 varchar(8) NOT NULL DEFAULT '',
field2 varchar(8) NOT NULL DEFAULT '',
PRIMARY KEY (field1, field2)
) ENGINE=InnoDB;
CREATE TABLE t2 (
field1 varchar(8) NOT NULL DEFAULT '' PRIMARY KEY,
FOREIGN KEY (field1) REFERENCES t1 (field1)
ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB;
INSERT INTO t1 VALUES ('old', 'somevalu');
INSERT INTO t1 VALUES ('other', 'anyvalue');
INSERT INTO t2 VALUES ('old');
INSERT INTO t2 VALUES ('other');
UPDATE t1 SET field1 = 'other' WHERE field2 = 'somevalu';
ERROR 23000: Upholding foreign key constraints for table 't1', entry 'other-somevalu', key 1 would lead to a duplicate entry
DROP TABLE t2;
DROP TABLE t1;
create table t1 (
c1 bigint not null,
c2 bigint not null,
primary key (c1),
unique key (c2)
) engine=innodb;
create table t2 (
c1 bigint not null,
primary key (c1)
) engine=innodb;
alter table t1 add constraint c2_fk foreign key (c2)
references t2(c1) on delete cascade;
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
`c1` bigint(20) NOT NULL,
`c2` bigint(20) NOT NULL,
PRIMARY KEY (`c1`),
UNIQUE KEY `c2` (`c2`),
CONSTRAINT `c2_fk` FOREIGN KEY (`c2`) REFERENCES `t2` (`c1`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=latin1
alter table t1 drop foreign key c2_fk;
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
`c1` bigint(20) NOT NULL,
`c2` bigint(20) NOT NULL,
PRIMARY KEY (`c1`),
UNIQUE KEY `c2` (`c2`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1
drop table t1, t2;
2006-04-11 13:13:57 +02:00
create table t1(a date) engine=innodb;
create table t2(a date, key(a)) engine=innodb;
insert into t1 values('2005-10-01');
insert into t2 values('2005-10-01');
select * from t1, t2
where t2.a between t1.a - interval 2 day and t1.a + interval 2 day;
a a
2005-10-01 2005-10-01
drop table t1, t2;
Applied innodb-5.1-ss475 snapshot.
* Fix BUG#15650: "DELETE with LEFT JOIN crashes server with innodb_locks_unsafe_for binlog"
* Fix BUG#17134: "Partitions: uncommitted changes are visible"
* Fix BUG#17992: "Partitions: InnoDB, somehow rotten table after UPDATE"
row0ins.c: MySQL's partitioned table code does not set preduilt->sql_stat_start right
if it does an insert in the same statement after doing a search first in the same
partition table. We now write trx id always to the buffer, not just when flag
sql_stat_start is on. This will waste CPU time very sightly.
* Fix BUG#18077: "InnoDB uses full explicit table locks in stored FUNCTION"
* Fix BUG#18238: "When locks exhaust the buffer pool, InnoDB does not roll back the trx"
* Fix BUG#18252" "Disk space leak in updates of InnoDB BLOB rows in 5.0 and 5.1"
* Fix BUG#18283: "When InnoDB returns error 'lock table full', MySQL can write to binlog too much"
* Fix BUG#18350: "Use consistent read in CREATE ... SELECT ... if innodb_locks_unsafe_for_binlog"
* Fix BUG#18384: "InnoDB memory leak on duplicate key errors in 5.0 if row has many columns"
* Fix BUG#18934: "InnoDB crashes when table uses column names like DB_ROW_ID"
Refuse tables that use reserved column names.
* InnoDB's SQL parser:
- Add support for UNSIGNED types, EXIT keyword, quoted identifiers, user-function callbacks
for processing results of FETCH statements, bound literals, DATA_VARCHAR for bound literals.
- Allow bound literals of type non-INTEGER to be of length 0.
- Add make_flex.sh and update lexer/parser generation documentation.
- Add comment clarifying the difference between 'alias' and 'indirection' fields in sym_node_t.
- Remove never reached duplicate code in pars_set_dfield_type().
- Rewrite pars_info datatypes and APIs, add a few helper functions.
- Since the functions definitions in pars_info_t are accessed after pars_sql() returns
in the query graph execution stage, we can't free pars_info_t in pars_sql(). Instead,
make pars_sql() transfer ownership of pars_info_t to the created query graph, and
make que_graph_free() free it if needed.
- Allow access to system columns like DB_ROW_ID.
* Use bound literals in row_truncate_table_for_mysql, row_drop_table_for_mysql,
row_discard_tablespace_for_mysql, and row_rename_table_for_mysql.
* Setting an isolation level of the transaction to read committed weakens the locks for
this session similarly like the option innodb_locks_unsafe_for binlog. This patch removes
alnost all gap locking (used in next-key locking) and makes MySQL to release the row locks
on the rows which does not belong to result set. Additionally, nonlocking selects on
INSERT INTO SELECT, UPDATE ... (SELECT ...), and CREATE ... SELECT ... use a nonlocking
consistent read. If a binlog is used, then binlog format should be set to row based
binloging to make the execution of the complex SQL statements.
* Disable the statistic variables btr_search_n_hash_fail and n_hash_succ, n_hash_fail,
n_patt_succ, and n_searches of btr_search_t in builds without #ifdef UNIV_SEARCH_PERF_STAT.
* Make innodb.test faster. Group all consistent read test cases to a one test case and
wait their lock timeout after all have been send to the server. Decrease amount of rows
inserted in a certain test - this has no effect on the effectiveness of the test and
reduces the running time by ~10 sec. Remove temporary work-arounds from innodb.result
now that ALTER TABLE DROP FOREIGN KEY works once again.
* Make innodb_unsafe_binlog.test faster. Grout all consistent read test cases to a one
test case amd wait their lock timeout after all have been sent to the server. Remove
unnecessary option --loose_innodb_lock_wait_timeout.
* Print dictionary memory size in SHOW INNODB STATUS.
* Fix memory leaks in row_create_table_for_mysql() in rare corner cases.
* Remove code related to clustered tables. They were never implemented, and the
implementation would be challenging with ROW_FORMAT=COMPACT. Remove the table types
DICT_TABLE_CLUSTER_MEMBER and DICT_TABLE_CLUSTER and all related tests and functions.
dict_table_t: Remove mix_id, mix_len, mix_id_len, mix_id_buf, and cluster_name.
plan_t: Remove mixed_index.
dict_create_sys_tables_tuple(): Set MIX_ID=0, MIX_LEN=0, CLUSTER_NAME=NULL when
inserting into SYS_TABLES.
dict_tree_check_search_tuple(): Enclose in #ifdef UNIV_DEBUG.
* Move calling of thr_local_free() from trx_free_for_mysql() to
innobase_close_connection().
mysql-test/r/innodb.result:
Applied innodb-5.1-ss475 snapshot.
mysql-test/r/innodb_unsafe_binlog.result:
Applied innodb-5.1-ss475 snapshot.
mysql-test/t/innodb-master.opt:
Applied innodb-5.1-ss475 snapshot.
mysql-test/t/innodb.test:
Applied innodb-5.1-ss475 snapshot.
mysql-test/t/innodb_unsafe_binlog-master.opt:
Applied innodb-5.1-ss475 snapshot.
mysql-test/t/innodb_unsafe_binlog.test:
Applied innodb-5.1-ss475 snapshot.
sql/ha_innodb.cc:
Applied innodb-5.1-ss475 snapshot.
Do not use inlined functions in ha_innodb.cc.
Remove assertion ut_error which crashes the mysqld server
if it prints a warning about the adaptive latch.
storage/innobase/Makefile.am:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/btr/btr0btr.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/btr/btr0cur.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/btr/btr0pcur.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/btr/btr0sea.c:
Applied innodb-5.1-ss475 snapshot.
Fix compilation problem with non-C99 compilers.
storage/innobase/buf/buf0lru.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/cmakelists.txt:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/configure.in:
Applied innodb-5.1-ss475 snapshot.
Add disabled-by-default logic to switch GCC to a strict C89-mode.
Add -Werror-implicit-function_declaration to CFLAGS when using gcc.
storage/innobase/data/data0type.c:
Applied innodb-5.1-ss475 snapshot.
dtype_print(): Recognize DATA_FIXBINARY and DATA_BLOB types.
Print known flags from prtype. Use a switch statement instead
of else-if chain.
storage/innobase/dict/dict0crea.c:
Applied innodb-5.1-ss475 snapshot.
Use bound literals in all SQL statements instead of elaborately
constructing correctly allocated and quoted strings to pass the
data in ASCII form.
storage/innobase/dict/dict0dict.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/dict/dict0load.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/dict/dict0mem.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/eval/eval0proc.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/ibuf/ibuf0ibuf.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/btr0cur.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/btr0cur.ic:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/btr0sea.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/buf0lru.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/dict0dict.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/dict0dict.ic:
Applied innodb-5.1-ss475 snapshot.
Remove too strict assertions from some dict_table_t
accessor functions.
storage/innobase/include/dict0mem.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/eval0proc.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/hash0hash.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/lock0lock.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/mem0mem.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/page0page.ic:
Applied innodb-5.1-ss475 snapshot.
Remove UNIV_RELEASE_NOT_YET_STABLE and related checks.
storage/innobase/include/pars0grm.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/pars0pars.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/pars0sym.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/pars0types.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/que0que.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/row0mysql.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/row0sel.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/row0upd.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/trx0trx.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/univ.i:
Applied innodb-5.1-ss475 snapshot.
Remove UNIV_RELEASE_NOT_YET_STABLE and related checks.
When using GCC, use __inline__ instead of inline.
storage/innobase/include/ut0mem.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/lock/lock0lock.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/log/log0recv.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/mem/mem0dbg.c:
Applied innodb-5.1-ss475 snapshot.
Add (void*) cast when using the %p printf format specifier.
storage/innobase/mem/mem0mem.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/os/os0sync.c:
Applied innodb-5.1-ss475 snapshot.
Add (void*) cast when using the %p printf format specifier.
storage/innobase/pars/lexyy.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/pars/make_bison.sh:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/pars/pars0grm.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/pars/pars0grm.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/pars/pars0grm.y:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/pars/pars0lex.l:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/pars/pars0opt.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/pars/pars0pars.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/pars/pars0sym.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/que/que0que.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/row/row0ins.c:
Applied innodb-5.1-ss475 snapshot.
Remove a memory leak when trying to insert a duplicate record to a
clustered inedx comprising more than about 90 columns (Bug#18384).
row_ins_duplicate_error_in_clust(): Call mem_heap_free(heap) at
func_exit if needed.
storage/innobase/row/row0mysql.c:
Applied innodb-5.1-ss475 snapshot.
row_mysql_is_system_table(): Use strncmp, not memcmp, since we
don't know how long the input string is.
storage/innobase/row/row0sel.c:
Applied innodb-5.1-ss475 snapshot.
Remove UNIV_RELEASE_NOT_YET_STABLE and related checks.
row_sel_field_store_in_mysql_format(): Turn the assertions on
mbminlen, mbmaxlen, and templ->type into debug assertions.
fetch_step(): Print a more usefull error message when the cursor is closed.
storage/innobase/row/row0upd.c:
Applied innodb-5.1-ss475 snapshot.
row_upd_index_replace_new_col_vals_index_pos(): Add a parameter
order_only for limiting the replacement to the ordering fields
of the index.
storage/innobase/srv/srv0srv.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/sync/sync0arr.c:
Applied innodb-5.1-ss475 snapshot.
Add (void*) cast when using the %p printf format specifier.
storage/innobase/sync/sync0rw.c:
Applied innodb-5.1-ss475 snapshot.
Add (void*) cast when using the %p printf format specifier.
storage/innobase/sync/sync0sync.c:
Applied innodb-5.1-ss475 snapshot.
Add (void*) cast when using the %p printf format specifier.
storage/innobase/trx/trx0trx.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/ut/Makefile.am:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/ut/ut0mem.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/ut0vec.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/ut0vec.ic:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/pars/make_flex.sh:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/ut/ut0vec.c:
Applied innodb-5.1-ss475 snapshot.
2006-04-23 10:48:31 +02:00
create table t1 (id int not null, f_id int not null, f int not null,
primary key(f_id, id)) engine=innodb;
create table t2 (id int not null,s_id int not null,s varchar(200),
primary key(id)) engine=innodb;
INSERT INTO t1 VALUES (8, 1, 3);
INSERT INTO t1 VALUES (1, 2, 1);
INSERT INTO t2 VALUES (1, 0, '');
INSERT INTO t2 VALUES (8, 1, '');
commit;
DELETE ml.* FROM t1 AS ml LEFT JOIN t2 AS mm ON (mm.id=ml.id)
WHERE mm.id IS NULL;
select ml.* from t1 as ml left join t2 as mm on (mm.id=ml.id)
where mm.id is null lock in share mode;
id f_id f
drop table t1,t2;
create table t1(a int not null, b int, primary key(a)) engine=innodb;
insert into t1 values(1,1),(2,2),(3,1),(4,2),(5,1),(6,2),(7,3);
commit;
2008-10-03 14:24:19 +02:00
SET binlog_format='MIXED';
Applied innodb-5.1-ss475 snapshot.
* Fix BUG#15650: "DELETE with LEFT JOIN crashes server with innodb_locks_unsafe_for binlog"
* Fix BUG#17134: "Partitions: uncommitted changes are visible"
* Fix BUG#17992: "Partitions: InnoDB, somehow rotten table after UPDATE"
row0ins.c: MySQL's partitioned table code does not set preduilt->sql_stat_start right
if it does an insert in the same statement after doing a search first in the same
partition table. We now write trx id always to the buffer, not just when flag
sql_stat_start is on. This will waste CPU time very sightly.
* Fix BUG#18077: "InnoDB uses full explicit table locks in stored FUNCTION"
* Fix BUG#18238: "When locks exhaust the buffer pool, InnoDB does not roll back the trx"
* Fix BUG#18252" "Disk space leak in updates of InnoDB BLOB rows in 5.0 and 5.1"
* Fix BUG#18283: "When InnoDB returns error 'lock table full', MySQL can write to binlog too much"
* Fix BUG#18350: "Use consistent read in CREATE ... SELECT ... if innodb_locks_unsafe_for_binlog"
* Fix BUG#18384: "InnoDB memory leak on duplicate key errors in 5.0 if row has many columns"
* Fix BUG#18934: "InnoDB crashes when table uses column names like DB_ROW_ID"
Refuse tables that use reserved column names.
* InnoDB's SQL parser:
- Add support for UNSIGNED types, EXIT keyword, quoted identifiers, user-function callbacks
for processing results of FETCH statements, bound literals, DATA_VARCHAR for bound literals.
- Allow bound literals of type non-INTEGER to be of length 0.
- Add make_flex.sh and update lexer/parser generation documentation.
- Add comment clarifying the difference between 'alias' and 'indirection' fields in sym_node_t.
- Remove never reached duplicate code in pars_set_dfield_type().
- Rewrite pars_info datatypes and APIs, add a few helper functions.
- Since the functions definitions in pars_info_t are accessed after pars_sql() returns
in the query graph execution stage, we can't free pars_info_t in pars_sql(). Instead,
make pars_sql() transfer ownership of pars_info_t to the created query graph, and
make que_graph_free() free it if needed.
- Allow access to system columns like DB_ROW_ID.
* Use bound literals in row_truncate_table_for_mysql, row_drop_table_for_mysql,
row_discard_tablespace_for_mysql, and row_rename_table_for_mysql.
* Setting an isolation level of the transaction to read committed weakens the locks for
this session similarly like the option innodb_locks_unsafe_for binlog. This patch removes
alnost all gap locking (used in next-key locking) and makes MySQL to release the row locks
on the rows which does not belong to result set. Additionally, nonlocking selects on
INSERT INTO SELECT, UPDATE ... (SELECT ...), and CREATE ... SELECT ... use a nonlocking
consistent read. If a binlog is used, then binlog format should be set to row based
binloging to make the execution of the complex SQL statements.
* Disable the statistic variables btr_search_n_hash_fail and n_hash_succ, n_hash_fail,
n_patt_succ, and n_searches of btr_search_t in builds without #ifdef UNIV_SEARCH_PERF_STAT.
* Make innodb.test faster. Group all consistent read test cases to a one test case and
wait their lock timeout after all have been send to the server. Decrease amount of rows
inserted in a certain test - this has no effect on the effectiveness of the test and
reduces the running time by ~10 sec. Remove temporary work-arounds from innodb.result
now that ALTER TABLE DROP FOREIGN KEY works once again.
* Make innodb_unsafe_binlog.test faster. Grout all consistent read test cases to a one
test case amd wait their lock timeout after all have been sent to the server. Remove
unnecessary option --loose_innodb_lock_wait_timeout.
* Print dictionary memory size in SHOW INNODB STATUS.
* Fix memory leaks in row_create_table_for_mysql() in rare corner cases.
* Remove code related to clustered tables. They were never implemented, and the
implementation would be challenging with ROW_FORMAT=COMPACT. Remove the table types
DICT_TABLE_CLUSTER_MEMBER and DICT_TABLE_CLUSTER and all related tests and functions.
dict_table_t: Remove mix_id, mix_len, mix_id_len, mix_id_buf, and cluster_name.
plan_t: Remove mixed_index.
dict_create_sys_tables_tuple(): Set MIX_ID=0, MIX_LEN=0, CLUSTER_NAME=NULL when
inserting into SYS_TABLES.
dict_tree_check_search_tuple(): Enclose in #ifdef UNIV_DEBUG.
* Move calling of thr_local_free() from trx_free_for_mysql() to
innobase_close_connection().
mysql-test/r/innodb.result:
Applied innodb-5.1-ss475 snapshot.
mysql-test/r/innodb_unsafe_binlog.result:
Applied innodb-5.1-ss475 snapshot.
mysql-test/t/innodb-master.opt:
Applied innodb-5.1-ss475 snapshot.
mysql-test/t/innodb.test:
Applied innodb-5.1-ss475 snapshot.
mysql-test/t/innodb_unsafe_binlog-master.opt:
Applied innodb-5.1-ss475 snapshot.
mysql-test/t/innodb_unsafe_binlog.test:
Applied innodb-5.1-ss475 snapshot.
sql/ha_innodb.cc:
Applied innodb-5.1-ss475 snapshot.
Do not use inlined functions in ha_innodb.cc.
Remove assertion ut_error which crashes the mysqld server
if it prints a warning about the adaptive latch.
storage/innobase/Makefile.am:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/btr/btr0btr.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/btr/btr0cur.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/btr/btr0pcur.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/btr/btr0sea.c:
Applied innodb-5.1-ss475 snapshot.
Fix compilation problem with non-C99 compilers.
storage/innobase/buf/buf0lru.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/cmakelists.txt:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/configure.in:
Applied innodb-5.1-ss475 snapshot.
Add disabled-by-default logic to switch GCC to a strict C89-mode.
Add -Werror-implicit-function_declaration to CFLAGS when using gcc.
storage/innobase/data/data0type.c:
Applied innodb-5.1-ss475 snapshot.
dtype_print(): Recognize DATA_FIXBINARY and DATA_BLOB types.
Print known flags from prtype. Use a switch statement instead
of else-if chain.
storage/innobase/dict/dict0crea.c:
Applied innodb-5.1-ss475 snapshot.
Use bound literals in all SQL statements instead of elaborately
constructing correctly allocated and quoted strings to pass the
data in ASCII form.
storage/innobase/dict/dict0dict.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/dict/dict0load.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/dict/dict0mem.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/eval/eval0proc.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/ibuf/ibuf0ibuf.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/btr0cur.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/btr0cur.ic:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/btr0sea.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/buf0lru.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/dict0dict.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/dict0dict.ic:
Applied innodb-5.1-ss475 snapshot.
Remove too strict assertions from some dict_table_t
accessor functions.
storage/innobase/include/dict0mem.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/eval0proc.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/hash0hash.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/lock0lock.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/mem0mem.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/page0page.ic:
Applied innodb-5.1-ss475 snapshot.
Remove UNIV_RELEASE_NOT_YET_STABLE and related checks.
storage/innobase/include/pars0grm.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/pars0pars.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/pars0sym.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/pars0types.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/que0que.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/row0mysql.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/row0sel.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/row0upd.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/trx0trx.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/univ.i:
Applied innodb-5.1-ss475 snapshot.
Remove UNIV_RELEASE_NOT_YET_STABLE and related checks.
When using GCC, use __inline__ instead of inline.
storage/innobase/include/ut0mem.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/lock/lock0lock.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/log/log0recv.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/mem/mem0dbg.c:
Applied innodb-5.1-ss475 snapshot.
Add (void*) cast when using the %p printf format specifier.
storage/innobase/mem/mem0mem.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/os/os0sync.c:
Applied innodb-5.1-ss475 snapshot.
Add (void*) cast when using the %p printf format specifier.
storage/innobase/pars/lexyy.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/pars/make_bison.sh:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/pars/pars0grm.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/pars/pars0grm.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/pars/pars0grm.y:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/pars/pars0lex.l:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/pars/pars0opt.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/pars/pars0pars.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/pars/pars0sym.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/que/que0que.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/row/row0ins.c:
Applied innodb-5.1-ss475 snapshot.
Remove a memory leak when trying to insert a duplicate record to a
clustered inedx comprising more than about 90 columns (Bug#18384).
row_ins_duplicate_error_in_clust(): Call mem_heap_free(heap) at
func_exit if needed.
storage/innobase/row/row0mysql.c:
Applied innodb-5.1-ss475 snapshot.
row_mysql_is_system_table(): Use strncmp, not memcmp, since we
don't know how long the input string is.
storage/innobase/row/row0sel.c:
Applied innodb-5.1-ss475 snapshot.
Remove UNIV_RELEASE_NOT_YET_STABLE and related checks.
row_sel_field_store_in_mysql_format(): Turn the assertions on
mbminlen, mbmaxlen, and templ->type into debug assertions.
fetch_step(): Print a more usefull error message when the cursor is closed.
storage/innobase/row/row0upd.c:
Applied innodb-5.1-ss475 snapshot.
row_upd_index_replace_new_col_vals_index_pos(): Add a parameter
order_only for limiting the replacement to the ordering fields
of the index.
storage/innobase/srv/srv0srv.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/sync/sync0arr.c:
Applied innodb-5.1-ss475 snapshot.
Add (void*) cast when using the %p printf format specifier.
storage/innobase/sync/sync0rw.c:
Applied innodb-5.1-ss475 snapshot.
Add (void*) cast when using the %p printf format specifier.
storage/innobase/sync/sync0sync.c:
Applied innodb-5.1-ss475 snapshot.
Add (void*) cast when using the %p printf format specifier.
storage/innobase/trx/trx0trx.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/ut/Makefile.am:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/ut/ut0mem.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/ut0vec.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/ut0vec.ic:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/pars/make_flex.sh:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/ut/ut0vec.c:
Applied innodb-5.1-ss475 snapshot.
2006-04-23 10:48:31 +02:00
set autocommit = 0;
SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED;
update t1 set b = 5 where b = 1;
2008-10-03 14:24:19 +02:00
SET binlog_format='MIXED';
Applied innodb-5.1-ss475 snapshot.
* Fix BUG#15650: "DELETE with LEFT JOIN crashes server with innodb_locks_unsafe_for binlog"
* Fix BUG#17134: "Partitions: uncommitted changes are visible"
* Fix BUG#17992: "Partitions: InnoDB, somehow rotten table after UPDATE"
row0ins.c: MySQL's partitioned table code does not set preduilt->sql_stat_start right
if it does an insert in the same statement after doing a search first in the same
partition table. We now write trx id always to the buffer, not just when flag
sql_stat_start is on. This will waste CPU time very sightly.
* Fix BUG#18077: "InnoDB uses full explicit table locks in stored FUNCTION"
* Fix BUG#18238: "When locks exhaust the buffer pool, InnoDB does not roll back the trx"
* Fix BUG#18252" "Disk space leak in updates of InnoDB BLOB rows in 5.0 and 5.1"
* Fix BUG#18283: "When InnoDB returns error 'lock table full', MySQL can write to binlog too much"
* Fix BUG#18350: "Use consistent read in CREATE ... SELECT ... if innodb_locks_unsafe_for_binlog"
* Fix BUG#18384: "InnoDB memory leak on duplicate key errors in 5.0 if row has many columns"
* Fix BUG#18934: "InnoDB crashes when table uses column names like DB_ROW_ID"
Refuse tables that use reserved column names.
* InnoDB's SQL parser:
- Add support for UNSIGNED types, EXIT keyword, quoted identifiers, user-function callbacks
for processing results of FETCH statements, bound literals, DATA_VARCHAR for bound literals.
- Allow bound literals of type non-INTEGER to be of length 0.
- Add make_flex.sh and update lexer/parser generation documentation.
- Add comment clarifying the difference between 'alias' and 'indirection' fields in sym_node_t.
- Remove never reached duplicate code in pars_set_dfield_type().
- Rewrite pars_info datatypes and APIs, add a few helper functions.
- Since the functions definitions in pars_info_t are accessed after pars_sql() returns
in the query graph execution stage, we can't free pars_info_t in pars_sql(). Instead,
make pars_sql() transfer ownership of pars_info_t to the created query graph, and
make que_graph_free() free it if needed.
- Allow access to system columns like DB_ROW_ID.
* Use bound literals in row_truncate_table_for_mysql, row_drop_table_for_mysql,
row_discard_tablespace_for_mysql, and row_rename_table_for_mysql.
* Setting an isolation level of the transaction to read committed weakens the locks for
this session similarly like the option innodb_locks_unsafe_for binlog. This patch removes
alnost all gap locking (used in next-key locking) and makes MySQL to release the row locks
on the rows which does not belong to result set. Additionally, nonlocking selects on
INSERT INTO SELECT, UPDATE ... (SELECT ...), and CREATE ... SELECT ... use a nonlocking
consistent read. If a binlog is used, then binlog format should be set to row based
binloging to make the execution of the complex SQL statements.
* Disable the statistic variables btr_search_n_hash_fail and n_hash_succ, n_hash_fail,
n_patt_succ, and n_searches of btr_search_t in builds without #ifdef UNIV_SEARCH_PERF_STAT.
* Make innodb.test faster. Group all consistent read test cases to a one test case and
wait their lock timeout after all have been send to the server. Decrease amount of rows
inserted in a certain test - this has no effect on the effectiveness of the test and
reduces the running time by ~10 sec. Remove temporary work-arounds from innodb.result
now that ALTER TABLE DROP FOREIGN KEY works once again.
* Make innodb_unsafe_binlog.test faster. Grout all consistent read test cases to a one
test case amd wait their lock timeout after all have been sent to the server. Remove
unnecessary option --loose_innodb_lock_wait_timeout.
* Print dictionary memory size in SHOW INNODB STATUS.
* Fix memory leaks in row_create_table_for_mysql() in rare corner cases.
* Remove code related to clustered tables. They were never implemented, and the
implementation would be challenging with ROW_FORMAT=COMPACT. Remove the table types
DICT_TABLE_CLUSTER_MEMBER and DICT_TABLE_CLUSTER and all related tests and functions.
dict_table_t: Remove mix_id, mix_len, mix_id_len, mix_id_buf, and cluster_name.
plan_t: Remove mixed_index.
dict_create_sys_tables_tuple(): Set MIX_ID=0, MIX_LEN=0, CLUSTER_NAME=NULL when
inserting into SYS_TABLES.
dict_tree_check_search_tuple(): Enclose in #ifdef UNIV_DEBUG.
* Move calling of thr_local_free() from trx_free_for_mysql() to
innobase_close_connection().
mysql-test/r/innodb.result:
Applied innodb-5.1-ss475 snapshot.
mysql-test/r/innodb_unsafe_binlog.result:
Applied innodb-5.1-ss475 snapshot.
mysql-test/t/innodb-master.opt:
Applied innodb-5.1-ss475 snapshot.
mysql-test/t/innodb.test:
Applied innodb-5.1-ss475 snapshot.
mysql-test/t/innodb_unsafe_binlog-master.opt:
Applied innodb-5.1-ss475 snapshot.
mysql-test/t/innodb_unsafe_binlog.test:
Applied innodb-5.1-ss475 snapshot.
sql/ha_innodb.cc:
Applied innodb-5.1-ss475 snapshot.
Do not use inlined functions in ha_innodb.cc.
Remove assertion ut_error which crashes the mysqld server
if it prints a warning about the adaptive latch.
storage/innobase/Makefile.am:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/btr/btr0btr.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/btr/btr0cur.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/btr/btr0pcur.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/btr/btr0sea.c:
Applied innodb-5.1-ss475 snapshot.
Fix compilation problem with non-C99 compilers.
storage/innobase/buf/buf0lru.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/cmakelists.txt:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/configure.in:
Applied innodb-5.1-ss475 snapshot.
Add disabled-by-default logic to switch GCC to a strict C89-mode.
Add -Werror-implicit-function_declaration to CFLAGS when using gcc.
storage/innobase/data/data0type.c:
Applied innodb-5.1-ss475 snapshot.
dtype_print(): Recognize DATA_FIXBINARY and DATA_BLOB types.
Print known flags from prtype. Use a switch statement instead
of else-if chain.
storage/innobase/dict/dict0crea.c:
Applied innodb-5.1-ss475 snapshot.
Use bound literals in all SQL statements instead of elaborately
constructing correctly allocated and quoted strings to pass the
data in ASCII form.
storage/innobase/dict/dict0dict.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/dict/dict0load.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/dict/dict0mem.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/eval/eval0proc.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/ibuf/ibuf0ibuf.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/btr0cur.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/btr0cur.ic:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/btr0sea.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/buf0lru.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/dict0dict.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/dict0dict.ic:
Applied innodb-5.1-ss475 snapshot.
Remove too strict assertions from some dict_table_t
accessor functions.
storage/innobase/include/dict0mem.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/eval0proc.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/hash0hash.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/lock0lock.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/mem0mem.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/page0page.ic:
Applied innodb-5.1-ss475 snapshot.
Remove UNIV_RELEASE_NOT_YET_STABLE and related checks.
storage/innobase/include/pars0grm.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/pars0pars.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/pars0sym.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/pars0types.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/que0que.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/row0mysql.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/row0sel.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/row0upd.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/trx0trx.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/univ.i:
Applied innodb-5.1-ss475 snapshot.
Remove UNIV_RELEASE_NOT_YET_STABLE and related checks.
When using GCC, use __inline__ instead of inline.
storage/innobase/include/ut0mem.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/lock/lock0lock.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/log/log0recv.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/mem/mem0dbg.c:
Applied innodb-5.1-ss475 snapshot.
Add (void*) cast when using the %p printf format specifier.
storage/innobase/mem/mem0mem.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/os/os0sync.c:
Applied innodb-5.1-ss475 snapshot.
Add (void*) cast when using the %p printf format specifier.
storage/innobase/pars/lexyy.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/pars/make_bison.sh:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/pars/pars0grm.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/pars/pars0grm.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/pars/pars0grm.y:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/pars/pars0lex.l:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/pars/pars0opt.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/pars/pars0pars.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/pars/pars0sym.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/que/que0que.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/row/row0ins.c:
Applied innodb-5.1-ss475 snapshot.
Remove a memory leak when trying to insert a duplicate record to a
clustered inedx comprising more than about 90 columns (Bug#18384).
row_ins_duplicate_error_in_clust(): Call mem_heap_free(heap) at
func_exit if needed.
storage/innobase/row/row0mysql.c:
Applied innodb-5.1-ss475 snapshot.
row_mysql_is_system_table(): Use strncmp, not memcmp, since we
don't know how long the input string is.
storage/innobase/row/row0sel.c:
Applied innodb-5.1-ss475 snapshot.
Remove UNIV_RELEASE_NOT_YET_STABLE and related checks.
row_sel_field_store_in_mysql_format(): Turn the assertions on
mbminlen, mbmaxlen, and templ->type into debug assertions.
fetch_step(): Print a more usefull error message when the cursor is closed.
storage/innobase/row/row0upd.c:
Applied innodb-5.1-ss475 snapshot.
row_upd_index_replace_new_col_vals_index_pos(): Add a parameter
order_only for limiting the replacement to the ordering fields
of the index.
storage/innobase/srv/srv0srv.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/sync/sync0arr.c:
Applied innodb-5.1-ss475 snapshot.
Add (void*) cast when using the %p printf format specifier.
storage/innobase/sync/sync0rw.c:
Applied innodb-5.1-ss475 snapshot.
Add (void*) cast when using the %p printf format specifier.
storage/innobase/sync/sync0sync.c:
Applied innodb-5.1-ss475 snapshot.
Add (void*) cast when using the %p printf format specifier.
storage/innobase/trx/trx0trx.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/ut/Makefile.am:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/ut/ut0mem.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/ut0vec.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/ut0vec.ic:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/pars/make_flex.sh:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/ut/ut0vec.c:
Applied innodb-5.1-ss475 snapshot.
2006-04-23 10:48:31 +02:00
set autocommit = 0;
SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED;
select * from t1 where a = 7 and b = 3 for update;
a b
7 3
commit;
commit;
drop table t1;
create table t1(a int not null, b int, primary key(a)) engine=innodb;
insert into t1 values(1,1),(2,2),(3,1),(4,2),(5,1),(6,2);
commit;
set autocommit = 0;
select * from t1 lock in share mode;
a b
1 1
2 2
3 1
4 2
5 1
6 2
update t1 set b = 5 where b = 1;
set autocommit = 0;
select * from t1 where a = 2 and b = 2 for update;
ERROR HY000: Lock wait timeout exceeded; try restarting transaction
commit;
commit;
drop table t1;
create table t1(a int not null, b int, primary key(a)) engine=innodb;
insert into t1 values (1,2),(5,3),(4,2);
create table t2(d int not null, e int, primary key(d)) engine=innodb;
insert into t2 values (8,6),(12,1),(3,1);
commit;
set autocommit = 0;
select * from t2 for update;
d e
3 1
8 6
12 1
2008-10-03 14:24:19 +02:00
SET binlog_format='MIXED';
Applied innodb-5.1-ss475 snapshot.
* Fix BUG#15650: "DELETE with LEFT JOIN crashes server with innodb_locks_unsafe_for binlog"
* Fix BUG#17134: "Partitions: uncommitted changes are visible"
* Fix BUG#17992: "Partitions: InnoDB, somehow rotten table after UPDATE"
row0ins.c: MySQL's partitioned table code does not set preduilt->sql_stat_start right
if it does an insert in the same statement after doing a search first in the same
partition table. We now write trx id always to the buffer, not just when flag
sql_stat_start is on. This will waste CPU time very sightly.
* Fix BUG#18077: "InnoDB uses full explicit table locks in stored FUNCTION"
* Fix BUG#18238: "When locks exhaust the buffer pool, InnoDB does not roll back the trx"
* Fix BUG#18252" "Disk space leak in updates of InnoDB BLOB rows in 5.0 and 5.1"
* Fix BUG#18283: "When InnoDB returns error 'lock table full', MySQL can write to binlog too much"
* Fix BUG#18350: "Use consistent read in CREATE ... SELECT ... if innodb_locks_unsafe_for_binlog"
* Fix BUG#18384: "InnoDB memory leak on duplicate key errors in 5.0 if row has many columns"
* Fix BUG#18934: "InnoDB crashes when table uses column names like DB_ROW_ID"
Refuse tables that use reserved column names.
* InnoDB's SQL parser:
- Add support for UNSIGNED types, EXIT keyword, quoted identifiers, user-function callbacks
for processing results of FETCH statements, bound literals, DATA_VARCHAR for bound literals.
- Allow bound literals of type non-INTEGER to be of length 0.
- Add make_flex.sh and update lexer/parser generation documentation.
- Add comment clarifying the difference between 'alias' and 'indirection' fields in sym_node_t.
- Remove never reached duplicate code in pars_set_dfield_type().
- Rewrite pars_info datatypes and APIs, add a few helper functions.
- Since the functions definitions in pars_info_t are accessed after pars_sql() returns
in the query graph execution stage, we can't free pars_info_t in pars_sql(). Instead,
make pars_sql() transfer ownership of pars_info_t to the created query graph, and
make que_graph_free() free it if needed.
- Allow access to system columns like DB_ROW_ID.
* Use bound literals in row_truncate_table_for_mysql, row_drop_table_for_mysql,
row_discard_tablespace_for_mysql, and row_rename_table_for_mysql.
* Setting an isolation level of the transaction to read committed weakens the locks for
this session similarly like the option innodb_locks_unsafe_for binlog. This patch removes
alnost all gap locking (used in next-key locking) and makes MySQL to release the row locks
on the rows which does not belong to result set. Additionally, nonlocking selects on
INSERT INTO SELECT, UPDATE ... (SELECT ...), and CREATE ... SELECT ... use a nonlocking
consistent read. If a binlog is used, then binlog format should be set to row based
binloging to make the execution of the complex SQL statements.
* Disable the statistic variables btr_search_n_hash_fail and n_hash_succ, n_hash_fail,
n_patt_succ, and n_searches of btr_search_t in builds without #ifdef UNIV_SEARCH_PERF_STAT.
* Make innodb.test faster. Group all consistent read test cases to a one test case and
wait their lock timeout after all have been send to the server. Decrease amount of rows
inserted in a certain test - this has no effect on the effectiveness of the test and
reduces the running time by ~10 sec. Remove temporary work-arounds from innodb.result
now that ALTER TABLE DROP FOREIGN KEY works once again.
* Make innodb_unsafe_binlog.test faster. Grout all consistent read test cases to a one
test case amd wait their lock timeout after all have been sent to the server. Remove
unnecessary option --loose_innodb_lock_wait_timeout.
* Print dictionary memory size in SHOW INNODB STATUS.
* Fix memory leaks in row_create_table_for_mysql() in rare corner cases.
* Remove code related to clustered tables. They were never implemented, and the
implementation would be challenging with ROW_FORMAT=COMPACT. Remove the table types
DICT_TABLE_CLUSTER_MEMBER and DICT_TABLE_CLUSTER and all related tests and functions.
dict_table_t: Remove mix_id, mix_len, mix_id_len, mix_id_buf, and cluster_name.
plan_t: Remove mixed_index.
dict_create_sys_tables_tuple(): Set MIX_ID=0, MIX_LEN=0, CLUSTER_NAME=NULL when
inserting into SYS_TABLES.
dict_tree_check_search_tuple(): Enclose in #ifdef UNIV_DEBUG.
* Move calling of thr_local_free() from trx_free_for_mysql() to
innobase_close_connection().
mysql-test/r/innodb.result:
Applied innodb-5.1-ss475 snapshot.
mysql-test/r/innodb_unsafe_binlog.result:
Applied innodb-5.1-ss475 snapshot.
mysql-test/t/innodb-master.opt:
Applied innodb-5.1-ss475 snapshot.
mysql-test/t/innodb.test:
Applied innodb-5.1-ss475 snapshot.
mysql-test/t/innodb_unsafe_binlog-master.opt:
Applied innodb-5.1-ss475 snapshot.
mysql-test/t/innodb_unsafe_binlog.test:
Applied innodb-5.1-ss475 snapshot.
sql/ha_innodb.cc:
Applied innodb-5.1-ss475 snapshot.
Do not use inlined functions in ha_innodb.cc.
Remove assertion ut_error which crashes the mysqld server
if it prints a warning about the adaptive latch.
storage/innobase/Makefile.am:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/btr/btr0btr.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/btr/btr0cur.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/btr/btr0pcur.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/btr/btr0sea.c:
Applied innodb-5.1-ss475 snapshot.
Fix compilation problem with non-C99 compilers.
storage/innobase/buf/buf0lru.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/cmakelists.txt:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/configure.in:
Applied innodb-5.1-ss475 snapshot.
Add disabled-by-default logic to switch GCC to a strict C89-mode.
Add -Werror-implicit-function_declaration to CFLAGS when using gcc.
storage/innobase/data/data0type.c:
Applied innodb-5.1-ss475 snapshot.
dtype_print(): Recognize DATA_FIXBINARY and DATA_BLOB types.
Print known flags from prtype. Use a switch statement instead
of else-if chain.
storage/innobase/dict/dict0crea.c:
Applied innodb-5.1-ss475 snapshot.
Use bound literals in all SQL statements instead of elaborately
constructing correctly allocated and quoted strings to pass the
data in ASCII form.
storage/innobase/dict/dict0dict.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/dict/dict0load.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/dict/dict0mem.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/eval/eval0proc.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/ibuf/ibuf0ibuf.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/btr0cur.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/btr0cur.ic:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/btr0sea.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/buf0lru.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/dict0dict.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/dict0dict.ic:
Applied innodb-5.1-ss475 snapshot.
Remove too strict assertions from some dict_table_t
accessor functions.
storage/innobase/include/dict0mem.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/eval0proc.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/hash0hash.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/lock0lock.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/mem0mem.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/page0page.ic:
Applied innodb-5.1-ss475 snapshot.
Remove UNIV_RELEASE_NOT_YET_STABLE and related checks.
storage/innobase/include/pars0grm.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/pars0pars.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/pars0sym.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/pars0types.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/que0que.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/row0mysql.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/row0sel.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/row0upd.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/trx0trx.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/univ.i:
Applied innodb-5.1-ss475 snapshot.
Remove UNIV_RELEASE_NOT_YET_STABLE and related checks.
When using GCC, use __inline__ instead of inline.
storage/innobase/include/ut0mem.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/lock/lock0lock.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/log/log0recv.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/mem/mem0dbg.c:
Applied innodb-5.1-ss475 snapshot.
Add (void*) cast when using the %p printf format specifier.
storage/innobase/mem/mem0mem.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/os/os0sync.c:
Applied innodb-5.1-ss475 snapshot.
Add (void*) cast when using the %p printf format specifier.
storage/innobase/pars/lexyy.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/pars/make_bison.sh:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/pars/pars0grm.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/pars/pars0grm.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/pars/pars0grm.y:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/pars/pars0lex.l:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/pars/pars0opt.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/pars/pars0pars.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/pars/pars0sym.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/que/que0que.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/row/row0ins.c:
Applied innodb-5.1-ss475 snapshot.
Remove a memory leak when trying to insert a duplicate record to a
clustered inedx comprising more than about 90 columns (Bug#18384).
row_ins_duplicate_error_in_clust(): Call mem_heap_free(heap) at
func_exit if needed.
storage/innobase/row/row0mysql.c:
Applied innodb-5.1-ss475 snapshot.
row_mysql_is_system_table(): Use strncmp, not memcmp, since we
don't know how long the input string is.
storage/innobase/row/row0sel.c:
Applied innodb-5.1-ss475 snapshot.
Remove UNIV_RELEASE_NOT_YET_STABLE and related checks.
row_sel_field_store_in_mysql_format(): Turn the assertions on
mbminlen, mbmaxlen, and templ->type into debug assertions.
fetch_step(): Print a more usefull error message when the cursor is closed.
storage/innobase/row/row0upd.c:
Applied innodb-5.1-ss475 snapshot.
row_upd_index_replace_new_col_vals_index_pos(): Add a parameter
order_only for limiting the replacement to the ordering fields
of the index.
storage/innobase/srv/srv0srv.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/sync/sync0arr.c:
Applied innodb-5.1-ss475 snapshot.
Add (void*) cast when using the %p printf format specifier.
storage/innobase/sync/sync0rw.c:
Applied innodb-5.1-ss475 snapshot.
Add (void*) cast when using the %p printf format specifier.
storage/innobase/sync/sync0sync.c:
Applied innodb-5.1-ss475 snapshot.
Add (void*) cast when using the %p printf format specifier.
storage/innobase/trx/trx0trx.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/ut/Makefile.am:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/ut/ut0mem.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/ut0vec.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/ut0vec.ic:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/pars/make_flex.sh:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/ut/ut0vec.c:
Applied innodb-5.1-ss475 snapshot.
2006-04-23 10:48:31 +02:00
set autocommit = 0;
SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED;
insert into t1 select * from t2;
update t1 set b = (select e from t2 where a = d);
create table t3(d int not null, e int, primary key(d)) engine=innodb
select * from t2;
commit;
commit;
drop table t1, t2, t3;
create table t1(a int not null, b int, primary key(a)) engine=innodb;
insert into t1 values (1,2),(5,3),(4,2);
create table t2(a int not null, b int, primary key(a)) engine=innodb;
insert into t2 values (8,6),(12,1),(3,1);
create table t3(d int not null, b int, primary key(d)) engine=innodb;
insert into t3 values (8,6),(12,1),(3,1);
create table t5(a int not null, b int, primary key(a)) engine=innodb;
insert into t5 values (1,2),(5,3),(4,2);
create table t6(d int not null, e int, primary key(d)) engine=innodb;
insert into t6 values (8,6),(12,1),(3,1);
create table t8(a int not null, b int, primary key(a)) engine=innodb;
insert into t8 values (1,2),(5,3),(4,2);
create table t9(d int not null, e int, primary key(d)) engine=innodb;
insert into t9 values (8,6),(12,1),(3,1);
commit;
set autocommit = 0;
select * from t2 for update;
a b
3 1
8 6
12 1
2008-10-03 14:24:19 +02:00
SET binlog_format='MIXED';
Applied innodb-5.1-ss475 snapshot.
* Fix BUG#15650: "DELETE with LEFT JOIN crashes server with innodb_locks_unsafe_for binlog"
* Fix BUG#17134: "Partitions: uncommitted changes are visible"
* Fix BUG#17992: "Partitions: InnoDB, somehow rotten table after UPDATE"
row0ins.c: MySQL's partitioned table code does not set preduilt->sql_stat_start right
if it does an insert in the same statement after doing a search first in the same
partition table. We now write trx id always to the buffer, not just when flag
sql_stat_start is on. This will waste CPU time very sightly.
* Fix BUG#18077: "InnoDB uses full explicit table locks in stored FUNCTION"
* Fix BUG#18238: "When locks exhaust the buffer pool, InnoDB does not roll back the trx"
* Fix BUG#18252" "Disk space leak in updates of InnoDB BLOB rows in 5.0 and 5.1"
* Fix BUG#18283: "When InnoDB returns error 'lock table full', MySQL can write to binlog too much"
* Fix BUG#18350: "Use consistent read in CREATE ... SELECT ... if innodb_locks_unsafe_for_binlog"
* Fix BUG#18384: "InnoDB memory leak on duplicate key errors in 5.0 if row has many columns"
* Fix BUG#18934: "InnoDB crashes when table uses column names like DB_ROW_ID"
Refuse tables that use reserved column names.
* InnoDB's SQL parser:
- Add support for UNSIGNED types, EXIT keyword, quoted identifiers, user-function callbacks
for processing results of FETCH statements, bound literals, DATA_VARCHAR for bound literals.
- Allow bound literals of type non-INTEGER to be of length 0.
- Add make_flex.sh and update lexer/parser generation documentation.
- Add comment clarifying the difference between 'alias' and 'indirection' fields in sym_node_t.
- Remove never reached duplicate code in pars_set_dfield_type().
- Rewrite pars_info datatypes and APIs, add a few helper functions.
- Since the functions definitions in pars_info_t are accessed after pars_sql() returns
in the query graph execution stage, we can't free pars_info_t in pars_sql(). Instead,
make pars_sql() transfer ownership of pars_info_t to the created query graph, and
make que_graph_free() free it if needed.
- Allow access to system columns like DB_ROW_ID.
* Use bound literals in row_truncate_table_for_mysql, row_drop_table_for_mysql,
row_discard_tablespace_for_mysql, and row_rename_table_for_mysql.
* Setting an isolation level of the transaction to read committed weakens the locks for
this session similarly like the option innodb_locks_unsafe_for binlog. This patch removes
alnost all gap locking (used in next-key locking) and makes MySQL to release the row locks
on the rows which does not belong to result set. Additionally, nonlocking selects on
INSERT INTO SELECT, UPDATE ... (SELECT ...), and CREATE ... SELECT ... use a nonlocking
consistent read. If a binlog is used, then binlog format should be set to row based
binloging to make the execution of the complex SQL statements.
* Disable the statistic variables btr_search_n_hash_fail and n_hash_succ, n_hash_fail,
n_patt_succ, and n_searches of btr_search_t in builds without #ifdef UNIV_SEARCH_PERF_STAT.
* Make innodb.test faster. Group all consistent read test cases to a one test case and
wait their lock timeout after all have been send to the server. Decrease amount of rows
inserted in a certain test - this has no effect on the effectiveness of the test and
reduces the running time by ~10 sec. Remove temporary work-arounds from innodb.result
now that ALTER TABLE DROP FOREIGN KEY works once again.
* Make innodb_unsafe_binlog.test faster. Grout all consistent read test cases to a one
test case amd wait their lock timeout after all have been sent to the server. Remove
unnecessary option --loose_innodb_lock_wait_timeout.
* Print dictionary memory size in SHOW INNODB STATUS.
* Fix memory leaks in row_create_table_for_mysql() in rare corner cases.
* Remove code related to clustered tables. They were never implemented, and the
implementation would be challenging with ROW_FORMAT=COMPACT. Remove the table types
DICT_TABLE_CLUSTER_MEMBER and DICT_TABLE_CLUSTER and all related tests and functions.
dict_table_t: Remove mix_id, mix_len, mix_id_len, mix_id_buf, and cluster_name.
plan_t: Remove mixed_index.
dict_create_sys_tables_tuple(): Set MIX_ID=0, MIX_LEN=0, CLUSTER_NAME=NULL when
inserting into SYS_TABLES.
dict_tree_check_search_tuple(): Enclose in #ifdef UNIV_DEBUG.
* Move calling of thr_local_free() from trx_free_for_mysql() to
innobase_close_connection().
mysql-test/r/innodb.result:
Applied innodb-5.1-ss475 snapshot.
mysql-test/r/innodb_unsafe_binlog.result:
Applied innodb-5.1-ss475 snapshot.
mysql-test/t/innodb-master.opt:
Applied innodb-5.1-ss475 snapshot.
mysql-test/t/innodb.test:
Applied innodb-5.1-ss475 snapshot.
mysql-test/t/innodb_unsafe_binlog-master.opt:
Applied innodb-5.1-ss475 snapshot.
mysql-test/t/innodb_unsafe_binlog.test:
Applied innodb-5.1-ss475 snapshot.
sql/ha_innodb.cc:
Applied innodb-5.1-ss475 snapshot.
Do not use inlined functions in ha_innodb.cc.
Remove assertion ut_error which crashes the mysqld server
if it prints a warning about the adaptive latch.
storage/innobase/Makefile.am:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/btr/btr0btr.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/btr/btr0cur.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/btr/btr0pcur.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/btr/btr0sea.c:
Applied innodb-5.1-ss475 snapshot.
Fix compilation problem with non-C99 compilers.
storage/innobase/buf/buf0lru.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/cmakelists.txt:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/configure.in:
Applied innodb-5.1-ss475 snapshot.
Add disabled-by-default logic to switch GCC to a strict C89-mode.
Add -Werror-implicit-function_declaration to CFLAGS when using gcc.
storage/innobase/data/data0type.c:
Applied innodb-5.1-ss475 snapshot.
dtype_print(): Recognize DATA_FIXBINARY and DATA_BLOB types.
Print known flags from prtype. Use a switch statement instead
of else-if chain.
storage/innobase/dict/dict0crea.c:
Applied innodb-5.1-ss475 snapshot.
Use bound literals in all SQL statements instead of elaborately
constructing correctly allocated and quoted strings to pass the
data in ASCII form.
storage/innobase/dict/dict0dict.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/dict/dict0load.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/dict/dict0mem.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/eval/eval0proc.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/ibuf/ibuf0ibuf.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/btr0cur.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/btr0cur.ic:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/btr0sea.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/buf0lru.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/dict0dict.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/dict0dict.ic:
Applied innodb-5.1-ss475 snapshot.
Remove too strict assertions from some dict_table_t
accessor functions.
storage/innobase/include/dict0mem.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/eval0proc.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/hash0hash.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/lock0lock.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/mem0mem.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/page0page.ic:
Applied innodb-5.1-ss475 snapshot.
Remove UNIV_RELEASE_NOT_YET_STABLE and related checks.
storage/innobase/include/pars0grm.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/pars0pars.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/pars0sym.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/pars0types.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/que0que.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/row0mysql.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/row0sel.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/row0upd.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/trx0trx.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/univ.i:
Applied innodb-5.1-ss475 snapshot.
Remove UNIV_RELEASE_NOT_YET_STABLE and related checks.
When using GCC, use __inline__ instead of inline.
storage/innobase/include/ut0mem.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/lock/lock0lock.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/log/log0recv.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/mem/mem0dbg.c:
Applied innodb-5.1-ss475 snapshot.
Add (void*) cast when using the %p printf format specifier.
storage/innobase/mem/mem0mem.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/os/os0sync.c:
Applied innodb-5.1-ss475 snapshot.
Add (void*) cast when using the %p printf format specifier.
storage/innobase/pars/lexyy.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/pars/make_bison.sh:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/pars/pars0grm.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/pars/pars0grm.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/pars/pars0grm.y:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/pars/pars0lex.l:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/pars/pars0opt.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/pars/pars0pars.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/pars/pars0sym.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/que/que0que.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/row/row0ins.c:
Applied innodb-5.1-ss475 snapshot.
Remove a memory leak when trying to insert a duplicate record to a
clustered inedx comprising more than about 90 columns (Bug#18384).
row_ins_duplicate_error_in_clust(): Call mem_heap_free(heap) at
func_exit if needed.
storage/innobase/row/row0mysql.c:
Applied innodb-5.1-ss475 snapshot.
row_mysql_is_system_table(): Use strncmp, not memcmp, since we
don't know how long the input string is.
storage/innobase/row/row0sel.c:
Applied innodb-5.1-ss475 snapshot.
Remove UNIV_RELEASE_NOT_YET_STABLE and related checks.
row_sel_field_store_in_mysql_format(): Turn the assertions on
mbminlen, mbmaxlen, and templ->type into debug assertions.
fetch_step(): Print a more usefull error message when the cursor is closed.
storage/innobase/row/row0upd.c:
Applied innodb-5.1-ss475 snapshot.
row_upd_index_replace_new_col_vals_index_pos(): Add a parameter
order_only for limiting the replacement to the ordering fields
of the index.
storage/innobase/srv/srv0srv.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/sync/sync0arr.c:
Applied innodb-5.1-ss475 snapshot.
Add (void*) cast when using the %p printf format specifier.
storage/innobase/sync/sync0rw.c:
Applied innodb-5.1-ss475 snapshot.
Add (void*) cast when using the %p printf format specifier.
storage/innobase/sync/sync0sync.c:
Applied innodb-5.1-ss475 snapshot.
Add (void*) cast when using the %p printf format specifier.
storage/innobase/trx/trx0trx.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/ut/Makefile.am:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/ut/ut0mem.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/ut0vec.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/ut0vec.ic:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/pars/make_flex.sh:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/ut/ut0vec.c:
Applied innodb-5.1-ss475 snapshot.
2006-04-23 10:48:31 +02:00
set autocommit = 0;
SET SESSION TRANSACTION ISOLATION LEVEL SERIALIZABLE;
insert into t1 select * from t2;
2008-10-03 14:24:19 +02:00
SET binlog_format='MIXED';
Applied innodb-5.1-ss475 snapshot.
* Fix BUG#15650: "DELETE with LEFT JOIN crashes server with innodb_locks_unsafe_for binlog"
* Fix BUG#17134: "Partitions: uncommitted changes are visible"
* Fix BUG#17992: "Partitions: InnoDB, somehow rotten table after UPDATE"
row0ins.c: MySQL's partitioned table code does not set preduilt->sql_stat_start right
if it does an insert in the same statement after doing a search first in the same
partition table. We now write trx id always to the buffer, not just when flag
sql_stat_start is on. This will waste CPU time very sightly.
* Fix BUG#18077: "InnoDB uses full explicit table locks in stored FUNCTION"
* Fix BUG#18238: "When locks exhaust the buffer pool, InnoDB does not roll back the trx"
* Fix BUG#18252" "Disk space leak in updates of InnoDB BLOB rows in 5.0 and 5.1"
* Fix BUG#18283: "When InnoDB returns error 'lock table full', MySQL can write to binlog too much"
* Fix BUG#18350: "Use consistent read in CREATE ... SELECT ... if innodb_locks_unsafe_for_binlog"
* Fix BUG#18384: "InnoDB memory leak on duplicate key errors in 5.0 if row has many columns"
* Fix BUG#18934: "InnoDB crashes when table uses column names like DB_ROW_ID"
Refuse tables that use reserved column names.
* InnoDB's SQL parser:
- Add support for UNSIGNED types, EXIT keyword, quoted identifiers, user-function callbacks
for processing results of FETCH statements, bound literals, DATA_VARCHAR for bound literals.
- Allow bound literals of type non-INTEGER to be of length 0.
- Add make_flex.sh and update lexer/parser generation documentation.
- Add comment clarifying the difference between 'alias' and 'indirection' fields in sym_node_t.
- Remove never reached duplicate code in pars_set_dfield_type().
- Rewrite pars_info datatypes and APIs, add a few helper functions.
- Since the functions definitions in pars_info_t are accessed after pars_sql() returns
in the query graph execution stage, we can't free pars_info_t in pars_sql(). Instead,
make pars_sql() transfer ownership of pars_info_t to the created query graph, and
make que_graph_free() free it if needed.
- Allow access to system columns like DB_ROW_ID.
* Use bound literals in row_truncate_table_for_mysql, row_drop_table_for_mysql,
row_discard_tablespace_for_mysql, and row_rename_table_for_mysql.
* Setting an isolation level of the transaction to read committed weakens the locks for
this session similarly like the option innodb_locks_unsafe_for binlog. This patch removes
alnost all gap locking (used in next-key locking) and makes MySQL to release the row locks
on the rows which does not belong to result set. Additionally, nonlocking selects on
INSERT INTO SELECT, UPDATE ... (SELECT ...), and CREATE ... SELECT ... use a nonlocking
consistent read. If a binlog is used, then binlog format should be set to row based
binloging to make the execution of the complex SQL statements.
* Disable the statistic variables btr_search_n_hash_fail and n_hash_succ, n_hash_fail,
n_patt_succ, and n_searches of btr_search_t in builds without #ifdef UNIV_SEARCH_PERF_STAT.
* Make innodb.test faster. Group all consistent read test cases to a one test case and
wait their lock timeout after all have been send to the server. Decrease amount of rows
inserted in a certain test - this has no effect on the effectiveness of the test and
reduces the running time by ~10 sec. Remove temporary work-arounds from innodb.result
now that ALTER TABLE DROP FOREIGN KEY works once again.
* Make innodb_unsafe_binlog.test faster. Grout all consistent read test cases to a one
test case amd wait their lock timeout after all have been sent to the server. Remove
unnecessary option --loose_innodb_lock_wait_timeout.
* Print dictionary memory size in SHOW INNODB STATUS.
* Fix memory leaks in row_create_table_for_mysql() in rare corner cases.
* Remove code related to clustered tables. They were never implemented, and the
implementation would be challenging with ROW_FORMAT=COMPACT. Remove the table types
DICT_TABLE_CLUSTER_MEMBER and DICT_TABLE_CLUSTER and all related tests and functions.
dict_table_t: Remove mix_id, mix_len, mix_id_len, mix_id_buf, and cluster_name.
plan_t: Remove mixed_index.
dict_create_sys_tables_tuple(): Set MIX_ID=0, MIX_LEN=0, CLUSTER_NAME=NULL when
inserting into SYS_TABLES.
dict_tree_check_search_tuple(): Enclose in #ifdef UNIV_DEBUG.
* Move calling of thr_local_free() from trx_free_for_mysql() to
innobase_close_connection().
mysql-test/r/innodb.result:
Applied innodb-5.1-ss475 snapshot.
mysql-test/r/innodb_unsafe_binlog.result:
Applied innodb-5.1-ss475 snapshot.
mysql-test/t/innodb-master.opt:
Applied innodb-5.1-ss475 snapshot.
mysql-test/t/innodb.test:
Applied innodb-5.1-ss475 snapshot.
mysql-test/t/innodb_unsafe_binlog-master.opt:
Applied innodb-5.1-ss475 snapshot.
mysql-test/t/innodb_unsafe_binlog.test:
Applied innodb-5.1-ss475 snapshot.
sql/ha_innodb.cc:
Applied innodb-5.1-ss475 snapshot.
Do not use inlined functions in ha_innodb.cc.
Remove assertion ut_error which crashes the mysqld server
if it prints a warning about the adaptive latch.
storage/innobase/Makefile.am:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/btr/btr0btr.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/btr/btr0cur.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/btr/btr0pcur.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/btr/btr0sea.c:
Applied innodb-5.1-ss475 snapshot.
Fix compilation problem with non-C99 compilers.
storage/innobase/buf/buf0lru.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/cmakelists.txt:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/configure.in:
Applied innodb-5.1-ss475 snapshot.
Add disabled-by-default logic to switch GCC to a strict C89-mode.
Add -Werror-implicit-function_declaration to CFLAGS when using gcc.
storage/innobase/data/data0type.c:
Applied innodb-5.1-ss475 snapshot.
dtype_print(): Recognize DATA_FIXBINARY and DATA_BLOB types.
Print known flags from prtype. Use a switch statement instead
of else-if chain.
storage/innobase/dict/dict0crea.c:
Applied innodb-5.1-ss475 snapshot.
Use bound literals in all SQL statements instead of elaborately
constructing correctly allocated and quoted strings to pass the
data in ASCII form.
storage/innobase/dict/dict0dict.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/dict/dict0load.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/dict/dict0mem.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/eval/eval0proc.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/ibuf/ibuf0ibuf.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/btr0cur.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/btr0cur.ic:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/btr0sea.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/buf0lru.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/dict0dict.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/dict0dict.ic:
Applied innodb-5.1-ss475 snapshot.
Remove too strict assertions from some dict_table_t
accessor functions.
storage/innobase/include/dict0mem.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/eval0proc.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/hash0hash.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/lock0lock.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/mem0mem.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/page0page.ic:
Applied innodb-5.1-ss475 snapshot.
Remove UNIV_RELEASE_NOT_YET_STABLE and related checks.
storage/innobase/include/pars0grm.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/pars0pars.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/pars0sym.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/pars0types.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/que0que.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/row0mysql.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/row0sel.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/row0upd.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/trx0trx.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/univ.i:
Applied innodb-5.1-ss475 snapshot.
Remove UNIV_RELEASE_NOT_YET_STABLE and related checks.
When using GCC, use __inline__ instead of inline.
storage/innobase/include/ut0mem.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/lock/lock0lock.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/log/log0recv.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/mem/mem0dbg.c:
Applied innodb-5.1-ss475 snapshot.
Add (void*) cast when using the %p printf format specifier.
storage/innobase/mem/mem0mem.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/os/os0sync.c:
Applied innodb-5.1-ss475 snapshot.
Add (void*) cast when using the %p printf format specifier.
storage/innobase/pars/lexyy.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/pars/make_bison.sh:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/pars/pars0grm.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/pars/pars0grm.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/pars/pars0grm.y:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/pars/pars0lex.l:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/pars/pars0opt.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/pars/pars0pars.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/pars/pars0sym.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/que/que0que.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/row/row0ins.c:
Applied innodb-5.1-ss475 snapshot.
Remove a memory leak when trying to insert a duplicate record to a
clustered inedx comprising more than about 90 columns (Bug#18384).
row_ins_duplicate_error_in_clust(): Call mem_heap_free(heap) at
func_exit if needed.
storage/innobase/row/row0mysql.c:
Applied innodb-5.1-ss475 snapshot.
row_mysql_is_system_table(): Use strncmp, not memcmp, since we
don't know how long the input string is.
storage/innobase/row/row0sel.c:
Applied innodb-5.1-ss475 snapshot.
Remove UNIV_RELEASE_NOT_YET_STABLE and related checks.
row_sel_field_store_in_mysql_format(): Turn the assertions on
mbminlen, mbmaxlen, and templ->type into debug assertions.
fetch_step(): Print a more usefull error message when the cursor is closed.
storage/innobase/row/row0upd.c:
Applied innodb-5.1-ss475 snapshot.
row_upd_index_replace_new_col_vals_index_pos(): Add a parameter
order_only for limiting the replacement to the ordering fields
of the index.
storage/innobase/srv/srv0srv.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/sync/sync0arr.c:
Applied innodb-5.1-ss475 snapshot.
Add (void*) cast when using the %p printf format specifier.
storage/innobase/sync/sync0rw.c:
Applied innodb-5.1-ss475 snapshot.
Add (void*) cast when using the %p printf format specifier.
storage/innobase/sync/sync0sync.c:
Applied innodb-5.1-ss475 snapshot.
Add (void*) cast when using the %p printf format specifier.
storage/innobase/trx/trx0trx.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/ut/Makefile.am:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/ut/ut0mem.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/ut0vec.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/ut0vec.ic:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/pars/make_flex.sh:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/ut/ut0vec.c:
Applied innodb-5.1-ss475 snapshot.
2006-04-23 10:48:31 +02:00
set autocommit = 0;
SET SESSION TRANSACTION ISOLATION LEVEL SERIALIZABLE;
update t3 set b = (select b from t2 where a = d);
2008-10-03 14:24:19 +02:00
SET binlog_format='MIXED';
Applied innodb-5.1-ss475 snapshot.
* Fix BUG#15650: "DELETE with LEFT JOIN crashes server with innodb_locks_unsafe_for binlog"
* Fix BUG#17134: "Partitions: uncommitted changes are visible"
* Fix BUG#17992: "Partitions: InnoDB, somehow rotten table after UPDATE"
row0ins.c: MySQL's partitioned table code does not set preduilt->sql_stat_start right
if it does an insert in the same statement after doing a search first in the same
partition table. We now write trx id always to the buffer, not just when flag
sql_stat_start is on. This will waste CPU time very sightly.
* Fix BUG#18077: "InnoDB uses full explicit table locks in stored FUNCTION"
* Fix BUG#18238: "When locks exhaust the buffer pool, InnoDB does not roll back the trx"
* Fix BUG#18252" "Disk space leak in updates of InnoDB BLOB rows in 5.0 and 5.1"
* Fix BUG#18283: "When InnoDB returns error 'lock table full', MySQL can write to binlog too much"
* Fix BUG#18350: "Use consistent read in CREATE ... SELECT ... if innodb_locks_unsafe_for_binlog"
* Fix BUG#18384: "InnoDB memory leak on duplicate key errors in 5.0 if row has many columns"
* Fix BUG#18934: "InnoDB crashes when table uses column names like DB_ROW_ID"
Refuse tables that use reserved column names.
* InnoDB's SQL parser:
- Add support for UNSIGNED types, EXIT keyword, quoted identifiers, user-function callbacks
for processing results of FETCH statements, bound literals, DATA_VARCHAR for bound literals.
- Allow bound literals of type non-INTEGER to be of length 0.
- Add make_flex.sh and update lexer/parser generation documentation.
- Add comment clarifying the difference between 'alias' and 'indirection' fields in sym_node_t.
- Remove never reached duplicate code in pars_set_dfield_type().
- Rewrite pars_info datatypes and APIs, add a few helper functions.
- Since the functions definitions in pars_info_t are accessed after pars_sql() returns
in the query graph execution stage, we can't free pars_info_t in pars_sql(). Instead,
make pars_sql() transfer ownership of pars_info_t to the created query graph, and
make que_graph_free() free it if needed.
- Allow access to system columns like DB_ROW_ID.
* Use bound literals in row_truncate_table_for_mysql, row_drop_table_for_mysql,
row_discard_tablespace_for_mysql, and row_rename_table_for_mysql.
* Setting an isolation level of the transaction to read committed weakens the locks for
this session similarly like the option innodb_locks_unsafe_for binlog. This patch removes
alnost all gap locking (used in next-key locking) and makes MySQL to release the row locks
on the rows which does not belong to result set. Additionally, nonlocking selects on
INSERT INTO SELECT, UPDATE ... (SELECT ...), and CREATE ... SELECT ... use a nonlocking
consistent read. If a binlog is used, then binlog format should be set to row based
binloging to make the execution of the complex SQL statements.
* Disable the statistic variables btr_search_n_hash_fail and n_hash_succ, n_hash_fail,
n_patt_succ, and n_searches of btr_search_t in builds without #ifdef UNIV_SEARCH_PERF_STAT.
* Make innodb.test faster. Group all consistent read test cases to a one test case and
wait their lock timeout after all have been send to the server. Decrease amount of rows
inserted in a certain test - this has no effect on the effectiveness of the test and
reduces the running time by ~10 sec. Remove temporary work-arounds from innodb.result
now that ALTER TABLE DROP FOREIGN KEY works once again.
* Make innodb_unsafe_binlog.test faster. Grout all consistent read test cases to a one
test case amd wait their lock timeout after all have been sent to the server. Remove
unnecessary option --loose_innodb_lock_wait_timeout.
* Print dictionary memory size in SHOW INNODB STATUS.
* Fix memory leaks in row_create_table_for_mysql() in rare corner cases.
* Remove code related to clustered tables. They were never implemented, and the
implementation would be challenging with ROW_FORMAT=COMPACT. Remove the table types
DICT_TABLE_CLUSTER_MEMBER and DICT_TABLE_CLUSTER and all related tests and functions.
dict_table_t: Remove mix_id, mix_len, mix_id_len, mix_id_buf, and cluster_name.
plan_t: Remove mixed_index.
dict_create_sys_tables_tuple(): Set MIX_ID=0, MIX_LEN=0, CLUSTER_NAME=NULL when
inserting into SYS_TABLES.
dict_tree_check_search_tuple(): Enclose in #ifdef UNIV_DEBUG.
* Move calling of thr_local_free() from trx_free_for_mysql() to
innobase_close_connection().
mysql-test/r/innodb.result:
Applied innodb-5.1-ss475 snapshot.
mysql-test/r/innodb_unsafe_binlog.result:
Applied innodb-5.1-ss475 snapshot.
mysql-test/t/innodb-master.opt:
Applied innodb-5.1-ss475 snapshot.
mysql-test/t/innodb.test:
Applied innodb-5.1-ss475 snapshot.
mysql-test/t/innodb_unsafe_binlog-master.opt:
Applied innodb-5.1-ss475 snapshot.
mysql-test/t/innodb_unsafe_binlog.test:
Applied innodb-5.1-ss475 snapshot.
sql/ha_innodb.cc:
Applied innodb-5.1-ss475 snapshot.
Do not use inlined functions in ha_innodb.cc.
Remove assertion ut_error which crashes the mysqld server
if it prints a warning about the adaptive latch.
storage/innobase/Makefile.am:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/btr/btr0btr.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/btr/btr0cur.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/btr/btr0pcur.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/btr/btr0sea.c:
Applied innodb-5.1-ss475 snapshot.
Fix compilation problem with non-C99 compilers.
storage/innobase/buf/buf0lru.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/cmakelists.txt:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/configure.in:
Applied innodb-5.1-ss475 snapshot.
Add disabled-by-default logic to switch GCC to a strict C89-mode.
Add -Werror-implicit-function_declaration to CFLAGS when using gcc.
storage/innobase/data/data0type.c:
Applied innodb-5.1-ss475 snapshot.
dtype_print(): Recognize DATA_FIXBINARY and DATA_BLOB types.
Print known flags from prtype. Use a switch statement instead
of else-if chain.
storage/innobase/dict/dict0crea.c:
Applied innodb-5.1-ss475 snapshot.
Use bound literals in all SQL statements instead of elaborately
constructing correctly allocated and quoted strings to pass the
data in ASCII form.
storage/innobase/dict/dict0dict.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/dict/dict0load.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/dict/dict0mem.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/eval/eval0proc.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/ibuf/ibuf0ibuf.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/btr0cur.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/btr0cur.ic:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/btr0sea.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/buf0lru.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/dict0dict.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/dict0dict.ic:
Applied innodb-5.1-ss475 snapshot.
Remove too strict assertions from some dict_table_t
accessor functions.
storage/innobase/include/dict0mem.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/eval0proc.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/hash0hash.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/lock0lock.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/mem0mem.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/page0page.ic:
Applied innodb-5.1-ss475 snapshot.
Remove UNIV_RELEASE_NOT_YET_STABLE and related checks.
storage/innobase/include/pars0grm.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/pars0pars.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/pars0sym.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/pars0types.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/que0que.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/row0mysql.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/row0sel.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/row0upd.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/trx0trx.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/univ.i:
Applied innodb-5.1-ss475 snapshot.
Remove UNIV_RELEASE_NOT_YET_STABLE and related checks.
When using GCC, use __inline__ instead of inline.
storage/innobase/include/ut0mem.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/lock/lock0lock.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/log/log0recv.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/mem/mem0dbg.c:
Applied innodb-5.1-ss475 snapshot.
Add (void*) cast when using the %p printf format specifier.
storage/innobase/mem/mem0mem.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/os/os0sync.c:
Applied innodb-5.1-ss475 snapshot.
Add (void*) cast when using the %p printf format specifier.
storage/innobase/pars/lexyy.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/pars/make_bison.sh:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/pars/pars0grm.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/pars/pars0grm.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/pars/pars0grm.y:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/pars/pars0lex.l:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/pars/pars0opt.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/pars/pars0pars.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/pars/pars0sym.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/que/que0que.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/row/row0ins.c:
Applied innodb-5.1-ss475 snapshot.
Remove a memory leak when trying to insert a duplicate record to a
clustered inedx comprising more than about 90 columns (Bug#18384).
row_ins_duplicate_error_in_clust(): Call mem_heap_free(heap) at
func_exit if needed.
storage/innobase/row/row0mysql.c:
Applied innodb-5.1-ss475 snapshot.
row_mysql_is_system_table(): Use strncmp, not memcmp, since we
don't know how long the input string is.
storage/innobase/row/row0sel.c:
Applied innodb-5.1-ss475 snapshot.
Remove UNIV_RELEASE_NOT_YET_STABLE and related checks.
row_sel_field_store_in_mysql_format(): Turn the assertions on
mbminlen, mbmaxlen, and templ->type into debug assertions.
fetch_step(): Print a more usefull error message when the cursor is closed.
storage/innobase/row/row0upd.c:
Applied innodb-5.1-ss475 snapshot.
row_upd_index_replace_new_col_vals_index_pos(): Add a parameter
order_only for limiting the replacement to the ordering fields
of the index.
storage/innobase/srv/srv0srv.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/sync/sync0arr.c:
Applied innodb-5.1-ss475 snapshot.
Add (void*) cast when using the %p printf format specifier.
storage/innobase/sync/sync0rw.c:
Applied innodb-5.1-ss475 snapshot.
Add (void*) cast when using the %p printf format specifier.
storage/innobase/sync/sync0sync.c:
Applied innodb-5.1-ss475 snapshot.
Add (void*) cast when using the %p printf format specifier.
storage/innobase/trx/trx0trx.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/ut/Makefile.am:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/ut/ut0mem.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/ut0vec.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/ut0vec.ic:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/pars/make_flex.sh:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/ut/ut0vec.c:
Applied innodb-5.1-ss475 snapshot.
2006-04-23 10:48:31 +02:00
set autocommit = 0;
SET SESSION TRANSACTION ISOLATION LEVEL SERIALIZABLE;
create table t4(a int not null, b int, primary key(a)) engine=innodb select * from t2;
2008-10-03 14:24:19 +02:00
SET binlog_format='MIXED';
Applied innodb-5.1-ss475 snapshot.
* Fix BUG#15650: "DELETE with LEFT JOIN crashes server with innodb_locks_unsafe_for binlog"
* Fix BUG#17134: "Partitions: uncommitted changes are visible"
* Fix BUG#17992: "Partitions: InnoDB, somehow rotten table after UPDATE"
row0ins.c: MySQL's partitioned table code does not set preduilt->sql_stat_start right
if it does an insert in the same statement after doing a search first in the same
partition table. We now write trx id always to the buffer, not just when flag
sql_stat_start is on. This will waste CPU time very sightly.
* Fix BUG#18077: "InnoDB uses full explicit table locks in stored FUNCTION"
* Fix BUG#18238: "When locks exhaust the buffer pool, InnoDB does not roll back the trx"
* Fix BUG#18252" "Disk space leak in updates of InnoDB BLOB rows in 5.0 and 5.1"
* Fix BUG#18283: "When InnoDB returns error 'lock table full', MySQL can write to binlog too much"
* Fix BUG#18350: "Use consistent read in CREATE ... SELECT ... if innodb_locks_unsafe_for_binlog"
* Fix BUG#18384: "InnoDB memory leak on duplicate key errors in 5.0 if row has many columns"
* Fix BUG#18934: "InnoDB crashes when table uses column names like DB_ROW_ID"
Refuse tables that use reserved column names.
* InnoDB's SQL parser:
- Add support for UNSIGNED types, EXIT keyword, quoted identifiers, user-function callbacks
for processing results of FETCH statements, bound literals, DATA_VARCHAR for bound literals.
- Allow bound literals of type non-INTEGER to be of length 0.
- Add make_flex.sh and update lexer/parser generation documentation.
- Add comment clarifying the difference between 'alias' and 'indirection' fields in sym_node_t.
- Remove never reached duplicate code in pars_set_dfield_type().
- Rewrite pars_info datatypes and APIs, add a few helper functions.
- Since the functions definitions in pars_info_t are accessed after pars_sql() returns
in the query graph execution stage, we can't free pars_info_t in pars_sql(). Instead,
make pars_sql() transfer ownership of pars_info_t to the created query graph, and
make que_graph_free() free it if needed.
- Allow access to system columns like DB_ROW_ID.
* Use bound literals in row_truncate_table_for_mysql, row_drop_table_for_mysql,
row_discard_tablespace_for_mysql, and row_rename_table_for_mysql.
* Setting an isolation level of the transaction to read committed weakens the locks for
this session similarly like the option innodb_locks_unsafe_for binlog. This patch removes
alnost all gap locking (used in next-key locking) and makes MySQL to release the row locks
on the rows which does not belong to result set. Additionally, nonlocking selects on
INSERT INTO SELECT, UPDATE ... (SELECT ...), and CREATE ... SELECT ... use a nonlocking
consistent read. If a binlog is used, then binlog format should be set to row based
binloging to make the execution of the complex SQL statements.
* Disable the statistic variables btr_search_n_hash_fail and n_hash_succ, n_hash_fail,
n_patt_succ, and n_searches of btr_search_t in builds without #ifdef UNIV_SEARCH_PERF_STAT.
* Make innodb.test faster. Group all consistent read test cases to a one test case and
wait their lock timeout after all have been send to the server. Decrease amount of rows
inserted in a certain test - this has no effect on the effectiveness of the test and
reduces the running time by ~10 sec. Remove temporary work-arounds from innodb.result
now that ALTER TABLE DROP FOREIGN KEY works once again.
* Make innodb_unsafe_binlog.test faster. Grout all consistent read test cases to a one
test case amd wait their lock timeout after all have been sent to the server. Remove
unnecessary option --loose_innodb_lock_wait_timeout.
* Print dictionary memory size in SHOW INNODB STATUS.
* Fix memory leaks in row_create_table_for_mysql() in rare corner cases.
* Remove code related to clustered tables. They were never implemented, and the
implementation would be challenging with ROW_FORMAT=COMPACT. Remove the table types
DICT_TABLE_CLUSTER_MEMBER and DICT_TABLE_CLUSTER and all related tests and functions.
dict_table_t: Remove mix_id, mix_len, mix_id_len, mix_id_buf, and cluster_name.
plan_t: Remove mixed_index.
dict_create_sys_tables_tuple(): Set MIX_ID=0, MIX_LEN=0, CLUSTER_NAME=NULL when
inserting into SYS_TABLES.
dict_tree_check_search_tuple(): Enclose in #ifdef UNIV_DEBUG.
* Move calling of thr_local_free() from trx_free_for_mysql() to
innobase_close_connection().
mysql-test/r/innodb.result:
Applied innodb-5.1-ss475 snapshot.
mysql-test/r/innodb_unsafe_binlog.result:
Applied innodb-5.1-ss475 snapshot.
mysql-test/t/innodb-master.opt:
Applied innodb-5.1-ss475 snapshot.
mysql-test/t/innodb.test:
Applied innodb-5.1-ss475 snapshot.
mysql-test/t/innodb_unsafe_binlog-master.opt:
Applied innodb-5.1-ss475 snapshot.
mysql-test/t/innodb_unsafe_binlog.test:
Applied innodb-5.1-ss475 snapshot.
sql/ha_innodb.cc:
Applied innodb-5.1-ss475 snapshot.
Do not use inlined functions in ha_innodb.cc.
Remove assertion ut_error which crashes the mysqld server
if it prints a warning about the adaptive latch.
storage/innobase/Makefile.am:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/btr/btr0btr.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/btr/btr0cur.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/btr/btr0pcur.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/btr/btr0sea.c:
Applied innodb-5.1-ss475 snapshot.
Fix compilation problem with non-C99 compilers.
storage/innobase/buf/buf0lru.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/cmakelists.txt:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/configure.in:
Applied innodb-5.1-ss475 snapshot.
Add disabled-by-default logic to switch GCC to a strict C89-mode.
Add -Werror-implicit-function_declaration to CFLAGS when using gcc.
storage/innobase/data/data0type.c:
Applied innodb-5.1-ss475 snapshot.
dtype_print(): Recognize DATA_FIXBINARY and DATA_BLOB types.
Print known flags from prtype. Use a switch statement instead
of else-if chain.
storage/innobase/dict/dict0crea.c:
Applied innodb-5.1-ss475 snapshot.
Use bound literals in all SQL statements instead of elaborately
constructing correctly allocated and quoted strings to pass the
data in ASCII form.
storage/innobase/dict/dict0dict.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/dict/dict0load.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/dict/dict0mem.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/eval/eval0proc.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/ibuf/ibuf0ibuf.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/btr0cur.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/btr0cur.ic:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/btr0sea.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/buf0lru.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/dict0dict.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/dict0dict.ic:
Applied innodb-5.1-ss475 snapshot.
Remove too strict assertions from some dict_table_t
accessor functions.
storage/innobase/include/dict0mem.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/eval0proc.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/hash0hash.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/lock0lock.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/mem0mem.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/page0page.ic:
Applied innodb-5.1-ss475 snapshot.
Remove UNIV_RELEASE_NOT_YET_STABLE and related checks.
storage/innobase/include/pars0grm.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/pars0pars.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/pars0sym.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/pars0types.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/que0que.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/row0mysql.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/row0sel.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/row0upd.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/trx0trx.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/univ.i:
Applied innodb-5.1-ss475 snapshot.
Remove UNIV_RELEASE_NOT_YET_STABLE and related checks.
When using GCC, use __inline__ instead of inline.
storage/innobase/include/ut0mem.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/lock/lock0lock.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/log/log0recv.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/mem/mem0dbg.c:
Applied innodb-5.1-ss475 snapshot.
Add (void*) cast when using the %p printf format specifier.
storage/innobase/mem/mem0mem.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/os/os0sync.c:
Applied innodb-5.1-ss475 snapshot.
Add (void*) cast when using the %p printf format specifier.
storage/innobase/pars/lexyy.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/pars/make_bison.sh:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/pars/pars0grm.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/pars/pars0grm.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/pars/pars0grm.y:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/pars/pars0lex.l:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/pars/pars0opt.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/pars/pars0pars.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/pars/pars0sym.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/que/que0que.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/row/row0ins.c:
Applied innodb-5.1-ss475 snapshot.
Remove a memory leak when trying to insert a duplicate record to a
clustered inedx comprising more than about 90 columns (Bug#18384).
row_ins_duplicate_error_in_clust(): Call mem_heap_free(heap) at
func_exit if needed.
storage/innobase/row/row0mysql.c:
Applied innodb-5.1-ss475 snapshot.
row_mysql_is_system_table(): Use strncmp, not memcmp, since we
don't know how long the input string is.
storage/innobase/row/row0sel.c:
Applied innodb-5.1-ss475 snapshot.
Remove UNIV_RELEASE_NOT_YET_STABLE and related checks.
row_sel_field_store_in_mysql_format(): Turn the assertions on
mbminlen, mbmaxlen, and templ->type into debug assertions.
fetch_step(): Print a more usefull error message when the cursor is closed.
storage/innobase/row/row0upd.c:
Applied innodb-5.1-ss475 snapshot.
row_upd_index_replace_new_col_vals_index_pos(): Add a parameter
order_only for limiting the replacement to the ordering fields
of the index.
storage/innobase/srv/srv0srv.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/sync/sync0arr.c:
Applied innodb-5.1-ss475 snapshot.
Add (void*) cast when using the %p printf format specifier.
storage/innobase/sync/sync0rw.c:
Applied innodb-5.1-ss475 snapshot.
Add (void*) cast when using the %p printf format specifier.
storage/innobase/sync/sync0sync.c:
Applied innodb-5.1-ss475 snapshot.
Add (void*) cast when using the %p printf format specifier.
storage/innobase/trx/trx0trx.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/ut/Makefile.am:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/ut/ut0mem.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/ut0vec.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/ut0vec.ic:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/pars/make_flex.sh:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/ut/ut0vec.c:
Applied innodb-5.1-ss475 snapshot.
2006-04-23 10:48:31 +02:00
set autocommit = 0;
SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED;
insert into t5 (select * from t2 lock in share mode);
2008-10-03 14:24:19 +02:00
SET binlog_format='MIXED';
Applied innodb-5.1-ss475 snapshot.
* Fix BUG#15650: "DELETE with LEFT JOIN crashes server with innodb_locks_unsafe_for binlog"
* Fix BUG#17134: "Partitions: uncommitted changes are visible"
* Fix BUG#17992: "Partitions: InnoDB, somehow rotten table after UPDATE"
row0ins.c: MySQL's partitioned table code does not set preduilt->sql_stat_start right
if it does an insert in the same statement after doing a search first in the same
partition table. We now write trx id always to the buffer, not just when flag
sql_stat_start is on. This will waste CPU time very sightly.
* Fix BUG#18077: "InnoDB uses full explicit table locks in stored FUNCTION"
* Fix BUG#18238: "When locks exhaust the buffer pool, InnoDB does not roll back the trx"
* Fix BUG#18252" "Disk space leak in updates of InnoDB BLOB rows in 5.0 and 5.1"
* Fix BUG#18283: "When InnoDB returns error 'lock table full', MySQL can write to binlog too much"
* Fix BUG#18350: "Use consistent read in CREATE ... SELECT ... if innodb_locks_unsafe_for_binlog"
* Fix BUG#18384: "InnoDB memory leak on duplicate key errors in 5.0 if row has many columns"
* Fix BUG#18934: "InnoDB crashes when table uses column names like DB_ROW_ID"
Refuse tables that use reserved column names.
* InnoDB's SQL parser:
- Add support for UNSIGNED types, EXIT keyword, quoted identifiers, user-function callbacks
for processing results of FETCH statements, bound literals, DATA_VARCHAR for bound literals.
- Allow bound literals of type non-INTEGER to be of length 0.
- Add make_flex.sh and update lexer/parser generation documentation.
- Add comment clarifying the difference between 'alias' and 'indirection' fields in sym_node_t.
- Remove never reached duplicate code in pars_set_dfield_type().
- Rewrite pars_info datatypes and APIs, add a few helper functions.
- Since the functions definitions in pars_info_t are accessed after pars_sql() returns
in the query graph execution stage, we can't free pars_info_t in pars_sql(). Instead,
make pars_sql() transfer ownership of pars_info_t to the created query graph, and
make que_graph_free() free it if needed.
- Allow access to system columns like DB_ROW_ID.
* Use bound literals in row_truncate_table_for_mysql, row_drop_table_for_mysql,
row_discard_tablespace_for_mysql, and row_rename_table_for_mysql.
* Setting an isolation level of the transaction to read committed weakens the locks for
this session similarly like the option innodb_locks_unsafe_for binlog. This patch removes
alnost all gap locking (used in next-key locking) and makes MySQL to release the row locks
on the rows which does not belong to result set. Additionally, nonlocking selects on
INSERT INTO SELECT, UPDATE ... (SELECT ...), and CREATE ... SELECT ... use a nonlocking
consistent read. If a binlog is used, then binlog format should be set to row based
binloging to make the execution of the complex SQL statements.
* Disable the statistic variables btr_search_n_hash_fail and n_hash_succ, n_hash_fail,
n_patt_succ, and n_searches of btr_search_t in builds without #ifdef UNIV_SEARCH_PERF_STAT.
* Make innodb.test faster. Group all consistent read test cases to a one test case and
wait their lock timeout after all have been send to the server. Decrease amount of rows
inserted in a certain test - this has no effect on the effectiveness of the test and
reduces the running time by ~10 sec. Remove temporary work-arounds from innodb.result
now that ALTER TABLE DROP FOREIGN KEY works once again.
* Make innodb_unsafe_binlog.test faster. Grout all consistent read test cases to a one
test case amd wait their lock timeout after all have been sent to the server. Remove
unnecessary option --loose_innodb_lock_wait_timeout.
* Print dictionary memory size in SHOW INNODB STATUS.
* Fix memory leaks in row_create_table_for_mysql() in rare corner cases.
* Remove code related to clustered tables. They were never implemented, and the
implementation would be challenging with ROW_FORMAT=COMPACT. Remove the table types
DICT_TABLE_CLUSTER_MEMBER and DICT_TABLE_CLUSTER and all related tests and functions.
dict_table_t: Remove mix_id, mix_len, mix_id_len, mix_id_buf, and cluster_name.
plan_t: Remove mixed_index.
dict_create_sys_tables_tuple(): Set MIX_ID=0, MIX_LEN=0, CLUSTER_NAME=NULL when
inserting into SYS_TABLES.
dict_tree_check_search_tuple(): Enclose in #ifdef UNIV_DEBUG.
* Move calling of thr_local_free() from trx_free_for_mysql() to
innobase_close_connection().
mysql-test/r/innodb.result:
Applied innodb-5.1-ss475 snapshot.
mysql-test/r/innodb_unsafe_binlog.result:
Applied innodb-5.1-ss475 snapshot.
mysql-test/t/innodb-master.opt:
Applied innodb-5.1-ss475 snapshot.
mysql-test/t/innodb.test:
Applied innodb-5.1-ss475 snapshot.
mysql-test/t/innodb_unsafe_binlog-master.opt:
Applied innodb-5.1-ss475 snapshot.
mysql-test/t/innodb_unsafe_binlog.test:
Applied innodb-5.1-ss475 snapshot.
sql/ha_innodb.cc:
Applied innodb-5.1-ss475 snapshot.
Do not use inlined functions in ha_innodb.cc.
Remove assertion ut_error which crashes the mysqld server
if it prints a warning about the adaptive latch.
storage/innobase/Makefile.am:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/btr/btr0btr.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/btr/btr0cur.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/btr/btr0pcur.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/btr/btr0sea.c:
Applied innodb-5.1-ss475 snapshot.
Fix compilation problem with non-C99 compilers.
storage/innobase/buf/buf0lru.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/cmakelists.txt:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/configure.in:
Applied innodb-5.1-ss475 snapshot.
Add disabled-by-default logic to switch GCC to a strict C89-mode.
Add -Werror-implicit-function_declaration to CFLAGS when using gcc.
storage/innobase/data/data0type.c:
Applied innodb-5.1-ss475 snapshot.
dtype_print(): Recognize DATA_FIXBINARY and DATA_BLOB types.
Print known flags from prtype. Use a switch statement instead
of else-if chain.
storage/innobase/dict/dict0crea.c:
Applied innodb-5.1-ss475 snapshot.
Use bound literals in all SQL statements instead of elaborately
constructing correctly allocated and quoted strings to pass the
data in ASCII form.
storage/innobase/dict/dict0dict.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/dict/dict0load.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/dict/dict0mem.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/eval/eval0proc.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/ibuf/ibuf0ibuf.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/btr0cur.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/btr0cur.ic:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/btr0sea.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/buf0lru.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/dict0dict.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/dict0dict.ic:
Applied innodb-5.1-ss475 snapshot.
Remove too strict assertions from some dict_table_t
accessor functions.
storage/innobase/include/dict0mem.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/eval0proc.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/hash0hash.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/lock0lock.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/mem0mem.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/page0page.ic:
Applied innodb-5.1-ss475 snapshot.
Remove UNIV_RELEASE_NOT_YET_STABLE and related checks.
storage/innobase/include/pars0grm.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/pars0pars.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/pars0sym.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/pars0types.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/que0que.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/row0mysql.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/row0sel.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/row0upd.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/trx0trx.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/univ.i:
Applied innodb-5.1-ss475 snapshot.
Remove UNIV_RELEASE_NOT_YET_STABLE and related checks.
When using GCC, use __inline__ instead of inline.
storage/innobase/include/ut0mem.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/lock/lock0lock.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/log/log0recv.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/mem/mem0dbg.c:
Applied innodb-5.1-ss475 snapshot.
Add (void*) cast when using the %p printf format specifier.
storage/innobase/mem/mem0mem.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/os/os0sync.c:
Applied innodb-5.1-ss475 snapshot.
Add (void*) cast when using the %p printf format specifier.
storage/innobase/pars/lexyy.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/pars/make_bison.sh:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/pars/pars0grm.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/pars/pars0grm.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/pars/pars0grm.y:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/pars/pars0lex.l:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/pars/pars0opt.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/pars/pars0pars.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/pars/pars0sym.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/que/que0que.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/row/row0ins.c:
Applied innodb-5.1-ss475 snapshot.
Remove a memory leak when trying to insert a duplicate record to a
clustered inedx comprising more than about 90 columns (Bug#18384).
row_ins_duplicate_error_in_clust(): Call mem_heap_free(heap) at
func_exit if needed.
storage/innobase/row/row0mysql.c:
Applied innodb-5.1-ss475 snapshot.
row_mysql_is_system_table(): Use strncmp, not memcmp, since we
don't know how long the input string is.
storage/innobase/row/row0sel.c:
Applied innodb-5.1-ss475 snapshot.
Remove UNIV_RELEASE_NOT_YET_STABLE and related checks.
row_sel_field_store_in_mysql_format(): Turn the assertions on
mbminlen, mbmaxlen, and templ->type into debug assertions.
fetch_step(): Print a more usefull error message when the cursor is closed.
storage/innobase/row/row0upd.c:
Applied innodb-5.1-ss475 snapshot.
row_upd_index_replace_new_col_vals_index_pos(): Add a parameter
order_only for limiting the replacement to the ordering fields
of the index.
storage/innobase/srv/srv0srv.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/sync/sync0arr.c:
Applied innodb-5.1-ss475 snapshot.
Add (void*) cast when using the %p printf format specifier.
storage/innobase/sync/sync0rw.c:
Applied innodb-5.1-ss475 snapshot.
Add (void*) cast when using the %p printf format specifier.
storage/innobase/sync/sync0sync.c:
Applied innodb-5.1-ss475 snapshot.
Add (void*) cast when using the %p printf format specifier.
storage/innobase/trx/trx0trx.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/ut/Makefile.am:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/ut/ut0mem.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/ut0vec.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/ut0vec.ic:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/pars/make_flex.sh:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/ut/ut0vec.c:
Applied innodb-5.1-ss475 snapshot.
2006-04-23 10:48:31 +02:00
set autocommit = 0;
SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED;
update t6 set e = (select b from t2 where a = d lock in share mode);
2008-10-03 14:24:19 +02:00
SET binlog_format='MIXED';
Applied innodb-5.1-ss475 snapshot.
* Fix BUG#15650: "DELETE with LEFT JOIN crashes server with innodb_locks_unsafe_for binlog"
* Fix BUG#17134: "Partitions: uncommitted changes are visible"
* Fix BUG#17992: "Partitions: InnoDB, somehow rotten table after UPDATE"
row0ins.c: MySQL's partitioned table code does not set preduilt->sql_stat_start right
if it does an insert in the same statement after doing a search first in the same
partition table. We now write trx id always to the buffer, not just when flag
sql_stat_start is on. This will waste CPU time very sightly.
* Fix BUG#18077: "InnoDB uses full explicit table locks in stored FUNCTION"
* Fix BUG#18238: "When locks exhaust the buffer pool, InnoDB does not roll back the trx"
* Fix BUG#18252" "Disk space leak in updates of InnoDB BLOB rows in 5.0 and 5.1"
* Fix BUG#18283: "When InnoDB returns error 'lock table full', MySQL can write to binlog too much"
* Fix BUG#18350: "Use consistent read in CREATE ... SELECT ... if innodb_locks_unsafe_for_binlog"
* Fix BUG#18384: "InnoDB memory leak on duplicate key errors in 5.0 if row has many columns"
* Fix BUG#18934: "InnoDB crashes when table uses column names like DB_ROW_ID"
Refuse tables that use reserved column names.
* InnoDB's SQL parser:
- Add support for UNSIGNED types, EXIT keyword, quoted identifiers, user-function callbacks
for processing results of FETCH statements, bound literals, DATA_VARCHAR for bound literals.
- Allow bound literals of type non-INTEGER to be of length 0.
- Add make_flex.sh and update lexer/parser generation documentation.
- Add comment clarifying the difference between 'alias' and 'indirection' fields in sym_node_t.
- Remove never reached duplicate code in pars_set_dfield_type().
- Rewrite pars_info datatypes and APIs, add a few helper functions.
- Since the functions definitions in pars_info_t are accessed after pars_sql() returns
in the query graph execution stage, we can't free pars_info_t in pars_sql(). Instead,
make pars_sql() transfer ownership of pars_info_t to the created query graph, and
make que_graph_free() free it if needed.
- Allow access to system columns like DB_ROW_ID.
* Use bound literals in row_truncate_table_for_mysql, row_drop_table_for_mysql,
row_discard_tablespace_for_mysql, and row_rename_table_for_mysql.
* Setting an isolation level of the transaction to read committed weakens the locks for
this session similarly like the option innodb_locks_unsafe_for binlog. This patch removes
alnost all gap locking (used in next-key locking) and makes MySQL to release the row locks
on the rows which does not belong to result set. Additionally, nonlocking selects on
INSERT INTO SELECT, UPDATE ... (SELECT ...), and CREATE ... SELECT ... use a nonlocking
consistent read. If a binlog is used, then binlog format should be set to row based
binloging to make the execution of the complex SQL statements.
* Disable the statistic variables btr_search_n_hash_fail and n_hash_succ, n_hash_fail,
n_patt_succ, and n_searches of btr_search_t in builds without #ifdef UNIV_SEARCH_PERF_STAT.
* Make innodb.test faster. Group all consistent read test cases to a one test case and
wait their lock timeout after all have been send to the server. Decrease amount of rows
inserted in a certain test - this has no effect on the effectiveness of the test and
reduces the running time by ~10 sec. Remove temporary work-arounds from innodb.result
now that ALTER TABLE DROP FOREIGN KEY works once again.
* Make innodb_unsafe_binlog.test faster. Grout all consistent read test cases to a one
test case amd wait their lock timeout after all have been sent to the server. Remove
unnecessary option --loose_innodb_lock_wait_timeout.
* Print dictionary memory size in SHOW INNODB STATUS.
* Fix memory leaks in row_create_table_for_mysql() in rare corner cases.
* Remove code related to clustered tables. They were never implemented, and the
implementation would be challenging with ROW_FORMAT=COMPACT. Remove the table types
DICT_TABLE_CLUSTER_MEMBER and DICT_TABLE_CLUSTER and all related tests and functions.
dict_table_t: Remove mix_id, mix_len, mix_id_len, mix_id_buf, and cluster_name.
plan_t: Remove mixed_index.
dict_create_sys_tables_tuple(): Set MIX_ID=0, MIX_LEN=0, CLUSTER_NAME=NULL when
inserting into SYS_TABLES.
dict_tree_check_search_tuple(): Enclose in #ifdef UNIV_DEBUG.
* Move calling of thr_local_free() from trx_free_for_mysql() to
innobase_close_connection().
mysql-test/r/innodb.result:
Applied innodb-5.1-ss475 snapshot.
mysql-test/r/innodb_unsafe_binlog.result:
Applied innodb-5.1-ss475 snapshot.
mysql-test/t/innodb-master.opt:
Applied innodb-5.1-ss475 snapshot.
mysql-test/t/innodb.test:
Applied innodb-5.1-ss475 snapshot.
mysql-test/t/innodb_unsafe_binlog-master.opt:
Applied innodb-5.1-ss475 snapshot.
mysql-test/t/innodb_unsafe_binlog.test:
Applied innodb-5.1-ss475 snapshot.
sql/ha_innodb.cc:
Applied innodb-5.1-ss475 snapshot.
Do not use inlined functions in ha_innodb.cc.
Remove assertion ut_error which crashes the mysqld server
if it prints a warning about the adaptive latch.
storage/innobase/Makefile.am:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/btr/btr0btr.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/btr/btr0cur.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/btr/btr0pcur.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/btr/btr0sea.c:
Applied innodb-5.1-ss475 snapshot.
Fix compilation problem with non-C99 compilers.
storage/innobase/buf/buf0lru.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/cmakelists.txt:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/configure.in:
Applied innodb-5.1-ss475 snapshot.
Add disabled-by-default logic to switch GCC to a strict C89-mode.
Add -Werror-implicit-function_declaration to CFLAGS when using gcc.
storage/innobase/data/data0type.c:
Applied innodb-5.1-ss475 snapshot.
dtype_print(): Recognize DATA_FIXBINARY and DATA_BLOB types.
Print known flags from prtype. Use a switch statement instead
of else-if chain.
storage/innobase/dict/dict0crea.c:
Applied innodb-5.1-ss475 snapshot.
Use bound literals in all SQL statements instead of elaborately
constructing correctly allocated and quoted strings to pass the
data in ASCII form.
storage/innobase/dict/dict0dict.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/dict/dict0load.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/dict/dict0mem.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/eval/eval0proc.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/ibuf/ibuf0ibuf.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/btr0cur.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/btr0cur.ic:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/btr0sea.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/buf0lru.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/dict0dict.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/dict0dict.ic:
Applied innodb-5.1-ss475 snapshot.
Remove too strict assertions from some dict_table_t
accessor functions.
storage/innobase/include/dict0mem.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/eval0proc.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/hash0hash.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/lock0lock.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/mem0mem.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/page0page.ic:
Applied innodb-5.1-ss475 snapshot.
Remove UNIV_RELEASE_NOT_YET_STABLE and related checks.
storage/innobase/include/pars0grm.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/pars0pars.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/pars0sym.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/pars0types.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/que0que.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/row0mysql.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/row0sel.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/row0upd.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/trx0trx.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/univ.i:
Applied innodb-5.1-ss475 snapshot.
Remove UNIV_RELEASE_NOT_YET_STABLE and related checks.
When using GCC, use __inline__ instead of inline.
storage/innobase/include/ut0mem.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/lock/lock0lock.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/log/log0recv.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/mem/mem0dbg.c:
Applied innodb-5.1-ss475 snapshot.
Add (void*) cast when using the %p printf format specifier.
storage/innobase/mem/mem0mem.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/os/os0sync.c:
Applied innodb-5.1-ss475 snapshot.
Add (void*) cast when using the %p printf format specifier.
storage/innobase/pars/lexyy.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/pars/make_bison.sh:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/pars/pars0grm.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/pars/pars0grm.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/pars/pars0grm.y:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/pars/pars0lex.l:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/pars/pars0opt.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/pars/pars0pars.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/pars/pars0sym.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/que/que0que.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/row/row0ins.c:
Applied innodb-5.1-ss475 snapshot.
Remove a memory leak when trying to insert a duplicate record to a
clustered inedx comprising more than about 90 columns (Bug#18384).
row_ins_duplicate_error_in_clust(): Call mem_heap_free(heap) at
func_exit if needed.
storage/innobase/row/row0mysql.c:
Applied innodb-5.1-ss475 snapshot.
row_mysql_is_system_table(): Use strncmp, not memcmp, since we
don't know how long the input string is.
storage/innobase/row/row0sel.c:
Applied innodb-5.1-ss475 snapshot.
Remove UNIV_RELEASE_NOT_YET_STABLE and related checks.
row_sel_field_store_in_mysql_format(): Turn the assertions on
mbminlen, mbmaxlen, and templ->type into debug assertions.
fetch_step(): Print a more usefull error message when the cursor is closed.
storage/innobase/row/row0upd.c:
Applied innodb-5.1-ss475 snapshot.
row_upd_index_replace_new_col_vals_index_pos(): Add a parameter
order_only for limiting the replacement to the ordering fields
of the index.
storage/innobase/srv/srv0srv.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/sync/sync0arr.c:
Applied innodb-5.1-ss475 snapshot.
Add (void*) cast when using the %p printf format specifier.
storage/innobase/sync/sync0rw.c:
Applied innodb-5.1-ss475 snapshot.
Add (void*) cast when using the %p printf format specifier.
storage/innobase/sync/sync0sync.c:
Applied innodb-5.1-ss475 snapshot.
Add (void*) cast when using the %p printf format specifier.
storage/innobase/trx/trx0trx.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/ut/Makefile.am:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/ut/ut0mem.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/ut0vec.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/ut0vec.ic:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/pars/make_flex.sh:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/ut/ut0vec.c:
Applied innodb-5.1-ss475 snapshot.
2006-04-23 10:48:31 +02:00
set autocommit = 0;
SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED;
create table t7(a int not null, b int, primary key(a)) engine=innodb select * from t2 lock in share mode;
2008-10-03 14:24:19 +02:00
SET binlog_format='MIXED';
Applied innodb-5.1-ss475 snapshot.
* Fix BUG#15650: "DELETE with LEFT JOIN crashes server with innodb_locks_unsafe_for binlog"
* Fix BUG#17134: "Partitions: uncommitted changes are visible"
* Fix BUG#17992: "Partitions: InnoDB, somehow rotten table after UPDATE"
row0ins.c: MySQL's partitioned table code does not set preduilt->sql_stat_start right
if it does an insert in the same statement after doing a search first in the same
partition table. We now write trx id always to the buffer, not just when flag
sql_stat_start is on. This will waste CPU time very sightly.
* Fix BUG#18077: "InnoDB uses full explicit table locks in stored FUNCTION"
* Fix BUG#18238: "When locks exhaust the buffer pool, InnoDB does not roll back the trx"
* Fix BUG#18252" "Disk space leak in updates of InnoDB BLOB rows in 5.0 and 5.1"
* Fix BUG#18283: "When InnoDB returns error 'lock table full', MySQL can write to binlog too much"
* Fix BUG#18350: "Use consistent read in CREATE ... SELECT ... if innodb_locks_unsafe_for_binlog"
* Fix BUG#18384: "InnoDB memory leak on duplicate key errors in 5.0 if row has many columns"
* Fix BUG#18934: "InnoDB crashes when table uses column names like DB_ROW_ID"
Refuse tables that use reserved column names.
* InnoDB's SQL parser:
- Add support for UNSIGNED types, EXIT keyword, quoted identifiers, user-function callbacks
for processing results of FETCH statements, bound literals, DATA_VARCHAR for bound literals.
- Allow bound literals of type non-INTEGER to be of length 0.
- Add make_flex.sh and update lexer/parser generation documentation.
- Add comment clarifying the difference between 'alias' and 'indirection' fields in sym_node_t.
- Remove never reached duplicate code in pars_set_dfield_type().
- Rewrite pars_info datatypes and APIs, add a few helper functions.
- Since the functions definitions in pars_info_t are accessed after pars_sql() returns
in the query graph execution stage, we can't free pars_info_t in pars_sql(). Instead,
make pars_sql() transfer ownership of pars_info_t to the created query graph, and
make que_graph_free() free it if needed.
- Allow access to system columns like DB_ROW_ID.
* Use bound literals in row_truncate_table_for_mysql, row_drop_table_for_mysql,
row_discard_tablespace_for_mysql, and row_rename_table_for_mysql.
* Setting an isolation level of the transaction to read committed weakens the locks for
this session similarly like the option innodb_locks_unsafe_for binlog. This patch removes
alnost all gap locking (used in next-key locking) and makes MySQL to release the row locks
on the rows which does not belong to result set. Additionally, nonlocking selects on
INSERT INTO SELECT, UPDATE ... (SELECT ...), and CREATE ... SELECT ... use a nonlocking
consistent read. If a binlog is used, then binlog format should be set to row based
binloging to make the execution of the complex SQL statements.
* Disable the statistic variables btr_search_n_hash_fail and n_hash_succ, n_hash_fail,
n_patt_succ, and n_searches of btr_search_t in builds without #ifdef UNIV_SEARCH_PERF_STAT.
* Make innodb.test faster. Group all consistent read test cases to a one test case and
wait their lock timeout after all have been send to the server. Decrease amount of rows
inserted in a certain test - this has no effect on the effectiveness of the test and
reduces the running time by ~10 sec. Remove temporary work-arounds from innodb.result
now that ALTER TABLE DROP FOREIGN KEY works once again.
* Make innodb_unsafe_binlog.test faster. Grout all consistent read test cases to a one
test case amd wait their lock timeout after all have been sent to the server. Remove
unnecessary option --loose_innodb_lock_wait_timeout.
* Print dictionary memory size in SHOW INNODB STATUS.
* Fix memory leaks in row_create_table_for_mysql() in rare corner cases.
* Remove code related to clustered tables. They were never implemented, and the
implementation would be challenging with ROW_FORMAT=COMPACT. Remove the table types
DICT_TABLE_CLUSTER_MEMBER and DICT_TABLE_CLUSTER and all related tests and functions.
dict_table_t: Remove mix_id, mix_len, mix_id_len, mix_id_buf, and cluster_name.
plan_t: Remove mixed_index.
dict_create_sys_tables_tuple(): Set MIX_ID=0, MIX_LEN=0, CLUSTER_NAME=NULL when
inserting into SYS_TABLES.
dict_tree_check_search_tuple(): Enclose in #ifdef UNIV_DEBUG.
* Move calling of thr_local_free() from trx_free_for_mysql() to
innobase_close_connection().
mysql-test/r/innodb.result:
Applied innodb-5.1-ss475 snapshot.
mysql-test/r/innodb_unsafe_binlog.result:
Applied innodb-5.1-ss475 snapshot.
mysql-test/t/innodb-master.opt:
Applied innodb-5.1-ss475 snapshot.
mysql-test/t/innodb.test:
Applied innodb-5.1-ss475 snapshot.
mysql-test/t/innodb_unsafe_binlog-master.opt:
Applied innodb-5.1-ss475 snapshot.
mysql-test/t/innodb_unsafe_binlog.test:
Applied innodb-5.1-ss475 snapshot.
sql/ha_innodb.cc:
Applied innodb-5.1-ss475 snapshot.
Do not use inlined functions in ha_innodb.cc.
Remove assertion ut_error which crashes the mysqld server
if it prints a warning about the adaptive latch.
storage/innobase/Makefile.am:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/btr/btr0btr.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/btr/btr0cur.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/btr/btr0pcur.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/btr/btr0sea.c:
Applied innodb-5.1-ss475 snapshot.
Fix compilation problem with non-C99 compilers.
storage/innobase/buf/buf0lru.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/cmakelists.txt:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/configure.in:
Applied innodb-5.1-ss475 snapshot.
Add disabled-by-default logic to switch GCC to a strict C89-mode.
Add -Werror-implicit-function_declaration to CFLAGS when using gcc.
storage/innobase/data/data0type.c:
Applied innodb-5.1-ss475 snapshot.
dtype_print(): Recognize DATA_FIXBINARY and DATA_BLOB types.
Print known flags from prtype. Use a switch statement instead
of else-if chain.
storage/innobase/dict/dict0crea.c:
Applied innodb-5.1-ss475 snapshot.
Use bound literals in all SQL statements instead of elaborately
constructing correctly allocated and quoted strings to pass the
data in ASCII form.
storage/innobase/dict/dict0dict.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/dict/dict0load.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/dict/dict0mem.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/eval/eval0proc.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/ibuf/ibuf0ibuf.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/btr0cur.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/btr0cur.ic:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/btr0sea.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/buf0lru.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/dict0dict.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/dict0dict.ic:
Applied innodb-5.1-ss475 snapshot.
Remove too strict assertions from some dict_table_t
accessor functions.
storage/innobase/include/dict0mem.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/eval0proc.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/hash0hash.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/lock0lock.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/mem0mem.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/page0page.ic:
Applied innodb-5.1-ss475 snapshot.
Remove UNIV_RELEASE_NOT_YET_STABLE and related checks.
storage/innobase/include/pars0grm.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/pars0pars.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/pars0sym.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/pars0types.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/que0que.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/row0mysql.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/row0sel.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/row0upd.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/trx0trx.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/univ.i:
Applied innodb-5.1-ss475 snapshot.
Remove UNIV_RELEASE_NOT_YET_STABLE and related checks.
When using GCC, use __inline__ instead of inline.
storage/innobase/include/ut0mem.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/lock/lock0lock.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/log/log0recv.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/mem/mem0dbg.c:
Applied innodb-5.1-ss475 snapshot.
Add (void*) cast when using the %p printf format specifier.
storage/innobase/mem/mem0mem.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/os/os0sync.c:
Applied innodb-5.1-ss475 snapshot.
Add (void*) cast when using the %p printf format specifier.
storage/innobase/pars/lexyy.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/pars/make_bison.sh:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/pars/pars0grm.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/pars/pars0grm.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/pars/pars0grm.y:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/pars/pars0lex.l:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/pars/pars0opt.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/pars/pars0pars.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/pars/pars0sym.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/que/que0que.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/row/row0ins.c:
Applied innodb-5.1-ss475 snapshot.
Remove a memory leak when trying to insert a duplicate record to a
clustered inedx comprising more than about 90 columns (Bug#18384).
row_ins_duplicate_error_in_clust(): Call mem_heap_free(heap) at
func_exit if needed.
storage/innobase/row/row0mysql.c:
Applied innodb-5.1-ss475 snapshot.
row_mysql_is_system_table(): Use strncmp, not memcmp, since we
don't know how long the input string is.
storage/innobase/row/row0sel.c:
Applied innodb-5.1-ss475 snapshot.
Remove UNIV_RELEASE_NOT_YET_STABLE and related checks.
row_sel_field_store_in_mysql_format(): Turn the assertions on
mbminlen, mbmaxlen, and templ->type into debug assertions.
fetch_step(): Print a more usefull error message when the cursor is closed.
storage/innobase/row/row0upd.c:
Applied innodb-5.1-ss475 snapshot.
row_upd_index_replace_new_col_vals_index_pos(): Add a parameter
order_only for limiting the replacement to the ordering fields
of the index.
storage/innobase/srv/srv0srv.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/sync/sync0arr.c:
Applied innodb-5.1-ss475 snapshot.
Add (void*) cast when using the %p printf format specifier.
storage/innobase/sync/sync0rw.c:
Applied innodb-5.1-ss475 snapshot.
Add (void*) cast when using the %p printf format specifier.
storage/innobase/sync/sync0sync.c:
Applied innodb-5.1-ss475 snapshot.
Add (void*) cast when using the %p printf format specifier.
storage/innobase/trx/trx0trx.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/ut/Makefile.am:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/ut/ut0mem.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/ut0vec.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/ut0vec.ic:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/pars/make_flex.sh:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/ut/ut0vec.c:
Applied innodb-5.1-ss475 snapshot.
2006-04-23 10:48:31 +02:00
set autocommit = 0;
SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED;
insert into t8 (select * from t2 for update);
2008-10-03 14:24:19 +02:00
SET binlog_format='MIXED';
Applied innodb-5.1-ss475 snapshot.
* Fix BUG#15650: "DELETE with LEFT JOIN crashes server with innodb_locks_unsafe_for binlog"
* Fix BUG#17134: "Partitions: uncommitted changes are visible"
* Fix BUG#17992: "Partitions: InnoDB, somehow rotten table after UPDATE"
row0ins.c: MySQL's partitioned table code does not set preduilt->sql_stat_start right
if it does an insert in the same statement after doing a search first in the same
partition table. We now write trx id always to the buffer, not just when flag
sql_stat_start is on. This will waste CPU time very sightly.
* Fix BUG#18077: "InnoDB uses full explicit table locks in stored FUNCTION"
* Fix BUG#18238: "When locks exhaust the buffer pool, InnoDB does not roll back the trx"
* Fix BUG#18252" "Disk space leak in updates of InnoDB BLOB rows in 5.0 and 5.1"
* Fix BUG#18283: "When InnoDB returns error 'lock table full', MySQL can write to binlog too much"
* Fix BUG#18350: "Use consistent read in CREATE ... SELECT ... if innodb_locks_unsafe_for_binlog"
* Fix BUG#18384: "InnoDB memory leak on duplicate key errors in 5.0 if row has many columns"
* Fix BUG#18934: "InnoDB crashes when table uses column names like DB_ROW_ID"
Refuse tables that use reserved column names.
* InnoDB's SQL parser:
- Add support for UNSIGNED types, EXIT keyword, quoted identifiers, user-function callbacks
for processing results of FETCH statements, bound literals, DATA_VARCHAR for bound literals.
- Allow bound literals of type non-INTEGER to be of length 0.
- Add make_flex.sh and update lexer/parser generation documentation.
- Add comment clarifying the difference between 'alias' and 'indirection' fields in sym_node_t.
- Remove never reached duplicate code in pars_set_dfield_type().
- Rewrite pars_info datatypes and APIs, add a few helper functions.
- Since the functions definitions in pars_info_t are accessed after pars_sql() returns
in the query graph execution stage, we can't free pars_info_t in pars_sql(). Instead,
make pars_sql() transfer ownership of pars_info_t to the created query graph, and
make que_graph_free() free it if needed.
- Allow access to system columns like DB_ROW_ID.
* Use bound literals in row_truncate_table_for_mysql, row_drop_table_for_mysql,
row_discard_tablespace_for_mysql, and row_rename_table_for_mysql.
* Setting an isolation level of the transaction to read committed weakens the locks for
this session similarly like the option innodb_locks_unsafe_for binlog. This patch removes
alnost all gap locking (used in next-key locking) and makes MySQL to release the row locks
on the rows which does not belong to result set. Additionally, nonlocking selects on
INSERT INTO SELECT, UPDATE ... (SELECT ...), and CREATE ... SELECT ... use a nonlocking
consistent read. If a binlog is used, then binlog format should be set to row based
binloging to make the execution of the complex SQL statements.
* Disable the statistic variables btr_search_n_hash_fail and n_hash_succ, n_hash_fail,
n_patt_succ, and n_searches of btr_search_t in builds without #ifdef UNIV_SEARCH_PERF_STAT.
* Make innodb.test faster. Group all consistent read test cases to a one test case and
wait their lock timeout after all have been send to the server. Decrease amount of rows
inserted in a certain test - this has no effect on the effectiveness of the test and
reduces the running time by ~10 sec. Remove temporary work-arounds from innodb.result
now that ALTER TABLE DROP FOREIGN KEY works once again.
* Make innodb_unsafe_binlog.test faster. Grout all consistent read test cases to a one
test case amd wait their lock timeout after all have been sent to the server. Remove
unnecessary option --loose_innodb_lock_wait_timeout.
* Print dictionary memory size in SHOW INNODB STATUS.
* Fix memory leaks in row_create_table_for_mysql() in rare corner cases.
* Remove code related to clustered tables. They were never implemented, and the
implementation would be challenging with ROW_FORMAT=COMPACT. Remove the table types
DICT_TABLE_CLUSTER_MEMBER and DICT_TABLE_CLUSTER and all related tests and functions.
dict_table_t: Remove mix_id, mix_len, mix_id_len, mix_id_buf, and cluster_name.
plan_t: Remove mixed_index.
dict_create_sys_tables_tuple(): Set MIX_ID=0, MIX_LEN=0, CLUSTER_NAME=NULL when
inserting into SYS_TABLES.
dict_tree_check_search_tuple(): Enclose in #ifdef UNIV_DEBUG.
* Move calling of thr_local_free() from trx_free_for_mysql() to
innobase_close_connection().
mysql-test/r/innodb.result:
Applied innodb-5.1-ss475 snapshot.
mysql-test/r/innodb_unsafe_binlog.result:
Applied innodb-5.1-ss475 snapshot.
mysql-test/t/innodb-master.opt:
Applied innodb-5.1-ss475 snapshot.
mysql-test/t/innodb.test:
Applied innodb-5.1-ss475 snapshot.
mysql-test/t/innodb_unsafe_binlog-master.opt:
Applied innodb-5.1-ss475 snapshot.
mysql-test/t/innodb_unsafe_binlog.test:
Applied innodb-5.1-ss475 snapshot.
sql/ha_innodb.cc:
Applied innodb-5.1-ss475 snapshot.
Do not use inlined functions in ha_innodb.cc.
Remove assertion ut_error which crashes the mysqld server
if it prints a warning about the adaptive latch.
storage/innobase/Makefile.am:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/btr/btr0btr.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/btr/btr0cur.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/btr/btr0pcur.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/btr/btr0sea.c:
Applied innodb-5.1-ss475 snapshot.
Fix compilation problem with non-C99 compilers.
storage/innobase/buf/buf0lru.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/cmakelists.txt:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/configure.in:
Applied innodb-5.1-ss475 snapshot.
Add disabled-by-default logic to switch GCC to a strict C89-mode.
Add -Werror-implicit-function_declaration to CFLAGS when using gcc.
storage/innobase/data/data0type.c:
Applied innodb-5.1-ss475 snapshot.
dtype_print(): Recognize DATA_FIXBINARY and DATA_BLOB types.
Print known flags from prtype. Use a switch statement instead
of else-if chain.
storage/innobase/dict/dict0crea.c:
Applied innodb-5.1-ss475 snapshot.
Use bound literals in all SQL statements instead of elaborately
constructing correctly allocated and quoted strings to pass the
data in ASCII form.
storage/innobase/dict/dict0dict.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/dict/dict0load.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/dict/dict0mem.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/eval/eval0proc.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/ibuf/ibuf0ibuf.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/btr0cur.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/btr0cur.ic:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/btr0sea.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/buf0lru.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/dict0dict.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/dict0dict.ic:
Applied innodb-5.1-ss475 snapshot.
Remove too strict assertions from some dict_table_t
accessor functions.
storage/innobase/include/dict0mem.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/eval0proc.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/hash0hash.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/lock0lock.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/mem0mem.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/page0page.ic:
Applied innodb-5.1-ss475 snapshot.
Remove UNIV_RELEASE_NOT_YET_STABLE and related checks.
storage/innobase/include/pars0grm.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/pars0pars.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/pars0sym.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/pars0types.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/que0que.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/row0mysql.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/row0sel.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/row0upd.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/trx0trx.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/univ.i:
Applied innodb-5.1-ss475 snapshot.
Remove UNIV_RELEASE_NOT_YET_STABLE and related checks.
When using GCC, use __inline__ instead of inline.
storage/innobase/include/ut0mem.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/lock/lock0lock.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/log/log0recv.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/mem/mem0dbg.c:
Applied innodb-5.1-ss475 snapshot.
Add (void*) cast when using the %p printf format specifier.
storage/innobase/mem/mem0mem.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/os/os0sync.c:
Applied innodb-5.1-ss475 snapshot.
Add (void*) cast when using the %p printf format specifier.
storage/innobase/pars/lexyy.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/pars/make_bison.sh:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/pars/pars0grm.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/pars/pars0grm.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/pars/pars0grm.y:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/pars/pars0lex.l:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/pars/pars0opt.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/pars/pars0pars.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/pars/pars0sym.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/que/que0que.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/row/row0ins.c:
Applied innodb-5.1-ss475 snapshot.
Remove a memory leak when trying to insert a duplicate record to a
clustered inedx comprising more than about 90 columns (Bug#18384).
row_ins_duplicate_error_in_clust(): Call mem_heap_free(heap) at
func_exit if needed.
storage/innobase/row/row0mysql.c:
Applied innodb-5.1-ss475 snapshot.
row_mysql_is_system_table(): Use strncmp, not memcmp, since we
don't know how long the input string is.
storage/innobase/row/row0sel.c:
Applied innodb-5.1-ss475 snapshot.
Remove UNIV_RELEASE_NOT_YET_STABLE and related checks.
row_sel_field_store_in_mysql_format(): Turn the assertions on
mbminlen, mbmaxlen, and templ->type into debug assertions.
fetch_step(): Print a more usefull error message when the cursor is closed.
storage/innobase/row/row0upd.c:
Applied innodb-5.1-ss475 snapshot.
row_upd_index_replace_new_col_vals_index_pos(): Add a parameter
order_only for limiting the replacement to the ordering fields
of the index.
storage/innobase/srv/srv0srv.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/sync/sync0arr.c:
Applied innodb-5.1-ss475 snapshot.
Add (void*) cast when using the %p printf format specifier.
storage/innobase/sync/sync0rw.c:
Applied innodb-5.1-ss475 snapshot.
Add (void*) cast when using the %p printf format specifier.
storage/innobase/sync/sync0sync.c:
Applied innodb-5.1-ss475 snapshot.
Add (void*) cast when using the %p printf format specifier.
storage/innobase/trx/trx0trx.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/ut/Makefile.am:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/ut/ut0mem.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/ut0vec.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/ut0vec.ic:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/pars/make_flex.sh:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/ut/ut0vec.c:
Applied innodb-5.1-ss475 snapshot.
2006-04-23 10:48:31 +02:00
set autocommit = 0;
SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED;
update t9 set e = (select b from t2 where a = d for update);
2008-10-03 14:24:19 +02:00
SET binlog_format='MIXED';
Applied innodb-5.1-ss475 snapshot.
* Fix BUG#15650: "DELETE with LEFT JOIN crashes server with innodb_locks_unsafe_for binlog"
* Fix BUG#17134: "Partitions: uncommitted changes are visible"
* Fix BUG#17992: "Partitions: InnoDB, somehow rotten table after UPDATE"
row0ins.c: MySQL's partitioned table code does not set preduilt->sql_stat_start right
if it does an insert in the same statement after doing a search first in the same
partition table. We now write trx id always to the buffer, not just when flag
sql_stat_start is on. This will waste CPU time very sightly.
* Fix BUG#18077: "InnoDB uses full explicit table locks in stored FUNCTION"
* Fix BUG#18238: "When locks exhaust the buffer pool, InnoDB does not roll back the trx"
* Fix BUG#18252" "Disk space leak in updates of InnoDB BLOB rows in 5.0 and 5.1"
* Fix BUG#18283: "When InnoDB returns error 'lock table full', MySQL can write to binlog too much"
* Fix BUG#18350: "Use consistent read in CREATE ... SELECT ... if innodb_locks_unsafe_for_binlog"
* Fix BUG#18384: "InnoDB memory leak on duplicate key errors in 5.0 if row has many columns"
* Fix BUG#18934: "InnoDB crashes when table uses column names like DB_ROW_ID"
Refuse tables that use reserved column names.
* InnoDB's SQL parser:
- Add support for UNSIGNED types, EXIT keyword, quoted identifiers, user-function callbacks
for processing results of FETCH statements, bound literals, DATA_VARCHAR for bound literals.
- Allow bound literals of type non-INTEGER to be of length 0.
- Add make_flex.sh and update lexer/parser generation documentation.
- Add comment clarifying the difference between 'alias' and 'indirection' fields in sym_node_t.
- Remove never reached duplicate code in pars_set_dfield_type().
- Rewrite pars_info datatypes and APIs, add a few helper functions.
- Since the functions definitions in pars_info_t are accessed after pars_sql() returns
in the query graph execution stage, we can't free pars_info_t in pars_sql(). Instead,
make pars_sql() transfer ownership of pars_info_t to the created query graph, and
make que_graph_free() free it if needed.
- Allow access to system columns like DB_ROW_ID.
* Use bound literals in row_truncate_table_for_mysql, row_drop_table_for_mysql,
row_discard_tablespace_for_mysql, and row_rename_table_for_mysql.
* Setting an isolation level of the transaction to read committed weakens the locks for
this session similarly like the option innodb_locks_unsafe_for binlog. This patch removes
alnost all gap locking (used in next-key locking) and makes MySQL to release the row locks
on the rows which does not belong to result set. Additionally, nonlocking selects on
INSERT INTO SELECT, UPDATE ... (SELECT ...), and CREATE ... SELECT ... use a nonlocking
consistent read. If a binlog is used, then binlog format should be set to row based
binloging to make the execution of the complex SQL statements.
* Disable the statistic variables btr_search_n_hash_fail and n_hash_succ, n_hash_fail,
n_patt_succ, and n_searches of btr_search_t in builds without #ifdef UNIV_SEARCH_PERF_STAT.
* Make innodb.test faster. Group all consistent read test cases to a one test case and
wait their lock timeout after all have been send to the server. Decrease amount of rows
inserted in a certain test - this has no effect on the effectiveness of the test and
reduces the running time by ~10 sec. Remove temporary work-arounds from innodb.result
now that ALTER TABLE DROP FOREIGN KEY works once again.
* Make innodb_unsafe_binlog.test faster. Grout all consistent read test cases to a one
test case amd wait their lock timeout after all have been sent to the server. Remove
unnecessary option --loose_innodb_lock_wait_timeout.
* Print dictionary memory size in SHOW INNODB STATUS.
* Fix memory leaks in row_create_table_for_mysql() in rare corner cases.
* Remove code related to clustered tables. They were never implemented, and the
implementation would be challenging with ROW_FORMAT=COMPACT. Remove the table types
DICT_TABLE_CLUSTER_MEMBER and DICT_TABLE_CLUSTER and all related tests and functions.
dict_table_t: Remove mix_id, mix_len, mix_id_len, mix_id_buf, and cluster_name.
plan_t: Remove mixed_index.
dict_create_sys_tables_tuple(): Set MIX_ID=0, MIX_LEN=0, CLUSTER_NAME=NULL when
inserting into SYS_TABLES.
dict_tree_check_search_tuple(): Enclose in #ifdef UNIV_DEBUG.
* Move calling of thr_local_free() from trx_free_for_mysql() to
innobase_close_connection().
mysql-test/r/innodb.result:
Applied innodb-5.1-ss475 snapshot.
mysql-test/r/innodb_unsafe_binlog.result:
Applied innodb-5.1-ss475 snapshot.
mysql-test/t/innodb-master.opt:
Applied innodb-5.1-ss475 snapshot.
mysql-test/t/innodb.test:
Applied innodb-5.1-ss475 snapshot.
mysql-test/t/innodb_unsafe_binlog-master.opt:
Applied innodb-5.1-ss475 snapshot.
mysql-test/t/innodb_unsafe_binlog.test:
Applied innodb-5.1-ss475 snapshot.
sql/ha_innodb.cc:
Applied innodb-5.1-ss475 snapshot.
Do not use inlined functions in ha_innodb.cc.
Remove assertion ut_error which crashes the mysqld server
if it prints a warning about the adaptive latch.
storage/innobase/Makefile.am:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/btr/btr0btr.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/btr/btr0cur.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/btr/btr0pcur.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/btr/btr0sea.c:
Applied innodb-5.1-ss475 snapshot.
Fix compilation problem with non-C99 compilers.
storage/innobase/buf/buf0lru.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/cmakelists.txt:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/configure.in:
Applied innodb-5.1-ss475 snapshot.
Add disabled-by-default logic to switch GCC to a strict C89-mode.
Add -Werror-implicit-function_declaration to CFLAGS when using gcc.
storage/innobase/data/data0type.c:
Applied innodb-5.1-ss475 snapshot.
dtype_print(): Recognize DATA_FIXBINARY and DATA_BLOB types.
Print known flags from prtype. Use a switch statement instead
of else-if chain.
storage/innobase/dict/dict0crea.c:
Applied innodb-5.1-ss475 snapshot.
Use bound literals in all SQL statements instead of elaborately
constructing correctly allocated and quoted strings to pass the
data in ASCII form.
storage/innobase/dict/dict0dict.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/dict/dict0load.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/dict/dict0mem.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/eval/eval0proc.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/ibuf/ibuf0ibuf.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/btr0cur.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/btr0cur.ic:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/btr0sea.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/buf0lru.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/dict0dict.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/dict0dict.ic:
Applied innodb-5.1-ss475 snapshot.
Remove too strict assertions from some dict_table_t
accessor functions.
storage/innobase/include/dict0mem.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/eval0proc.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/hash0hash.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/lock0lock.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/mem0mem.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/page0page.ic:
Applied innodb-5.1-ss475 snapshot.
Remove UNIV_RELEASE_NOT_YET_STABLE and related checks.
storage/innobase/include/pars0grm.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/pars0pars.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/pars0sym.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/pars0types.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/que0que.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/row0mysql.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/row0sel.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/row0upd.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/trx0trx.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/univ.i:
Applied innodb-5.1-ss475 snapshot.
Remove UNIV_RELEASE_NOT_YET_STABLE and related checks.
When using GCC, use __inline__ instead of inline.
storage/innobase/include/ut0mem.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/lock/lock0lock.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/log/log0recv.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/mem/mem0dbg.c:
Applied innodb-5.1-ss475 snapshot.
Add (void*) cast when using the %p printf format specifier.
storage/innobase/mem/mem0mem.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/os/os0sync.c:
Applied innodb-5.1-ss475 snapshot.
Add (void*) cast when using the %p printf format specifier.
storage/innobase/pars/lexyy.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/pars/make_bison.sh:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/pars/pars0grm.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/pars/pars0grm.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/pars/pars0grm.y:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/pars/pars0lex.l:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/pars/pars0opt.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/pars/pars0pars.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/pars/pars0sym.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/que/que0que.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/row/row0ins.c:
Applied innodb-5.1-ss475 snapshot.
Remove a memory leak when trying to insert a duplicate record to a
clustered inedx comprising more than about 90 columns (Bug#18384).
row_ins_duplicate_error_in_clust(): Call mem_heap_free(heap) at
func_exit if needed.
storage/innobase/row/row0mysql.c:
Applied innodb-5.1-ss475 snapshot.
row_mysql_is_system_table(): Use strncmp, not memcmp, since we
don't know how long the input string is.
storage/innobase/row/row0sel.c:
Applied innodb-5.1-ss475 snapshot.
Remove UNIV_RELEASE_NOT_YET_STABLE and related checks.
row_sel_field_store_in_mysql_format(): Turn the assertions on
mbminlen, mbmaxlen, and templ->type into debug assertions.
fetch_step(): Print a more usefull error message when the cursor is closed.
storage/innobase/row/row0upd.c:
Applied innodb-5.1-ss475 snapshot.
row_upd_index_replace_new_col_vals_index_pos(): Add a parameter
order_only for limiting the replacement to the ordering fields
of the index.
storage/innobase/srv/srv0srv.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/sync/sync0arr.c:
Applied innodb-5.1-ss475 snapshot.
Add (void*) cast when using the %p printf format specifier.
storage/innobase/sync/sync0rw.c:
Applied innodb-5.1-ss475 snapshot.
Add (void*) cast when using the %p printf format specifier.
storage/innobase/sync/sync0sync.c:
Applied innodb-5.1-ss475 snapshot.
Add (void*) cast when using the %p printf format specifier.
storage/innobase/trx/trx0trx.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/ut/Makefile.am:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/ut/ut0mem.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/ut0vec.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/ut0vec.ic:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/pars/make_flex.sh:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/ut/ut0vec.c:
Applied innodb-5.1-ss475 snapshot.
2006-04-23 10:48:31 +02:00
set autocommit = 0;
SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED;
create table t10(a int not null, b int, primary key(a)) engine=innodb select * from t2 for update;
ERROR HY000: Lock wait timeout exceeded; try restarting transaction
ERROR HY000: Lock wait timeout exceeded; try restarting transaction
ERROR HY000: Lock wait timeout exceeded; try restarting transaction
ERROR HY000: Lock wait timeout exceeded; try restarting transaction
ERROR HY000: Lock wait timeout exceeded; try restarting transaction
ERROR HY000: Lock wait timeout exceeded; try restarting transaction
ERROR HY000: Lock wait timeout exceeded; try restarting transaction
ERROR HY000: Lock wait timeout exceeded; try restarting transaction
ERROR HY000: Lock wait timeout exceeded; try restarting transaction
commit;
drop table t1, t2, t3, t5, t6, t8, t9;
CREATE TABLE t1 (DB_ROW_ID int) engine=innodb;
ERROR HY000: Can't create table 'test.t1' (errno: -1)
2006-04-17 15:46:56 +02:00
CREATE TABLE t1 (
a BIGINT(20) NOT NULL,
PRIMARY KEY (a)
) ENGINE=INNODB DEFAULT CHARSET=UTF8;
CREATE TABLE t2 (
a BIGINT(20) NOT NULL,
b VARCHAR(128) NOT NULL,
c TEXT NOT NULL,
PRIMARY KEY (a,b),
KEY idx_t2_b_c (b,c(200)),
CONSTRAINT t_fk FOREIGN KEY (a) REFERENCES t1 (a)
ON DELETE CASCADE
) ENGINE=INNODB DEFAULT CHARSET=UTF8;
INSERT INTO t1 VALUES (1);
INSERT INTO t2 VALUES (1, 'bar', 'vbar');
INSERT INTO t2 VALUES (1, 'BAR2', 'VBAR');
INSERT INTO t2 VALUES (1, 'bar_bar', 'bibi');
INSERT INTO t2 VALUES (1, 'customer_over', '1');
SELECT * FROM t2 WHERE b = 'customer_over';
a b c
1 customer_over 1
SELECT * FROM t2 WHERE BINARY b = 'customer_over';
a b c
1 customer_over 1
SELECT DISTINCT p0.a FROM t2 p0 WHERE p0.b = 'customer_over';
a
1
/* Bang: Empty result set, above was expected: */
SELECT DISTINCT p0.a FROM t2 p0 WHERE BINARY p0.b = 'customer_over';
a
1
SELECT p0.a FROM t2 p0 WHERE BINARY p0.b = 'customer_over';
a
1
drop table t2, t1;
2006-05-05 19:08:40 +02:00
CREATE TABLE t1 ( a int ) ENGINE=innodb;
BEGIN;
INSERT INTO t1 VALUES (1);
OPTIMIZE TABLE t1;
Table Op Msg_type Msg_text
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
The main problem was that ALTER TABLE t ANALYZE/CHECK/OPTIMIZE/REPAIR
PARTITION took another code path (over mysql_alter_table instead of
mysql_admin_table) which differs in two ways:
1) alter table opens the tables in a different way than admin tables do
resulting in returning with error before it tried the command
2) alter table does not start to send any diagnostic rows to the client
which the lower admin functions continue to use -> resulting in
assertion crash
The fix:
Remapped ALTER TABLE t ANALYZE/CHECK/OPTIMIZE/REPAIR PARTITION to use
the same code path as ANALYZE/CHECK/OPTIMIZE/REPAIR TABLE t.
Adding check in mysql_admin_table to setup the partition list for
which partitions that should be used.
Partitioned tables will still not work with
REPAIR TABLE/PARTITION USE_FRM, since that requires moving partitions
to tables, REPAIR TABLE t USE_FRM, and check that the data still
fulfills the partitioning function and then move the table back to
being a partition.
NOTE: I have removed the following functions from the handler
interface:
analyze_partitions, check_partitions, optimize_partitions,
repair_partitions
Since they are not longer needed.
THIS ALTERS THE STORAGE ENGINE API
mysql-test/r/handler_innodb.result:
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
Added a note result row.
mysql-test/r/innodb.result:
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
Added a note result row.
mysql-test/r/innodb_mysql.result:
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
Added a note result row.
mysql-test/r/partition.result:
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
Updated after fixing ANALYZE/CHECK/OPTIMIZE/REPAIR partitioned
tables.
mysql-test/r/trigger-trans.result:
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
Added a note result row.
mysql-test/suite/ndb/r/ndb_partition_key.result:
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
Updated after fixing ANALYZE/CHECK/OPTIMIZE/REPAIR partitioned
tables.
mysql-test/suite/ndb/t/ndb_partition_key.test:
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
Updated after fixing ANALYZE/CHECK/OPTIMIZE/REPAIR partitioned
tables.
mysql-test/suite/parts/inc/partition_alter4.inc:
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
Updated after fixing ANALYZE/CHECK/OPTIMIZE/REPAIR partitioned
tables.
mysql-test/suite/parts/r/partition_alter4_innodb.result:
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
Updated after fixing ANALYZE/CHECK/OPTIMIZE/REPAIR partitioned
tables.
mysql-test/suite/parts/r/partition_alter4_myisam.result:
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
Updated after fixing ANALYZE/CHECK/OPTIMIZE/REPAIR partitioned
tables.
mysql-test/suite/rpl/r/rpl_failed_optimize.result:
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
Added a note result row.
mysql-test/suite/rpl/r/rpl_innodb_mixed_dml.result:
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
Added a note result row.
mysql-test/t/partition.test:
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
Updated after fixing ANALYZE/CHECK/OPTIMIZE/REPAIR partitioned
tables.
sql/ha_partition.cc:
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
Added a function for returning admin commands result rows
Updated handle_opt_partitions to handle admin commands result rows,
and some error filtering (as mysql_admin_table do).
Removed the functions analyze/check/optimize/repair_partitions
since they have no longer any use.
sql/ha_partition.h:
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
Removed analyze/check/optimize/repair_partitions since they
are no longer are needed.
sql/handler.cc:
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
Removed analyze/check/optimize/repair_partitions since they
are no longer are needed.
sql/handler.h:
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
Removed analyze/check/optimize/repair_partitions since they
are no longer are needed.
sql/mysql_priv.h:
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
Added set_part_state for reuse of code in mysql_admin_table.
(Originally fond in sql/sql_partition.cc:prep_alter_part_table)
sql/protocol.cc:
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
Added one assert and a debug print.
sql/sql_partition.cc:
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
Refactored code for setting up partition state, set_part_state,
now used in both prep_alter_part_table and
sql_table.cc:mysql_admin_table.
Removed code for handling ANALYZE/CHECK/OPTIMIZE/REPAIR partitions,
since it is now handled by mysql_admin_table.
sql/sql_table.cc:
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
Added functionality in mysql_admin_table to work with partitioned
tables.
Fixed a possible assertion bug for HA_ADMIN_TRY_ALTER
(If analyze would output a row, it fails since the row was already
started).
sql/sql_yacc.yy:
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
Remapped ALTER TABLE t ANALYZE/CHECK/OPTIMIZE/REPAIR PARTITION
to use the same code path as ANALYZE/CHECK/OPTIMIZE/REPAIR TABLE
instead of taking the ALTER TABLE path.
Added reset of alter_info for ANALYZE/CHECK/OPTIMIZE/REPAIR TABLE
since it is now used by partitioned tables.
storage/myisam/mi_check.c:
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
Changed warning message from "Found X parts Should be: Y parts"
to "Found X key parts. Should be Y", since it could be confusing
with partitioned tables.
2008-08-11 20:02:03 +02:00
test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
2006-05-05 19:08:40 +02:00
test.t1 optimize status OK
DROP TABLE t1;
2007-01-22 02:18:11 +01:00
CREATE TABLE t1 (id int PRIMARY KEY, f int NOT NULL, INDEX(f)) ENGINE=InnoDB;
CREATE TABLE t2 (id int PRIMARY KEY, f INT NOT NULL,
CONSTRAINT t2_t1 FOREIGN KEY (id) REFERENCES t1 (id)
ON DELETE CASCADE ON UPDATE CASCADE) ENGINE=InnoDB;
ALTER TABLE t2 ADD FOREIGN KEY (f) REFERENCES t1 (f) ON
DELETE CASCADE ON UPDATE CASCADE;
SHOW CREATE TABLE t2;
Table Create Table
t2 CREATE TABLE `t2` (
`id` int(11) NOT NULL,
`f` int(11) NOT NULL,
PRIMARY KEY (`id`),
KEY `f` (`f`),
CONSTRAINT `t2_ibfk_1` FOREIGN KEY (`f`) REFERENCES `t1` (`f`) ON DELETE CASCADE ON UPDATE CASCADE,
CONSTRAINT `t2_t1` FOREIGN KEY (`id`) REFERENCES `t1` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=latin1
DROP TABLE t2, t1;
2007-04-19 21:18:49 +02:00
CREATE TABLE t1 (a INT, INDEX(a)) ENGINE=InnoDB;
CREATE TABLE t2 (a INT, INDEX(a)) ENGINE=InnoDB;
INSERT INTO t1 VALUES (1);
INSERT INTO t2 VALUES (1);
ALTER TABLE t2 ADD FOREIGN KEY (a) REFERENCES t1 (a) ON DELETE SET NULL;
ALTER TABLE t2 MODIFY a INT NOT NULL;
ERROR HY000: Error on rename of '#sql-temporary' to './test/t2' (errno: 150)
DELETE FROM t1;
DROP TABLE t2,t1;
CREATE TABLE t1 (a VARCHAR(5) COLLATE utf8_unicode_ci PRIMARY KEY)
ENGINE=InnoDB;
INSERT INTO t1 VALUES (0xEFBCA4EFBCA4EFBCA4);
DELETE FROM t1;
INSERT INTO t1 VALUES ('DDD');
SELECT * FROM t1;
a
DDD
DROP TABLE t1;
2007-04-19 03:53:28 +02:00
CREATE TABLE t1 (id int PRIMARY KEY AUTO_INCREMENT) ENGINE=InnoDB
AUTO_INCREMENT=42;
INSERT INTO t1 VALUES (0),(347),(0);
SELECT * FROM t1;
id
42
347
348
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`id` int(11) NOT NULL AUTO_INCREMENT,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=349 DEFAULT CHARSET=latin1
CREATE TABLE t2 (id int PRIMARY KEY) ENGINE=InnoDB;
INSERT INTO t2 VALUES(42),(347),(348);
ALTER TABLE t1 ADD CONSTRAINT t1_t2 FOREIGN KEY (id) REFERENCES t2(id);
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`id` int(11) NOT NULL AUTO_INCREMENT,
PRIMARY KEY (`id`),
CONSTRAINT `t1_t2` FOREIGN KEY (`id`) REFERENCES `t2` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=349 DEFAULT CHARSET=latin1
DROP TABLE t1,t2;
Fixes to tests and their results, to account for differences between InnoDB 1.0.4 and the old builtin.
All committed result differences have either been verified by me or copied from Oracle's provided
results (storage/innodb_plugin/mysql-test/*.result, storage/innodb_plugin/mysql-test/patches).
mysql-test/r/information_schema.result:
queries changed a bit
mysql-test/r/information_schema_db.result:
queries changed a bit
mysql-test/r/innodb-autoinc.result:
importing piece from storage/innodb_plugin/mysql-test/innodb-autoinc.result
mysql-test/r/innodb.result:
result close to storage/innodb_plugin/innodb.result, except 4095 pages instead of 8191, which makes
sense as Summit runs with a buffer pool of 64M, whereas the mentioned result file was made with
a buffer pool of 128M.
mysql-test/r/mysqlshow.result:
InnoDB I_S tables have arrived
mysql-test/suite/funcs_1/r/is_columns_is.result:
queries changed a bit
mysql-test/suite/funcs_1/r/is_columns_is_embedded.result:
queries changed a bit
mysql-test/suite/funcs_1/r/is_tables_is.result:
queries changed a bit
mysql-test/suite/funcs_1/t/is_columns_is.test:
making I_S queries ignore InnoDB I_S tables
mysql-test/suite/funcs_1/t/is_columns_is_embedded.test:
making I_S queries ignore InnoDB I_S tables
mysql-test/suite/funcs_1/t/is_tables_is.test:
making I_S queries ignore InnoDB I_S tables
mysql-test/suite/innodb/r/innodb-zip.result:
result update
mysql-test/suite/innodb/t/innodb-zip.test:
439, as size of prefix key, throws error with certain system zlib (ubuntu
"intrepid") but not with zlib bundled with MySQL, because zlib's
compressBound() are different (and used by InnoDB's page_zip_empty_size()).
mysql-test/suite/sys_vars/r/innodb_file_per_table_basic.result:
result update
mysql-test/suite/sys_vars/r/innodb_lock_wait_timeout_basic.result:
result update
mysql-test/suite/sys_vars/r/innodb_sync_spin_loops_basic_32.result:
result update (default value is 30 in the plugin, 20 in the builtin)
mysql-test/suite/sys_vars/r/innodb_sync_spin_loops_basic_64.result:
result update (default value is 30 in the plugin, 20 in the builtin)
mysql-test/suite/sys_vars/r/table_definition_cache_basic.result:
result update (default value is 400 in Summit)
mysql-test/suite/sys_vars/t/innodb_file_per_table_basic.test:
variable is writable in the plugin (patch from Oracle)
mysql-test/suite/sys_vars/t/innodb_lock_wait_timeout_basic.test:
variable is per-session in the plugin (patch from Oracle)
mysql-test/t/information_schema.test:
making I_S queries ignore InnoDB I_S tables
mysql-test/t/information_schema_db.test:
making I_S queries ignore InnoDB I_S tables
mysql-test/t/innodb-autoinc.test:
importing piece from storage/innodb_plugin/mysql-test/innodb-autoinc.test
mysql-test/t/innodb.test:
importing most of storage/innodb_plugin/t/innodb.test. Most replace_result were not needed (no path printed), some where (for --embedded).
mysql-test/t/mysqlshow.test:
output of test now depends on InnoDB or not InnoDB. As there is no way to make mysqlshow
produce a single output in those two cases (no way to make it exclude InnoDB I_S
tables), let the test depend on InnoDB, it isn't a very selective condition, and the
test is simple enough.
storage/innobase/CMakeLists.txt:
thanks Vlad for the noticing () vs {}
2009-08-07 22:04:53 +02:00
set innodb_strict_mode=on;
Apply the following innodb-5.1-* snapshots: ss1489, ss1496, ss1550, ss1569.
After applying the snapshots, ensure that code conforms to the final version
of WL 3914.
It is signficant that, after these changes, InnoDB does not define MYSQL_SERVER,
and can be built as an independent storage engine plugin.
Fixes:
Bug#9709: InnoDB inconsistensy causes "Operating System Error 32/33"
Bug#18828: If InnoDB runs out of undo slots, it returns misleading 'table is full'
Bug#20090: InnoDB: Error: trying to declare trx to enter InnoDB
Bug#20352: Make ibuf_contract_for_n_pages tunable
Bug#21101: Wrong error on exceeding max row size for InnoDB table
Bug#21293: Deadlock detection prefers to kill long running FOR UPDATE queries
Bug#22819: SHOW INNODB STATUS crashes the server with an assertion failure under high load
Bug#25078: Make the replication thread to ignore innodb_thread_concurrency
Bug#25645: Assertion failure in file srv0srv.c
Bug#28138: indexing column prefixes produces corruption in InnoDB
BitKeeper/deleted/.del-Makefile.am~55504c43d99979e4:
Delete: storage/innobase/buf/Makefile.am
BitKeeper/deleted/.del-Makefile.am~79bb55303929b560:
Delete: storage/innobase/dict/Makefile.am
BitKeeper/deleted/.del-Makefile.am~7cd88e5f9a8d7ce8:
Delete: storage/innobase/data/Makefile.am
BitKeeper/deleted/.del-Makefile.am~e19a1fb29b1fe527:
Delete: storage/innobase/btr/Makefile.am
BitKeeper/deleted/.del-Makefile.am~4ae65b009d41d1d:
Delete: storage/innobase/eval/Makefile.am
BitKeeper/deleted/.del-Makefile.am~679131a02af3f6fb:
Delete: storage/innobase/fsp/Makefile.am
BitKeeper/deleted/.del-Makefile.am~6acac9ae30eabdb3:
Delete: storage/innobase/dyn/Makefile.am
BitKeeper/deleted/.del-Makefile.am~a5e6b4385717fcb7:
Delete: storage/innobase/fil/Makefile.am
BitKeeper/deleted/.del-Makefile.am~11d601934b49c19:
Delete: storage/innobase/fut/Makefile.am
BitKeeper/deleted/.del-Makefile.am~5aab37bf3b6c430:
Delete: storage/innobase/ibuf/Makefile.am
BitKeeper/deleted/.del-Makefile.am~af2d719bb6e66986:
Delete: storage/innobase/handler/Makefile.am
BitKeeper/deleted/.del-Makefile.am~f0dbbc7a78648e18:
Delete: storage/innobase/ha/Makefile.am
BitKeeper/deleted/.del-Makefile.am~41684e54a5b0d26a:
Delete: storage/innobase/log/Makefile.am
BitKeeper/deleted/.del-Makefile.am~edd95d7290ddeff3:
Delete: storage/innobase/lock/Makefile.am
BitKeeper/deleted/.del-Makefile.i:
Delete: storage/innobase/include/Makefile.i
BitKeeper/deleted/.del-Makefile.am~2a6ccdba41b591a3:
Delete: storage/innobase/mach/Makefile.am
BitKeeper/deleted/.del-Makefile.am~2bd35bda856342:
Delete: storage/innobase/os/Makefile.am
BitKeeper/deleted/.del-Makefile.am~8448688c5ab92132:
Delete: storage/innobase/mem/Makefile.am
BitKeeper/deleted/.del-Makefile.am~b5a7a8cfa711b6de:
Delete: storage/innobase/mtr/Makefile.am
BitKeeper/deleted/.del-Makefile.am~2cee8a309eb8eee2:
Delete: storage/innobase/page/Makefile.am
BitKeeper/deleted/.del-Makefile.am~3d0553f8aa9c456b:
Delete: storage/innobase/read/Makefile.am
BitKeeper/deleted/.del-Makefile.am~7b0c4abae6684f8c:
Delete: storage/innobase/pars/Makefile.am
BitKeeper/deleted/.del-Makefile.am~d0e0dd55cbd413f0:
Delete: storage/innobase/que/Makefile.am
BitKeeper/deleted/.del-Makefile.am~20a219ccf7825d65:
Delete: storage/innobase/row/Makefile.am
BitKeeper/deleted/.del-Makefile.am~37bdfb2973b2442b:
Delete: storage/innobase/rem/Makefile.am
BitKeeper/deleted/.del-Makefile.am~557098c4e5c01ee2:
Delete: storage/innobase/thr/Makefile.am
BitKeeper/deleted/.del-Makefile.am~fdfe12f48c2499af:
Delete: storage/innobase/sync/Makefile.am
BitKeeper/deleted/.del-Makefile.am~feb2280a52035d8d:
Delete: storage/innobase/srv/Makefile.am
BitKeeper/deleted/.del-Makefile.am~456d34c4816dbda4:
Delete: storage/innobase/ut/Makefile.am
BitKeeper/deleted/.del-Makefile.am~5ec2ef0d2c35e138:
Delete: storage/innobase/usr/Makefile.am
BitKeeper/deleted/.del-Makefile.am~d25c456e48393313:
Delete: storage/innobase/trx/Makefile.am
mysql-test/r/innodb.result:
Apply the following innodb-5.1-* snapshots: ss1489, ss1496, ss1550, ss1569.
Revision r1421:
Fix the innodb test by shifting some of the contents of the .result file.
Approved by: Marko
Revision r1422:
Fix for Bug#21101 - returns wrong error message when table column
defs exceed the max row size.
The fix returns a more appropriate error message. Add a test case to
innodb.test and expected output to innodb.result.
mysql-test/t/innodb.test:
Apply the following innodb-5.1-* snapshots: ss1489, ss1496, ss1550, ss1569.
Revision r1422:
Fix for Bug#21101 - returns wrong error message when table column
defs exceed the max row size.
The fix returns a more appropriate error message. Add a test case to
innodb.test and expected output to innodb.result.
storage/innobase/btr/btr0btr.c:
Apply the following innodb-5.1-* snapshots: ss1489, ss1496, ss1550, ss1569.
Revision r1546:
When buffering an insert to a prefix index of a variable-length column,
do not incorrectly mark the column as fixed-length. (Bug#28138)
ibuf_entry_build(): Instead of prefix_len, pass fixed_len to
dtype_new_store_for_order_and_null_size(). Add debug assertions.
btr_index_rec_validate(): Correct a comment about prefix indexes.
rec_get_converted_size_new(), rec_convert_dtuple_to_rec_new(): Add
debug assertions and comments.
dict_col_type_assert_equal(): New debug function.
storage/innobase/data/data0data.c:
Apply the following innodb-5.1-* snapshots: ss1489, ss1496, ss1550, ss1569.
Revision r1490:
Add #include <ctype.h>. Apparently, this header is no longer included by
the common headers. This may be related to WL#2936
(pluggable storage engines).
storage/innobase/data/data0type.c:
Apply the following innodb-5.1-* snapshots: ss1489, ss1496, ss1550, ss1569.
Revision r1513:
Split ut_a(a && b [&& c...]); into separate ut_a(a); ut_a(b); [ut_a(c); ...].
This makes it possible to see which expression was false by looking at the
error message.
Approved by: Marko
storage/innobase/dict/dict0crea.c:
Apply the following innodb-5.1-* snapshots: ss1489, ss1496, ss1550, ss1569.
Revision r1423:
Fix for Bug#18828. Return DB_TOO_MANY_CONCURRENT_TRXS when we run out
of UNDO slots in the rollback segment. This is a partial fix since the
MySQL error code requested to properly report the error condition back
to the client has not yet materialized. Currently we have #ifdef'd the
error code translation in ha_innodb.cc. This will have to be changed
as and when MySQl add the new requested code or an equivalent code
that we can then use.
Given the above, currently we will get the old behaviour, not the "fixed"
and intended behaviour.
storage/innobase/dict/dict0dict.c:
Apply the following innodb-5.1-* snapshots: ss1489, ss1496, ss1550, ss1569.
Revision r1490:
Add #include <ctype.h>. Apparently, this header is no longer included by
the common headers. This may be related to WL#2936
(pluggable storage engines).
Revision r1513:
Split ut_a(a && b [&& c...]); into separate ut_a(a); ut_a(b); [ut_a(c); ...].
This makes it possible to see which expression was false by looking at the
error message.
Approved by: Marko
Revision r1528:
Define an auxiliary macro UT_BITS_IN_BYTES() and use it where possible.
Revision r1529:
Revert r799, which was supposed to prevent similar cases as Bug#21638.
In reality, the patch breaks the handling of prefix indexes of
variable-length columns in ROW_FORMAT=COMPACT. Reverting the patch
is only a partial fix of Bug#28138.
Revision r1535:
Document that DICT_MAX_INDEX_COL_LEN must not be changed.
storage/innobase/fsp/fsp0fsp.c:
Apply the following innodb-5.1-* snapshots: ss1489, ss1496, ss1550, ss1569.
Revision r1513:
Split ut_a(a && b [&& c...]); into separate ut_a(a); ut_a(b); [ut_a(c); ...].
This makes it possible to see which expression was false by looking at the
error message.
Approved by: Marko
Revision r1528:
Define an auxiliary macro UT_BITS_IN_BYTES() and use it where possible.
storage/innobase/ibuf/ibuf0ibuf.c:
Apply the following innodb-5.1-* snapshots: ss1489, ss1496, ss1550, ss1569.
Revision r1420:
Output to the error log information about the limitations of
UNIV_IBUF_DEBUG.
innobase_start_or_create_for_mysql(): Note that crash recovery is broken
when UNIV_IBUF_DEBUG is defined.
ibuf_counts[]: Make this a two-dimensional array. No need to allocate
anything from the heap. Eliminate ibuf_counts_inited, as the array
will be zero-filled by the runtime environment.
ibuf_count_check(): New function, to print out an explanation before
assertion failure.
Revision r1528:
Define an auxiliary macro UT_BITS_IN_BYTES() and use it where possible.
Revision r1546:
When buffering an insert to a prefix index of a variable-length column,
do not incorrectly mark the column as fixed-length. (Bug#28138)
ibuf_entry_build(): Instead of prefix_len, pass fixed_len to
dtype_new_store_for_order_and_null_size(). Add debug assertions.
btr_index_rec_validate(): Correct a comment about prefix indexes.
rec_get_converted_size_new(), rec_convert_dtuple_to_rec_new(): Add
debug assertions and comments.
dict_col_type_assert_equal(): New debug function.
storage/innobase/include/db0err.h:
Apply the following innodb-5.1-* snapshots: ss1489, ss1496, ss1550, ss1569.
Revision r1423:
Fix for Bug#18828. Return DB_TOO_MANY_CONCURRENT_TRXS when we run out
of UNDO slots in the rollback segment. This is a partial fix since the
MySQL error code requested to properly report the error condition back
to the client has not yet materialized. Currently we have #ifdef'd the
error code translation in ha_innodb.cc. This will have to be changed
as and when MySQl add the new requested code or an equivalent code
that we can then use.
Given the above, currently we will get the old behaviour, not the "fixed"
and intended behaviour.
storage/innobase/include/dict0dict.h:
Apply the following innodb-5.1-* snapshots: ss1489, ss1496, ss1550, ss1569.
Revision r1546:
When buffering an insert to a prefix index of a variable-length column,
do not incorrectly mark the column as fixed-length. (Bug#28138)
ibuf_entry_build(): Instead of prefix_len, pass fixed_len to
dtype_new_store_for_order_and_null_size(). Add debug assertions.
btr_index_rec_validate(): Correct a comment about prefix indexes.
rec_get_converted_size_new(), rec_convert_dtuple_to_rec_new(): Add
debug assertions and comments.
dict_col_type_assert_equal(): New debug function.
storage/innobase/include/dict0dict.ic:
Apply the following innodb-5.1-* snapshots: ss1489, ss1496, ss1550, ss1569.
Revision r1546:
When buffering an insert to a prefix index of a variable-length column,
do not incorrectly mark the column as fixed-length. (Bug#28138)
ibuf_entry_build(): Instead of prefix_len, pass fixed_len to
dtype_new_store_for_order_and_null_size(). Add debug assertions.
btr_index_rec_validate(): Correct a comment about prefix indexes.
rec_get_converted_size_new(), rec_convert_dtuple_to_rec_new(): Add
debug assertions and comments.
dict_col_type_assert_equal(): New debug function.
storage/innobase/include/dict0mem.h:
Apply the following innodb-5.1-* snapshots: ss1489, ss1496, ss1550, ss1569.
Revision r1535:
Document that DICT_MAX_INDEX_COL_LEN must not be changed.
Revision r1536:
Change the comment to a more appropriate one. Discussed with Heikki on IM.
Approved by: Heikki
storage/innobase/include/ha_prototypes.h:
Apply the following innodb-5.1-* snapshots: ss1489, ss1496, ss1550, ss1569.
Revision r1482:
Fix Bug#25078 by always letting the replication thread on the slave
server to enter InnoDB. This can be made further customizable by the
user if we introduce a new config parameter. This will wait until
config parameters can be easily added.
Approved by: Marko
Revision r1501:
Fix Bug#21293: Consider transactions that had edited non-transactional
tables heavier than ones that had not. This helps killing the "right"
transaction in case of a deadlock.
Approved by: Heikki
storage/innobase/include/os0file.h:
Apply the following innodb-5.1-* snapshots: ss1489, ss1496, ss1550, ss1569.
Revision r1431:
Fix Bug#9709 by retrying (forever) if ERROR_SHARING_VIOLATION or
ERROR_LOCK_VIOLATION is encountered during file operation.
This is caused by backup software, so InnoDB should retry while the backup
software is done with the file.
Approved by: Heikki
storage/innobase/include/rem0rec.ic:
Apply the following innodb-5.1-* snapshots: ss1489, ss1496, ss1550, ss1569.
Revision r1569:
Fix some in:/out: comments.
Approved by: Marko
storage/innobase/include/row0mysql.h:
Apply the following innodb-5.1-* snapshots: ss1489, ss1496, ss1550, ss1569.
Revision r1422:
Fix for Bug#21101 - returns wrong error message when table column
defs exceed the max row size.
The fix returns a more appropriate error message. Add a test case to
innodb.test and expected output to innodb.result.
storage/innobase/include/trx0trx.h:
Apply the following innodb-5.1-* snapshots: ss1489, ss1496, ss1550, ss1569.
Revision r1462:
Fix typo in comment.
Revision r1486:
Improve the comment for trx_struct::undo_no.
Suggested by: Heikki
Revision r1488:
Make InnoDB pluggable. That is, merge the modifications from MySQL WL#2936
and adapt some things.
Note that ha_innodb.cc depends on mysql_tmpfile() being declared in
<mysql/plugin.h>. Until the function is declared there, you can
uncomment the buggy definition of mysql_tmpfile in ha_innodb.cc.
Remove storage/innobase/*/Makefile.am. The whole compilation is driven by
storage/innobase/Makefile.am and storage/innobase/plug.in.
plug.in: Declare InnoDB as a dynamic plugin.
ha_innodb.h: Remove the declarations of many global variables. The variables
are no longer directly referenced outside of storage/innobase.
trx_t: Add the field trx->duplicates.
trx_create(): Initialize the fields trx->active_trans and trx->duplicates.
innobase_query_is_update(): Remove. Consult trx->duplicates instead.
Revision r1497:
Add the number of locks acquired by a transaction to its weight when
choosing the lightest transaction to kill when a deadlock occurs.
This fixes Bug#21293 partially.
Approved by: Heikki
Revision r1501:
Fix Bug#21293: Consider transactions that had edited non-transactional
tables heavier than ones that had not. This helps killing the "right"
transaction in case of a deadlock.
Approved by: Heikki
storage/innobase/include/trx0undo.h:
Apply the following innodb-5.1-* snapshots: ss1489, ss1496, ss1550, ss1569.
Revision r1423:
Fix for Bug#18828. Return DB_TOO_MANY_CONCURRENT_TRXS when we run out
of UNDO slots in the rollback segment. This is a partial fix since the
MySQL error code requested to properly report the error condition back
to the client has not yet materialized. Currently we have #ifdef'd the
error code translation in ha_innodb.cc. This will have to be changed
as and when MySQl add the new requested code or an equivalent code
that we can then use.
Given the above, currently we will get the old behaviour, not the "fixed"
and intended behaviour.
storage/innobase/include/ut0ut.h:
Apply the following innodb-5.1-* snapshots: ss1489, ss1496, ss1550, ss1569.
Revision r1528:
Define an auxiliary macro UT_BITS_IN_BYTES() and use it where possible.
storage/innobase/lock/lock0lock.c:
Apply the following innodb-5.1-* snapshots: ss1489, ss1496, ss1550, ss1569.
Revision r1457:
Fix Bug#22819, remove assertion. (http://bugs.mysql.com/bug.php?id=22819)
Revision r1497:
Add the number of locks acquired by a transaction to its weight when
choosing the lightest transaction to kill when a deadlock occurs.
This fixes Bug#21293 partially.
Approved by: Heikki
Revision r1513:
Split ut_a(a && b [&& c...]); into separate ut_a(a); ut_a(b); [ut_a(c); ...].
This makes it possible to see which expression was false by looking at the
error message.
Approved by: Marko
storage/innobase/log/log0log.c:
Apply the following innodb-5.1-* snapshots: ss1489, ss1496, ss1550, ss1569.
Revision r1521:
Forward port r1520 from branches/5.0
Patch to allow monitor threads to stop before proceeding with normal shutdown.
Also have a separate time counter for tablespace monitor.
reviewed by: Heikki
Revision r1524:
Undo bad space formatting introduced in earlier commit r1521
spotted by: Marko
Revision r1533:
logs_empty_and_mark_files_at_shutdown(): Remove trailing whitespace that
was added in r1521.
storage/innobase/os/os0file.c:
Apply the following innodb-5.1-* snapshots: ss1489, ss1496, ss1550, ss1569.
Revision r1431:
Fix Bug#9709 by retrying (forever) if ERROR_SHARING_VIOLATION or
ERROR_LOCK_VIOLATION is encountered during file operation.
This is caused by backup software, so InnoDB should retry while the backup
software is done with the file.
Approved by: Heikki
storage/innobase/rem/rem0rec.c:
Apply the following innodb-5.1-* snapshots: ss1489, ss1496, ss1550, ss1569.
Revision r1528:
Define an auxiliary macro UT_BITS_IN_BYTES() and use it where possible.
Revision r1531:
rec_get_converted_size_new(): Simplify and move a debug assertion.
Revision r1546:
When buffering an insert to a prefix index of a variable-length column,
do not incorrectly mark the column as fixed-length. (Bug#28138)
ibuf_entry_build(): Instead of prefix_len, pass fixed_len to
dtype_new_store_for_order_and_null_size(). Add debug assertions.
btr_index_rec_validate(): Correct a comment about prefix indexes.
rec_get_converted_size_new(), rec_convert_dtuple_to_rec_new(): Add
debug assertions and comments.
dict_col_type_assert_equal(): New debug function.
Revision r1555:
rec_get_converted_size_new(): The total size of the infimum and supremum
records in ROW_FORMAT=COMPACT is REC_N_NEW_EXTRA_BYTES + 8. The
REC_N_NEW_EXTRA_BYTES was accidentally omitted in r1546. This function
should never be called on those records, though.
Revision r1569:
Fix some in:/out: comments.
Approved by: Marko
storage/innobase/row/row0ins.c:
Apply the following innodb-5.1-* snapshots: ss1489, ss1496, ss1550, ss1569.
Revision r1485:
Minor cleanup.
row_ins_check_foreign_constraint(), row_ins_scan_sec_index_for_duplicate():
Make use of the predicates page_rec_is_infimum() and page_rec_is_supremum().
Revision r1488:
Make InnoDB pluggable. That is, merge the modifications from MySQL WL#2936
and adapt some things.
Note that ha_innodb.cc depends on mysql_tmpfile() being declared in
<mysql/plugin.h>. Until the function is declared there, you can
uncomment the buggy definition of mysql_tmpfile in ha_innodb.cc.
Remove storage/innobase/*/Makefile.am. The whole compilation is driven by
storage/innobase/Makefile.am and storage/innobase/plug.in.
plug.in: Declare InnoDB as a dynamic plugin.
ha_innodb.h: Remove the declarations of many global variables. The variables
are no longer directly referenced outside of storage/innobase.
trx_t: Add the field trx->duplicates.
trx_create(): Initialize the fields trx->active_trans and trx->duplicates.
innobase_query_is_update(): Remove. Consult trx->duplicates instead.
Revision r1513:
Split ut_a(a && b [&& c...]); into separate ut_a(a); ut_a(b); [ut_a(c); ...].
This makes it possible to see which expression was false by looking at the
error message.
Approved by: Marko
storage/innobase/row/row0mysql.c:
Apply the following innodb-5.1-* snapshots: ss1489, ss1496, ss1550, ss1569.
Revision r1422:
Fix for Bug#21101 - returns wrong error message when table column
defs exceed the max row size.
The fix returns a more appropriate error message. Add a test case to
innodb.test and expected output to innodb.result.
Revision r1423:
Fix for Bug#18828. Return DB_TOO_MANY_CONCURRENT_TRXS when we run out
of UNDO slots in the rollback segment. This is a partial fix since the
MySQL error code requested to properly report the error condition back
to the client has not yet materialized. Currently we have #ifdef'd the
error code translation in ha_innodb.cc. This will have to be changed
as and when MySQl add the new requested code or an equivalent code
that we can then use.
Given the above, currently we will get the old behaviour, not the "fixed"
and intended behaviour.
storage/innobase/row/row0row.c:
Apply the following innodb-5.1-* snapshots: ss1489, ss1496, ss1550, ss1569.
Revision r1513:
Split ut_a(a && b [&& c...]); into separate ut_a(a); ut_a(b); [ut_a(c); ...].
This makes it possible to see which expression was false by looking at the
error message.
Approved by: Marko
Revision r1529:
Revert r799, which was supposed to prevent similar cases as Bug#21638.
In reality, the patch breaks the handling of prefix indexes of
variable-length columns in ROW_FORMAT=COMPACT. Reverting the patch
is only a partial fix of Bug#28138.
storage/innobase/row/row0sel.c:
Apply the following innodb-5.1-* snapshots: ss1489, ss1496, ss1550, ss1569.
Revision r1452:
Fix phantom reads (http://bugs.mysql.com/27197) following Heikki's
patch in the bug followup.
Approved by: Heikki
Revision r1455:
Reindent with tabs instead of spaces.
Spotted by: Marko
storage/innobase/srv/srv0srv.c:
Apply the following innodb-5.1-* snapshots: ss1489, ss1496, ss1550, ss1569.
Revision r1424:
Bug#20352. Added variable srv_insert_buffer_batch_size. We want to make
this variable settable. Since the pluggable engine interface currently
doesn't provide a usable mechanism, we will add the latter functionality
once it's available.
Revision r1426:
Fix code indentation from r1424.
Revision r1459:
Fix typo in the comment.
Revision r1482:
Fix Bug#25078 by always letting the replication thread on the slave
server to enter InnoDB. This can be made further customizable by the
user if we introduce a new config parameter. This will wait until
config parameters can be easily added.
Approved by: Marko
Revision r1487:
Fix typo in comment.
Spotted by: Marko
Revision r1521:
Forward port r1520 from branches/5.0
Patch to allow monitor threads to stop before proceeding with normal shutdown.
Also have a separate time counter for tablespace monitor.
reviewed by: Heikki
Revision r1532:
srv_lock_timeout_and_monitor_thread(): Correct the indentation that was
broken in r1521.
Revision r1553:
Fix Bug#20090 as suggested in the bug followup by Heikki.
Approved by: Heikki
storage/innobase/srv/srv0start.c:
Apply the following innodb-5.1-* snapshots: ss1489, ss1496, ss1550, ss1569.
Revision r1420:
Output to the error log information about the limitations of
UNIV_IBUF_DEBUG.
innobase_start_or_create_for_mysql(): Note that crash recovery is broken
when UNIV_IBUF_DEBUG is defined.
ibuf_counts[]: Make this a two-dimensional array. No need to allocate
anything from the heap. Eliminate ibuf_counts_inited, as the array
will be zero-filled by the runtime environment.
ibuf_count_check(): New function, to print out an explanation before
assertion failure.
storage/innobase/sync/sync0arr.c:
Apply the following innodb-5.1-* snapshots: ss1489, ss1496, ss1550, ss1569.
Revision r1513:
Split ut_a(a && b [&& c...]); into separate ut_a(a); ut_a(b); [ut_a(c); ...].
This makes it possible to see which expression was false by looking at the
error message.
Approved by: Marko
storage/innobase/trx/trx0rec.c:
Apply the following innodb-5.1-* snapshots: ss1489, ss1496, ss1550, ss1569.
Revision r1423:
Fix for Bug#18828. Return DB_TOO_MANY_CONCURRENT_TRXS when we run out
of UNDO slots in the rollback segment. This is a partial fix since the
MySQL error code requested to properly report the error condition back
to the client has not yet materialized. Currently we have #ifdef'd the
error code translation in ha_innodb.cc. This will have to be changed
as and when MySQl add the new requested code or an equivalent code
that we can then use.
Given the above, currently we will get the old behaviour, not the "fixed"
and intended behaviour.
storage/innobase/trx/trx0trx.c:
Apply the following innodb-5.1-* snapshots: ss1489, ss1496, ss1550, ss1569.
Revision r1488:
Make InnoDB pluggable. That is, merge the modifications from MySQL WL#2936
and adapt some things.
Note that ha_innodb.cc depends on mysql_tmpfile() being declared in
<mysql/plugin.h>. Until the function is declared there, you can
uncomment the buggy definition of mysql_tmpfile in ha_innodb.cc.
Remove storage/innobase/*/Makefile.am. The whole compilation is driven by
storage/innobase/Makefile.am and storage/innobase/plug.in.
plug.in: Declare InnoDB as a dynamic plugin.
ha_innodb.h: Remove the declarations of many global variables. The variables
are no longer directly referenced outside of storage/innobase.
trx_t: Add the field trx->duplicates.
trx_create(): Initialize the fields trx->active_trans and trx->duplicates.
innobase_query_is_update(): Remove. Consult trx->duplicates instead.
Revision r1491:
Fix typo in comment.
Revision r1497:
Add the number of locks acquired by a transaction to its weight when
choosing the lightest transaction to kill when a deadlock occurs.
This fixes Bug#21293 partially.
Approved by: Heikki
Revision r1501:
Fix Bug#21293: Consider transactions that had edited non-transactional
tables heavier than ones that had not. This helps killing the "right"
transaction in case of a deadlock.
Approved by: Heikki
Revision r1522:
trx0trx.c: Add missing #include "ha_prototypes.h".
storage/innobase/trx/trx0undo.c:
Apply the following innodb-5.1-* snapshots: ss1489, ss1496, ss1550, ss1569.
Revision r1423:
Fix for Bug#18828. Return DB_TOO_MANY_CONCURRENT_TRXS when we run out
of UNDO slots in the rollback segment. This is a partial fix since the
MySQL error code requested to properly report the error condition back
to the client has not yet materialized. Currently we have #ifdef'd the
error code translation in ha_innodb.cc. This will have to be changed
as and when MySQl add the new requested code or an equivalent code
that we can then use.
Given the above, currently we will get the old behaviour, not the "fixed"
and intended behaviour.
storage/innobase/ut/ut0ut.c:
Apply the following innodb-5.1-* snapshots: ss1489, ss1496, ss1550, ss1569.
Revision r1490:
Add #include <ctype.h>. Apparently, this header is no longer included by
the common headers. This may be related to WL#2936
(pluggable storage engines).
mysql-test/r/innodb_trx_weight.result:
Apply the following innodb-5.1-* snapshots: ss1489, ss1496, ss1550, ss1569.
Revision r1498:
Add a test about the behavior introduced in r1497.
Revision r1501:
Fix Bug#21293: Consider transactions that had edited non-transactional
tables heavier than ones that had not. This helps killing the "right"
transaction in case of a deadlock.
Approved by: Heikki
mysql-test/include/innodb_trx_weight.inc:
Apply the following innodb-5.1-* snapshots: ss1489, ss1496, ss1550, ss1569.
Revision r1501:
Fix Bug#21293: Consider transactions that had edited non-transactional
tables heavier than ones that had not. This helps killing the "right"
transaction in case of a deadlock.
Approved by: Heikki
Revision r1556:
mysql-test/innodb_trx_weight.inc: Add username root to the "connect" statement.
The Unix user running mysql-test-run usually does not have any privileges
on the MySQL test database.
mysql-test/t/innodb_trx_weight.test:
Fixes after merging InnoDB snapshots.
Revision r1498:
Add a test about the behavior introduced in r1497.
Revision r1501:
Fix Bug#21293: Consider transactions that had edited non-transactional
tables heavier than ones that had not. This helps killing the "right"
transaction in case of a deadlock.
Approved by: Heikki
sql/sql_class.cc:
Fixes after merging InnoDB snapshots.
storage/innobase/Makefile.am:
Fixes after merging InnoDB snapshots.
Revision r1488:
Make InnoDB pluggable. That is, merge the modifications from MySQL WL#2936
and adapt some things.
Note that ha_innodb.cc depends on mysql_tmpfile() being declared in
<mysql/plugin.h>. Until the function is declared there, you can
uncomment the buggy definition of mysql_tmpfile in ha_innodb.cc.
Remove storage/innobase/*/Makefile.am. The whole compilation is driven by
storage/innobase/Makefile.am and storage/innobase/plug.in.
plug.in: Declare InnoDB as a dynamic plugin.
ha_innodb.h: Remove the declarations of many global variables. The variables
are no longer directly referenced outside of storage/innobase.
trx_t: Add the field trx->duplicates.
trx_create(): Initialize the fields trx->active_trans and trx->duplicates.
innobase_query_is_update(): Remove. Consult trx->duplicates instead.
Revision r1488:
Make InnoDB pluggable. That is, merge the modifications from MySQL WL#2936
and adapt some things.
Note that ha_innodb.cc depends on mysql_tmpfile() being declared in
<mysql/plugin.h>. Until the function is declared there, you can
uncomment the buggy definition of mysql_tmpfile in ha_innodb.cc.
Remove storage/innobase/*/Makefile.am. The whole compilation is driven by
storage/innobase/Makefile.am and storage/innobase/plug.in.
plug.in: Declare InnoDB as a dynamic plugin.
ha_innodb.h: Remove the declarations of many global variables. The variables
are no longer directly referenced outside of storage/innobase.
trx_t: Add the field trx->duplicates.
trx_create(): Initialize the fields trx->active_trans and trx->duplicates.
innobase_query_is_update(): Remove. Consult trx->duplicates instead.
Revision r1488:
Make InnoDB pluggable. That is, merge the modifications from MySQL WL#2936
and adapt some things.
Note that ha_innodb.cc depends on mysql_tmpfile() being declared in
<mysql/plugin.h>. Until the function is declared there, you can
uncomment the buggy definition of mysql_tmpfile in ha_innodb.cc.
Remove storage/innobase/*/Makefile.am. The whole compilation is driven by
storage/innobase/Makefile.am and storage/innobase/plug.in.
plug.in: Declare InnoDB as a dynamic plugin.
ha_innodb.h: Remove the declarations of many global variables. The variables
are no longer directly referenced outside of storage/innobase.
trx_t: Add the field trx->duplicates.
trx_create(): Initialize the fields trx->active_trans and trx->duplicates.
innobase_query_is_update(): Remove. Consult trx->duplicates instead.
Revision r1488:
Make InnoDB pluggable. That is, merge the modifications from MySQL WL#2936
and adapt some things.
Note that ha_innodb.cc depends on mysql_tmpfile() being declared in
<mysql/plugin.h>. Until the function is declared there, you can
uncomment the buggy definition of mysql_tmpfile in ha_innodb.cc.
Remove storage/innobase/*/Makefile.am. The whole compilation is driven by
storage/innobase/Makefile.am and storage/innobase/plug.in.
plug.in: Declare InnoDB as a dynamic plugin.
ha_innodb.h: Remove the declarations of many global variables. The variables
are no longer directly referenced outside of storage/innobase.
trx_t: Add the field trx->duplicates.
trx_create(): Initialize the fields trx->active_trans and trx->duplicates.
innobase_query_is_update(): Remove. Consult trx->duplicates instead.
Revision r1488:
Make InnoDB pluggable. That is, merge the modifications from MySQL WL#2936
and adapt some things.
Note that ha_innodb.cc depends on mysql_tmpfile() being declared in
<mysql/plugin.h>. Until the function is declared there, you can
uncomment the buggy definition of mysql_tmpfile in ha_innodb.cc.
Remove storage/innobase/*/Makefile.am. The whole compilation is driven by
storage/innobase/Makefile.am and storage/innobase/plug.in.
plug.in: Declare InnoDB as a dynamic plugin.
ha_innodb.h: Remove the declarations of many global variables. The variables
are no longer directly referenced outside of storage/innobase.
trx_t: Add the field trx->duplicates.
trx_create(): Initialize the fields trx->active_trans and trx->duplicates.
innobase_query_is_update(): Remove. Consult trx->duplicates instead.
Revision r1488:
Make InnoDB pluggable. That is, merge the modifications from MySQL WL#2936
and adapt some things.
Note that ha_innodb.cc depends on mysql_tmpfile() being declared in
<mysql/plugin.h>. Until the function is declared there, you can
uncomment the buggy definition of mysql_tmpfile in ha_innodb.cc.
Remove storage/innobase/*/Makefile.am. The whole compilation is driven by
storage/innobase/Makefile.am and storage/innobase/plug.in.
plug.in: Declare InnoDB as a dynamic plugin.
ha_innodb.h: Remove the declarations of many global variables. The variables
are no longer directly referenced outside of storage/innobase.
trx_t: Add the field trx->duplicates.
trx_create(): Initialize the fields trx->active_trans and trx->duplicates.
innobase_query_is_update(): Remove. Consult trx->duplicates instead.
Revision r1488:
Make InnoDB pluggable. That is, merge the modifications from MySQL WL#2936
and adapt some things.
Note that ha_innodb.cc depends on mysql_tmpfile() being declared in
<mysql/plugin.h>. Until the function is declared there, you can
uncomment the buggy definition of mysql_tmpfile in ha_innodb.cc.
Remove storage/innobase/*/Makefile.am. The whole compilation is driven by
storage/innobase/Makefile.am and storage/innobase/plug.in.
plug.in: Declare InnoDB as a dynamic plugin.
ha_innodb.h: Remove the declarations of many global variables. The variables
are no longer directly referenced outside of storage/innobase.
trx_t: Add the field trx->duplicates.
trx_create(): Initialize the fields trx->active_trans and trx->duplicates.
innobase_query_is_update(): Remove. Consult trx->duplicates instead.
Revision r1488:
Make InnoDB pluggable. That is, merge the modifications from MySQL WL#2936
and adapt some things.
Note that ha_innodb.cc depends on mysql_tmpfile() being declared in
<mysql/plugin.h>. Until the function is declared there, you can
uncomment the buggy definition of mysql_tmpfile in ha_innodb.cc.
Remove storage/innobase/*/Makefile.am. The whole compilation is driven by
storage/innobase/Makefile.am and storage/innobase/plug.in.
plug.in: Declare InnoDB as a dynamic plugin.
ha_innodb.h: Remove the declarations of many global variables. The variables
are no longer directly referenced outside of storage/innobase.
trx_t: Add the field trx->duplicates.
trx_create(): Initialize the fields trx->active_trans and trx->duplicates.
innobase_query_is_update(): Remove. Consult trx->duplicates instead.
Revision r1488:
Make InnoDB pluggable. That is, merge the modifications from MySQL WL#2936
and adapt some things.
Note that ha_innodb.cc depends on mysql_tmpfile() being declared in
<mysql/plugin.h>. Until the function is declared there, you can
uncomment the buggy definition of mysql_tmpfile in ha_innodb.cc.
Remove storage/innobase/*/Makefile.am. The whole compilation is driven by
storage/innobase/Makefile.am and storage/innobase/plug.in.
plug.in: Declare InnoDB as a dynamic plugin.
ha_innodb.h: Remove the declarations of many global variables. The variables
are no longer directly referenced outside of storage/innobase.
trx_t: Add the field trx->duplicates.
trx_create(): Initialize the fields trx->active_trans and trx->duplicates.
innobase_query_is_update(): Remove. Consult trx->duplicates instead.
Revision r1488:
Make InnoDB pluggable. That is, merge the modifications from MySQL WL#2936
and adapt some things.
Note that ha_innodb.cc depends on mysql_tmpfile() being declared in
<mysql/plugin.h>. Until the function is declared there, you can
uncomment the buggy definition of mysql_tmpfile in ha_innodb.cc.
Remove storage/innobase/*/Makefile.am. The whole compilation is driven by
storage/innobase/Makefile.am and storage/innobase/plug.in.
plug.in: Declare InnoDB as a dynamic plugin.
ha_innodb.h: Remove the declarations of many global variables. The variables
are no longer directly referenced outside of storage/innobase.
trx_t: Add the field trx->duplicates.
trx_create(): Initialize the fields trx->active_trans and trx->duplicates.
innobase_query_is_update(): Remove. Consult trx->duplicates instead.
Revision r1488:
Make InnoDB pluggable. That is, merge the modifications from MySQL WL#2936
and adapt some things.
Note that ha_innodb.cc depends on mysql_tmpfile() being declared in
<mysql/plugin.h>. Until the function is declared there, you can
uncomment the buggy definition of mysql_tmpfile in ha_innodb.cc.
Remove storage/innobase/*/Makefile.am. The whole compilation is driven by
storage/innobase/Makefile.am and storage/innobase/plug.in.
plug.in: Declare InnoDB as a dynamic plugin.
ha_innodb.h: Remove the declarations of many global variables. The variables
are no longer directly referenced outside of storage/innobase.
trx_t: Add the field trx->duplicates.
trx_create(): Initialize the fields trx->active_trans and trx->duplicates.
innobase_query_is_update(): Remove. Consult trx->duplicates instead.
Revision r1488:
Make InnoDB pluggable. That is, merge the modifications from MySQL WL#2936
and adapt some things.
Note that ha_innodb.cc depends on mysql_tmpfile() being declared in
<mysql/plugin.h>. Until the function is declared there, you can
uncomment the buggy definition of mysql_tmpfile in ha_innodb.cc.
Remove storage/innobase/*/Makefile.am. The whole compilation is driven by
storage/innobase/Makefile.am and storage/innobase/plug.in.
plug.in: Declare InnoDB as a dynamic plugin.
ha_innodb.h: Remove the declarations of many global variables. The variables
are no longer directly referenced outside of storage/innobase.
trx_t: Add the field trx->duplicates.
trx_create(): Initialize the fields trx->active_trans and trx->duplicates.
innobase_query_is_update(): Remove. Consult trx->duplicates instead.
Revision r1488:
Make InnoDB pluggable. That is, merge the modifications from MySQL WL#2936
and adapt some things.
Note that ha_innodb.cc depends on mysql_tmpfile() being declared in
<mysql/plugin.h>. Until the function is declared there, you can
uncomment the buggy definition of mysql_tmpfile in ha_innodb.cc.
Remove storage/innobase/*/Makefile.am. The whole compilation is driven by
storage/innobase/Makefile.am and storage/innobase/plug.in.
plug.in: Declare InnoDB as a dynamic plugin.
ha_innodb.h: Remove the declarations of many global variables. The variables
are no longer directly referenced outside of storage/innobase.
trx_t: Add the field trx->duplicates.
trx_create(): Initialize the fields trx->active_trans and trx->duplicates.
innobase_query_is_update(): Remove. Consult trx->duplicates instead.
Revision r1488:
Make InnoDB pluggable. That is, merge the modifications from MySQL WL#2936
and adapt some things.
Note that ha_innodb.cc depends on mysql_tmpfile() being declared in
<mysql/plugin.h>. Until the function is declared there, you can
uncomment the buggy definition of mysql_tmpfile in ha_innodb.cc.
Remove storage/innobase/*/Makefile.am. The whole compilation is driven by
storage/innobase/Makefile.am and storage/innobase/plug.in.
plug.in: Declare InnoDB as a dynamic plugin.
ha_innodb.h: Remove the declarations of many global variables. The variables
are no longer directly referenced outside of storage/innobase.
trx_t: Add the field trx->duplicates.
trx_create(): Initialize the fields trx->active_trans and trx->duplicates.
innobase_query_is_update(): Remove. Consult trx->duplicates instead.
Revision r1488:
Make InnoDB pluggable. That is, merge the modifications from MySQL WL#2936
and adapt some things.
Note that ha_innodb.cc depends on mysql_tmpfile() being declared in
<mysql/plugin.h>. Until the function is declared there, you can
uncomment the buggy definition of mysql_tmpfile in ha_innodb.cc.
Remove storage/innobase/*/Makefile.am. The whole compilation is driven by
storage/innobase/Makefile.am and storage/innobase/plug.in.
plug.in: Declare InnoDB as a dynamic plugin.
ha_innodb.h: Remove the declarations of many global variables. The variables
are no longer directly referenced outside of storage/innobase.
trx_t: Add the field trx->duplicates.
trx_create(): Initialize the fields trx->active_trans and trx->duplicates.
innobase_query_is_update(): Remove. Consult trx->duplicates instead.
Revision r1488:
Make InnoDB pluggable. That is, merge the modifications from MySQL WL#2936
and adapt some things.
Note that ha_innodb.cc depends on mysql_tmpfile() being declared in
<mysql/plugin.h>. Until the function is declared there, you can
uncomment the buggy definition of mysql_tmpfile in ha_innodb.cc.
Remove storage/innobase/*/Makefile.am. The whole compilation is driven by
storage/innobase/Makefile.am and storage/innobase/plug.in.
plug.in: Declare InnoDB as a dynamic plugin.
ha_innodb.h: Remove the declarations of many global variables. The variables
are no longer directly referenced outside of storage/innobase.
trx_t: Add the field trx->duplicates.
trx_create(): Initialize the fields trx->active_trans and trx->duplicates.
innobase_query_is_update(): Remove. Consult trx->duplicates instead.
Revision r1488:
Make InnoDB pluggable. That is, merge the modifications from MySQL WL#2936
and adapt some things.
Note that ha_innodb.cc depends on mysql_tmpfile() being declared in
<mysql/plugin.h>. Until the function is declared there, you can
uncomment the buggy definition of mysql_tmpfile in ha_innodb.cc.
Remove storage/innobase/*/Makefile.am. The whole compilation is driven by
storage/innobase/Makefile.am and storage/innobase/plug.in.
plug.in: Declare InnoDB as a dynamic plugin.
ha_innodb.h: Remove the declarations of many global variables. The variables
are no longer directly referenced outside of storage/innobase.
trx_t: Add the field trx->duplicates.
trx_create(): Initialize the fields trx->active_trans and trx->duplicates.
innobase_query_is_update(): Remove. Consult trx->duplicates instead.
Revision r1488:
Make InnoDB pluggable. That is, merge the modifications from MySQL WL#2936
and adapt some things.
Note that ha_innodb.cc depends on mysql_tmpfile() being declared in
<mysql/plugin.h>. Until the function is declared there, you can
uncomment the buggy definition of mysql_tmpfile in ha_innodb.cc.
Remove storage/innobase/*/Makefile.am. The whole compilation is driven by
storage/innobase/Makefile.am and storage/innobase/plug.in.
plug.in: Declare InnoDB as a dynamic plugin.
ha_innodb.h: Remove the declarations of many global variables. The variables
are no longer directly referenced outside of storage/innobase.
trx_t: Add the field trx->duplicates.
trx_create(): Initialize the fields trx->active_trans and trx->duplicates.
innobase_query_is_update(): Remove. Consult trx->duplicates instead.
Revision r1488:
Make InnoDB pluggable. That is, merge the modifications from MySQL WL#2936
and adapt some things.
Note that ha_innodb.cc depends on mysql_tmpfile() being declared in
<mysql/plugin.h>. Until the function is declared there, you can
uncomment the buggy definition of mysql_tmpfile in ha_innodb.cc.
Remove storage/innobase/*/Makefile.am. The whole compilation is driven by
storage/innobase/Makefile.am and storage/innobase/plug.in.
plug.in: Declare InnoDB as a dynamic plugin.
ha_innodb.h: Remove the declarations of many global variables. The variables
are no longer directly referenced outside of storage/innobase.
trx_t: Add the field trx->duplicates.
trx_create(): Initialize the fields trx->active_trans and trx->duplicates.
innobase_query_is_update(): Remove. Consult trx->duplicates instead.
Revision r1488:
Make InnoDB pluggable. That is, merge the modifications from MySQL WL#2936
and adapt some things.
Note that ha_innodb.cc depends on mysql_tmpfile() being declared in
<mysql/plugin.h>. Until the function is declared there, you can
uncomment the buggy definition of mysql_tmpfile in ha_innodb.cc.
Remove storage/innobase/*/Makefile.am. The whole compilation is driven by
storage/innobase/Makefile.am and storage/innobase/plug.in.
plug.in: Declare InnoDB as a dynamic plugin.
ha_innodb.h: Remove the declarations of many global variables. The variables
are no longer directly referenced outside of storage/innobase.
trx_t: Add the field trx->duplicates.
trx_create(): Initialize the fields trx->active_trans and trx->duplicates.
innobase_query_is_update(): Remove. Consult trx->duplicates instead.
Revision r1488:
Make InnoDB pluggable. That is, merge the modifications from MySQL WL#2936
and adapt some things.
Note that ha_innodb.cc depends on mysql_tmpfile() being declared in
<mysql/plugin.h>. Until the function is declared there, you can
uncomment the buggy definition of mysql_tmpfile in ha_innodb.cc.
Remove storage/innobase/*/Makefile.am. The whole compilation is driven by
storage/innobase/Makefile.am and storage/innobase/plug.in.
plug.in: Declare InnoDB as a dynamic plugin.
ha_innodb.h: Remove the declarations of many global variables. The variables
are no longer directly referenced outside of storage/innobase.
trx_t: Add the field trx->duplicates.
trx_create(): Initialize the fields trx->active_trans and trx->duplicates.
innobase_query_is_update(): Remove. Consult trx->duplicates instead.
Revision r1488:
Make InnoDB pluggable. That is, merge the modifications from MySQL WL#2936
and adapt some things.
Note that ha_innodb.cc depends on mysql_tmpfile() being declared in
<mysql/plugin.h>. Until the function is declared there, you can
uncomment the buggy definition of mysql_tmpfile in ha_innodb.cc.
Remove storage/innobase/*/Makefile.am. The whole compilation is driven by
storage/innobase/Makefile.am and storage/innobase/plug.in.
plug.in: Declare InnoDB as a dynamic plugin.
ha_innodb.h: Remove the declarations of many global variables. The variables
are no longer directly referenced outside of storage/innobase.
trx_t: Add the field trx->duplicates.
trx_create(): Initialize the fields trx->active_trans and trx->duplicates.
innobase_query_is_update(): Remove. Consult trx->duplicates instead.
Revision r1488:
Make InnoDB pluggable. That is, merge the modifications from MySQL WL#2936
and adapt some things.
Note that ha_innodb.cc depends on mysql_tmpfile() being declared in
<mysql/plugin.h>. Until the function is declared there, you can
uncomment the buggy definition of mysql_tmpfile in ha_innodb.cc.
Remove storage/innobase/*/Makefile.am. The whole compilation is driven by
storage/innobase/Makefile.am and storage/innobase/plug.in.
plug.in: Declare InnoDB as a dynamic plugin.
ha_innodb.h: Remove the declarations of many global variables. The variables
are no longer directly referenced outside of storage/innobase.
trx_t: Add the field trx->duplicates.
trx_create(): Initialize the fields trx->active_trans and trx->duplicates.
innobase_query_is_update(): Remove. Consult trx->duplicates instead.
Revision r1488:
Make InnoDB pluggable. That is, merge the modifications from MySQL WL#2936
and adapt some things.
Note that ha_innodb.cc depends on mysql_tmpfile() being declared in
<mysql/plugin.h>. Until the function is declared there, you can
uncomment the buggy definition of mysql_tmpfile in ha_innodb.cc.
Remove storage/innobase/*/Makefile.am. The whole compilation is driven by
storage/innobase/Makefile.am and storage/innobase/plug.in.
plug.in: Declare InnoDB as a dynamic plugin.
ha_innodb.h: Remove the declarations of many global variables. The variables
are no longer directly referenced outside of storage/innobase.
trx_t: Add the field trx->duplicates.
trx_create(): Initialize the fields trx->active_trans and trx->duplicates.
innobase_query_is_update(): Remove. Consult trx->duplicates instead.
Revision r1488:
Make InnoDB pluggable. That is, merge the modifications from MySQL WL#2936
and adapt some things.
Note that ha_innodb.cc depends on mysql_tmpfile() being declared in
<mysql/plugin.h>. Until the function is declared there, you can
uncomment the buggy definition of mysql_tmpfile in ha_innodb.cc.
Remove storage/innobase/*/Makefile.am. The whole compilation is driven by
storage/innobase/Makefile.am and storage/innobase/plug.in.
plug.in: Declare InnoDB as a dynamic plugin.
ha_innodb.h: Remove the declarations of many global variables. The variables
are no longer directly referenced outside of storage/innobase.
trx_t: Add the field trx->duplicates.
trx_create(): Initialize the fields trx->active_trans and trx->duplicates.
innobase_query_is_update(): Remove. Consult trx->duplicates instead.
Revision r1488:
Make InnoDB pluggable. That is, merge the modifications from MySQL WL#2936
and adapt some things.
Note that ha_innodb.cc depends on mysql_tmpfile() being declared in
<mysql/plugin.h>. Until the function is declared there, you can
uncomment the buggy definition of mysql_tmpfile in ha_innodb.cc.
Remove storage/innobase/*/Makefile.am. The whole compilation is driven by
storage/innobase/Makefile.am and storage/innobase/plug.in.
plug.in: Declare InnoDB as a dynamic plugin.
ha_innodb.h: Remove the declarations of many global variables. The variables
are no longer directly referenced outside of storage/innobase.
trx_t: Add the field trx->duplicates.
trx_create(): Initialize the fields trx->active_trans and trx->duplicates.
innobase_query_is_update(): Remove. Consult trx->duplicates instead.
Revision r1488:
Make InnoDB pluggable. That is, merge the modifications from MySQL WL#2936
and adapt some things.
Note that ha_innodb.cc depends on mysql_tmpfile() being declared in
<mysql/plugin.h>. Until the function is declared there, you can
uncomment the buggy definition of mysql_tmpfile in ha_innodb.cc.
Remove storage/innobase/*/Makefile.am. The whole compilation is driven by
storage/innobase/Makefile.am and storage/innobase/plug.in.
plug.in: Declare InnoDB as a dynamic plugin.
ha_innodb.h: Remove the declarations of many global variables. The variables
are no longer directly referenced outside of storage/innobase.
trx_t: Add the field trx->duplicates.
trx_create(): Initialize the fields trx->active_trans and trx->duplicates.
innobase_query_is_update(): Remove. Consult trx->duplicates instead.
Revision r1488:
Make InnoDB pluggable. That is, merge the modifications from MySQL WL#2936
and adapt some things.
Note that ha_innodb.cc depends on mysql_tmpfile() being declared in
<mysql/plugin.h>. Until the function is declared there, you can
uncomment the buggy definition of mysql_tmpfile in ha_innodb.cc.
Remove storage/innobase/*/Makefile.am. The whole compilation is driven by
storage/innobase/Makefile.am and storage/innobase/plug.in.
plug.in: Declare InnoDB as a dynamic plugin.
ha_innodb.h: Remove the declarations of many global variables. The variables
are no longer directly referenced outside of storage/innobase.
trx_t: Add the field trx->duplicates.
trx_create(): Initialize the fields trx->active_trans and trx->duplicates.
innobase_query_is_update(): Remove. Consult trx->duplicates instead.
Revision r1488:
Make InnoDB pluggable. That is, merge the modifications from MySQL WL#2936
and adapt some things.
Note that ha_innodb.cc depends on mysql_tmpfile() being declared in
<mysql/plugin.h>. Until the function is declared there, you can
uncomment the buggy definition of mysql_tmpfile in ha_innodb.cc.
Remove storage/innobase/*/Makefile.am. The whole compilation is driven by
storage/innobase/Makefile.am and storage/innobase/plug.in.
plug.in: Declare InnoDB as a dynamic plugin.
ha_innodb.h: Remove the declarations of many global variables. The variables
are no longer directly referenced outside of storage/innobase.
trx_t: Add the field trx->duplicates.
trx_create(): Initialize the fields trx->active_trans and trx->duplicates.
innobase_query_is_update(): Remove. Consult trx->duplicates instead.
Revision r1488:
Make InnoDB pluggable. That is, merge the modifications from MySQL WL#2936
and adapt some things.
Note that ha_innodb.cc depends on mysql_tmpfile() being declared in
<mysql/plugin.h>. Until the function is declared there, you can
uncomment the buggy definition of mysql_tmpfile in ha_innodb.cc.
Remove storage/innobase/*/Makefile.am. The whole compilation is driven by
storage/innobase/Makefile.am and storage/innobase/plug.in.
plug.in: Declare InnoDB as a dynamic plugin.
ha_innodb.h: Remove the declarations of many global variables. The variables
are no longer directly referenced outside of storage/innobase.
trx_t: Add the field trx->duplicates.
trx_create(): Initialize the fields trx->active_trans and trx->duplicates.
innobase_query_is_update(): Remove. Consult trx->duplicates instead.
Revision r1488:
Make InnoDB pluggable. That is, merge the modifications from MySQL WL#2936
and adapt some things.
Note that ha_innodb.cc depends on mysql_tmpfile() being declared in
<mysql/plugin.h>. Until the function is declared there, you can
uncomment the buggy definition of mysql_tmpfile in ha_innodb.cc.
Remove storage/innobase/*/Makefile.am. The whole compilation is driven by
storage/innobase/Makefile.am and storage/innobase/plug.in.
plug.in: Declare InnoDB as a dynamic plugin.
ha_innodb.h: Remove the declarations of many global variables. The variables
are no longer directly referenced outside of storage/innobase.
trx_t: Add the field trx->duplicates.
trx_create(): Initialize the fields trx->active_trans and trx->duplicates.
innobase_query_is_update(): Remove. Consult trx->duplicates instead.
storage/innobase/handler/ha_innodb.cc:
Fixes after merging InnoDB snapshots.
Revision r1422:
Fix for Bug#21101 - returns wrong error message when table column
defs exceed the max row size.
The fix returns a more appropriate error message. Add a test case to
innodb.test and expected output to innodb.result.
Revision r1423:
Fix for Bug#18828. Return DB_TOO_MANY_CONCURRENT_TRXS when we run out
of UNDO slots in the rollback segment. This is a partial fix since the
MySQL error code requested to properly report the error condition back
to the client has not yet materialized. Currently we have #ifdef'd the
error code translation in ha_innodb.cc. This will have to be changed
as and when MySQl add the new requested code or an equivalent code
that we can then use.
Given the above, currently we will get the old behaviour, not the "fixed"
and intended behaviour.
Revision r1425:
Fixed a missing function decoration that slipped into r1422.
Revision r1434:
Fix typo.
Revision r1442:
Potential fix for Bug#25645:
"Move innobase_release_stat_resources(trx) outside the 'if' in
ha_innobase::external_lock(). That would add more safety that whatever
MySQL does at a query end, there would be no risk of a hang on the btr
search latch."
Also call innobase_release_temporary_latches() in the beginning of
ha_innobase::close().
Approved by: Heikki
Revision r1453:
Bugfix: only call innobase_release_temporary_latches() in case of current_thd
is not NULL, otherwise we get NULL pointer dereferencing.
Approved by: Heikki
Revision r1474:
Fix typo in comment: the exact prototype is in
include/data0type.ic, not in data/data0type.ic
Revision r1482:
Fix Bug#25078 by always letting the replication thread on the slave
server to enter InnoDB. This can be made further customizable by the
user if we introduce a new config parameter. This will wait until
config parameters can be easily added.
Approved by: Marko
Revision r1488:
Make InnoDB pluggable. That is, merge the modifications from MySQL WL#2936
and adapt some things.
Note that ha_innodb.cc depends on mysql_tmpfile() being declared in
<mysql/plugin.h>. Until the function is declared there, you can
uncomment the buggy definition of mysql_tmpfile in ha_innodb.cc.
Remove storage/innobase/*/Makefile.am. The whole compilation is driven by
storage/innobase/Makefile.am and storage/innobase/plug.in.
plug.in: Declare InnoDB as a dynamic plugin.
ha_innodb.h: Remove the declarations of many global variables. The variables
are no longer directly referenced outside of storage/innobase.
trx_t: Add the field trx->duplicates.
trx_create(): Initialize the fields trx->active_trans and trx->duplicates.
innobase_query_is_update(): Remove. Consult trx->duplicates instead.
Revision r1489:
thd_to_trx(), check_trx_exists(): Remove the handlerton parameter. It is a
singleton object whose address is stored into innodb_hton_ptr.
Revision r1492:
Convert innobase_buffer_pool_size and innobase_log_file_size types from
longlong to long long because MYSQL_SYSVAR_LONGLONG marco expects long long
type.
Also change
((ulint)innobase_buffer_pool_size) / 1024
to
(ulint)(innobase_buffer_pool_size / 1024)
and remove comment which is no longer true.
Provided that innobase_buffer_pool_size is always 64bits these statements
are equivalent if ulint is 64 bit (well it will screw up if
innobase_buffer_pool_size is negative). And if ulint is 32 bit the later
variant gives a little more chance that the value will fit.
Approved by: Heikki
Revision r1493:
ha_innodb.cc: Remove the declarations of some global InnoDB variables
whose name starts with srv_. These variables are declared in the header
files that are covered by #include directives in ha_innodb.cc.
Revision r1495:
Introduce the function reset_template() for resetting some fields of
row_prebuilt_t; currently prebuilt->read_just_key and
prebuilt->keep_other_fields_on_keyread.
Revision r1496:
ha_innobase::extra(): Replace references to prebuilt->trx with
thd_to_trx(ha_thd()), in order to avoid potential memory corruption.
Revision r1501:
Fix Bug#21293: Consider transactions that had edited non-transactional
tables heavier than ones that had not. This helps killing the "right"
transaction in case of a deadlock.
Approved by: Heikki
Revision r1513:
Split ut_a(a && b [&& c...]); into separate ut_a(a); ut_a(b); [ut_a(c); ...].
This makes it possible to see which expression was false by looking at the
error message.
Approved by: Marko
Revision r1527:
Cleanup in ha_innodb.cc:
thd_is_replication_slave_thread(), thd_has_edited_nontrans_tables():
Remove blank line between the function comment and the function
definition. There should be exactly one line between the return
type and the function comment, and this line should be one of
'', 'static', 'UNIV_INLINE', and 'extern "C"'.
Revision r1538:
Do not return error in ha_innobase::info if srv_force_recovery >= 4. This is to allow for
normal processing of the query by MySQL instead of generating an error.
Reviewed by: Heikki
Revision r1551:
ha_innobase::innobase_read_and_init_auto_inc(): Remember and restore
prebuilt->sql_stat_start. In an ALTER TABLE statement in the innodb_gis
test, an ut_ad() assertion failed, because no IX lock had been acquired
on the table, because prebuilt->sql_stat_start was inadvertently reset
to FALSE, by this function. This function was called via
ha_innobase::info() and mysql_prepare_alter_table().
storage/innobase/plug.in:
Fixes after merging InnoDB snapshots.
Revision r1488:
Make InnoDB pluggable. That is, merge the modifications from MySQL WL#2936
and adapt some things.
Note that ha_innodb.cc depends on mysql_tmpfile() being declared in
<mysql/plugin.h>. Until the function is declared there, you can
uncomment the buggy definition of mysql_tmpfile in ha_innodb.cc.
Remove storage/innobase/*/Makefile.am. The whole compilation is driven by
storage/innobase/Makefile.am and storage/innobase/plug.in.
plug.in: Declare InnoDB as a dynamic plugin.
ha_innodb.h: Remove the declarations of many global variables. The variables
are no longer directly referenced outside of storage/innobase.
trx_t: Add the field trx->duplicates.
trx_create(): Initialize the fields trx->active_trans and trx->duplicates.
innobase_query_is_update(): Remove. Consult trx->duplicates instead.
storage/innobase/handler/ha_innodb.h:
Fixes after merging InnoDB snapshots.
Revision r1488:
Make InnoDB pluggable. That is, merge the modifications from MySQL WL#2936
and adapt some things.
Note that ha_innodb.cc depends on mysql_tmpfile() being declared in
<mysql/plugin.h>. Until the function is declared there, you can
uncomment the buggy definition of mysql_tmpfile in ha_innodb.cc.
Remove storage/innobase/*/Makefile.am. The whole compilation is driven by
storage/innobase/Makefile.am and storage/innobase/plug.in.
plug.in: Declare InnoDB as a dynamic plugin.
ha_innodb.h: Remove the declarations of many global variables. The variables
are no longer directly referenced outside of storage/innobase.
trx_t: Add the field trx->duplicates.
trx_create(): Initialize the fields trx->active_trans and trx->duplicates.
innobase_query_is_update(): Remove. Consult trx->duplicates instead.
2007-07-10 13:37:43 +02:00
CREATE TABLE t1 (
c01 CHAR(255), c02 CHAR(255), c03 CHAR(255), c04 CHAR(255),
c05 CHAR(255), c06 CHAR(255), c07 CHAR(255), c08 CHAR(255),
c09 CHAR(255), c10 CHAR(255), c11 CHAR(255), c12 CHAR(255),
c13 CHAR(255), c14 CHAR(255), c15 CHAR(255), c16 CHAR(255),
c17 CHAR(255), c18 CHAR(255), c19 CHAR(255), c20 CHAR(255),
c21 CHAR(255), c22 CHAR(255), c23 CHAR(255), c24 CHAR(255),
c25 CHAR(255), c26 CHAR(255), c27 CHAR(255), c28 CHAR(255),
c29 CHAR(255), c30 CHAR(255), c31 CHAR(255), c32 CHAR(255)
) ENGINE = InnoDB;
ERROR 42000: Row size too large. The maximum row size for the used table type, not counting BLOBs, is 8126. You have to change some columns to TEXT or BLOBs
2007-11-07 00:40:50 +01:00
DROP TABLE IF EXISTS t1;
Warnings:
Note 1051 Unknown table 't1'
CREATE TABLE t1(
id BIGINT(20) NOT NULL AUTO_INCREMENT PRIMARY KEY
) ENGINE=InnoDB;
INSERT INTO t1 VALUES(-10);
SELECT * FROM t1;
id
-10
INSERT INTO t1 VALUES(NULL);
SELECT * FROM t1;
id
-10
1
DROP TABLE t1;
2008-10-03 14:24:19 +02:00
SET binlog_format='MIXED';
Apply snapshot innodb-5.1-ss1989
Fixes the following bugs:
Bug #30706: SQL thread on slave is allowed to block client queries when slave load is high
Add (innodb|innobase|srv)_replication_delay MySQL config parameter.
Bug #30888: Innodb table + stored procedure + row deletion = server crash
While adding code for the low level read of the AUTOINC value from the index,
the case for MEDIUM ints which are 3 bytes was missed triggering an
assertion.
Bug #30907: Regression: "--innodb_autoinc_lock_mode=0" (off) not same as older releases
We don't rely on *first_value to be 0 when checking whether
get_auto_increment() has been invoked for the first time in a multi-row
INSERT. We instead use trx_t::n_autoinc_rows. Initialize trx::n_autoinc_rows
inside ha_innobase::start_stmt() too.
Bug #31444: "InnoDB: Error: MySQL is freeing a thd" in innodb_mysql.test
ha_innobase::external_lock(): Update prebuilt->mysql_has_locked and
trx->n_mysql_tables_in_use only after row_lock_table_for_mysql() returns
DB_SUCCESS. A timeout on LOCK TABLES would lead to an inconsistent state,
which would cause trx_free() to print a warning.
Bug #31494: innodb + 5.1 + read committed crash, assertion
Set an error code when a deadlock occurs in semi-consistent read.
mysql-test/r/innodb.result:
Apply snapshot innodb-5.1-ss1989
Also, a test is moved into the new innodb_autoinc_lock_mode_zero
test, because it depends on a non-default setting for a read-only
variable.
Revision r1821:
Merge a change from MySQL AB:
ChangeSet@1.2536.50.1 2007-08-02 12:45:56-07:00 igor@mysql.com
Fixed bug#28404.
This patch adds cost estimation for the queries with ORDER BY / GROUP BY
and LIMIT.
If there was a ref/range access to the table whose rows were required
to be ordered in the result set the optimizer always employed this access
though a scan by a different index that was compatible with the required
order could be cheaper to produce the first L rows of the result set.
Now for such queries the optimizer makes a choice between the cheapest
ref/range accesses not compatible with the given order and index scans
compatible with it.
innodb.result: Adjusted results for test cases affected fy the fix for
bug #28404.
Revision r1781:
Fix a test case that was broken after Bug#16979 fix. See r1645 and r1735.
The variable used in the tests below was introduced in r1735.
Revision r1792:
innodb.result: Revert r1655, which should have been reverted as part of r1781.
Revision r1843:
Add test for Bug# 21409, the actual bug was fixed in r1334.
mysql-test/t/innodb.test:
Apply snapshot innodb-5.1-ss1989
Also, a test is moved into the new innodb_autoinc_lock_mode_zero
test, because it depends on a non-default setting for a read-only
variable.
Revision r1781:
Fix a test case that was broken after Bug#16979 fix. See r1645 and r1735.
The variable used in the tests below was introduced in r1735.
Revision r1843:
Add test for Bug# 21409, the actual bug was fixed in r1334.
storage/innobase/buf/buf0lru.c:
Apply snapshot innodb-5.1-ss1989
Revision r1819:
Merge r1815:1817 from branches/zip: Improve Valgrind instrumentation.
UNIV_MEM_ASSERT_RW(): New macro, to check that the contents of a memory
area is defined.
UNIV_MEM_ASSERT_W(): New macro, to check that a memory area is writable.
UNIV_MEM_ASSERT_AND_FREE(): New macro, to check that the memory is
writable before declaring it free (unwritable). This replaces UNIV_MEM_FREE()
in many places.
mem_init_buf(): Check that the memory is writable, and declare it undefined.
mem_erase_buf(): Check that the memory is writable, and declare it freed.
storage/innobase/dict/dict0dict.c:
Apply snapshot innodb-5.1-ss1989
Revision r1894:
Add debug lock checks to autoinc functions. Add lock guards around an
invocation of dict_table_autoinc_initialize().
storage/innobase/dict/dict0load.c:
Apply snapshot innodb-5.1-ss1989
Revision r1974:
Prevent loading of tables that have unsupported features most notably
FTS indexes.
storage/innobase/handler/ha_innodb.cc:
Apply snapshot innodb-5.1-ss1989
Revision r1850:
Implement this feature request:
http://bugs.mysql.com/30706
* Add a function that returns the number of microseconds since
epoch - ut_time_us().
* Add (innodb|innobase|srv)_replication_delay MySQL config parameter.
* Add UT_WAIT_FOR() macro that waits for a specified condition to occur
until a timeout elapses.
* Using all of the above, handle the replication thread specially in
srv_conc_enter_innodb().
Approved by: Heikki
Revision r1887:
Merge changes from MySQL AB:
ChangeSet@1.2528.115.25 2007-08-27 18:18:14-06:00 tsmith@hindu.god
Fix some Windows compiler warnings.
dict0mem.c: Fix compiler warning with a cast.
ha_innodb.cc: Change type to fix a compiler warning.
Revision r1809:
ha_innobase::external_lock(): Update prebuilt->mysql_has_locked and
trx->n_mysql_tables_in_use only after row_lock_table_for_mysql()
returns DB_SUCCESS. A timeout on LOCK TABLES would lead to an
inconsistent state, which would cause trx_free() to print a warning.
This was later reported as Bug #31444.
Revision r1833:
Add /*== ... === */ decoration that was missing around some auto-inc functions.
Add a missing comment, fix the length of a decoration. Initialize the *value
out parameter in ha_innobase::innobase_get_auto_increment().
Revision r1866:
Revert r1850 as MySQL did not approve the addition.
log for r1850:
Implement this feature request:
http://bugs.mysql.com/30706
* Add a function that returns the number of microseconds since
epoch - ut_time_us().
* Add (innodb|innobase|srv)_replication_delay MySQL config parameter.
* Add UT_WAIT_FOR() macro that waits for a specified condition to occur
until a timeout elapses.
* Using all of the above, handle the replication thread specially in
srv_conc_enter_innodb().
Revision r1846:
Add config option innodb_use_adaptive_hash_indexes to enable/disable
adaptive hash indexes. It is enabled by default (no change in default
behavior).
Approved by: Marko
Revision r1974:
Prevent loading of tables that have unsupported features most notably
FTS indexes.
Revision r1829:
Add assertion to enforce check of an implicit invariant and add comment about
retry of autoinc read semantics. We always reread the table's autoinc counter
after attempting to initialize it i.e., we want to guarantee that a read of
autoinc valus that is returned to the caller is always covered by the
AUTOINC locking mechanism.
Revision r1787:
Move the prototype of innobase_print_identifier() from ut0ut.c to
ha_prototypes.h. Enclose the definitions in ha_prototypes.h in
#ifndef UNIV_HOTBACKUP.
Revision r1888:
Merge a change from MySQL AB:
ChangeSet@1.2528.115.30 2007-08-28 10:17:15-06:00 tsmith@hindu.god
Fix another compiler warning on Windows in InnoDB.
ha_innodb.cc:
Fix compiler warning: ::get_auto_increment takes a ulonglong
for nb_desired_values, but InnoDB's trx struct stores it as
a ulint (unsigned long). Probably harmless, as a single
statement won't be asking for more than 2^32 rows.
Revision r1987:
Bug fix: The problem was that when write_row() attempted to update the max
autoinc value, and if it was rolled back because of a deadlock, the
deadlock error (transaction rollback) was not being propagated back to MySQL.
Revision r1889:
Merge a change from MySQL AB:
ChangeSet@1.2560 2007-09-21 10:15:16+02:00 gkodinov@local
ha_innodb.cc: fixed type conversion warnings revealed by bug 30639
Revision r1989:
Suppress printing of deadlock errors while reading the autoinc value.
DB_DEADLOCK errors are part of normal processing and excessive printing
of these error messages could be disconcerting for users.
Revision r1828:
Fix two bugs:
Bug# 30907: We don't rely on *first_value to be 0 when checking whether
get_auto_increment() has been invoked for the first time in a multi-row
INSERT. We instead use trx_t::n_autoinc_rows. Initialize trx::n_autoinc_rows
inside ha_innobase::start_stmt() too.
Bug# 30888: While adding code for the low level read of the AUTOINC value
from the index, the case for MEDIUM ints which are 3 bytes was missed
triggering an assertion.
storage/innobase/handler/ha_innodb.h:
Apply snapshot innodb-5.1-ss1989
Revision r1844:
Remove the prototypes of some functions inside #if 0.
The function definitions were removed in r1746.
storage/innobase/ibuf/ibuf0ibuf.c:
Apply snapshot innodb-5.1-ss1989
Revision r1965:
ibuf_insert_to_index_page(): Fix typos in diagnostic output.
storage/innobase/include/db0err.h:
Apply snapshot innodb-5.1-ss1989
Revision r1974:
Prevent loading of tables that have unsupported features most notably
FTS indexes.
storage/innobase/include/ha_prototypes.h:
Apply snapshot innodb-5.1-ss1989
Revision r1787:
Move the prototype of innobase_print_identifier() from ut0ut.c to
ha_prototypes.h. Enclose the definitions in ha_prototypes.h in
#ifndef UNIV_HOTBACKUP.
storage/innobase/include/mach0data.h:
Apply snapshot innodb-5.1-ss1989
Revision r1779:
Fix a bug that handles the case where the host specific byte order matches
the InnoDB storage byte order, which is big-endian.
storage/innobase/include/mach0data.ic:
Apply snapshot innodb-5.1-ss1989
Revision r1779:
Fix a bug that handles the case where the host specific byte order matches
the InnoDB storage byte order, which is big-endian.
storage/innobase/include/mem0dbg.h:
Apply snapshot innodb-5.1-ss1989
Revision r1830:
Improve memory debugging. This is follow-up to r1819.
mem_heap_validate(): Compile this function also if UNIV_MEM_DEBUG is
defined. Previously, this function was only compiled with UNIV_DEBUG.
mem_heap_free_heap_top(): Flag the memory allocated, not freed, for
Valgrind. Otherwise, Valgrind would complain on the second call of
mem_heap_empty().
UNIV_MEM_ASSERT_RW(), UNIV_MEM_ASSERT_W(): Display additional diagnostics
for failed Valgrind checks.
storage/innobase/include/mem0mem.ic:
Apply snapshot innodb-5.1-ss1989
Revision r1830:
Improve memory debugging. This is follow-up to r1819.
mem_heap_validate(): Compile this function also if UNIV_MEM_DEBUG is
defined. Previously, this function was only compiled with UNIV_DEBUG.
mem_heap_free_heap_top(): Flag the memory allocated, not freed, for
Valgrind. Otherwise, Valgrind would complain on the second call of
mem_heap_empty().
UNIV_MEM_ASSERT_RW(), UNIV_MEM_ASSERT_W(): Display additional diagnostics
for failed Valgrind checks.
Revision r1937:
mem_heap_free_top(): Remove a bogus Valgrind warning.
Revision r1819:
Merge r1815:1817 from branches/zip: Improve Valgrind instrumentation.
UNIV_MEM_ASSERT_RW(): New macro, to check that the contents of a memory
area is defined.
UNIV_MEM_ASSERT_W(): New macro, to check that a memory area is writable.
UNIV_MEM_ASSERT_AND_FREE(): New macro, to check that the memory is
writable before declaring it free (unwritable). This replaces UNIV_MEM_FREE()
in many places.
mem_init_buf(): Check that the memory is writable, and declare it undefined.
mem_erase_buf(): Check that the memory is writable, and declare it freed.
storage/innobase/include/rem0rec.ic:
Apply snapshot innodb-5.1-ss1989
Revision r1918:
Improve Valgrind instrumentation.
rec_offs_set_n_alloc(): Use UNIV_MEM_ASSERT_AND_ALLOC().
UNIV_MEM_ASSERT_AND_ALLOC(): New directive, similar to
UNIV_MEM_ASSERT_AND_FREE().
storage/innobase/include/row0mysql.h:
Apply snapshot innodb-5.1-ss1989
Revision r1783:
Correct the function comments of row_create_table_for_mysql() and
row_drop_table_for_mysql().
storage/innobase/include/sync0rw.h:
Apply snapshot innodb-5.1-ss1989
Revision r1757:
Enclose rw_lock_validate() in #ifdef UNIV_DEBUG. It is only called by
debug assertions.
storage/innobase/include/univ.i:
Apply snapshot innodb-5.1-ss1989
Revision r1827:
Merge r1826 from branches/zip: UNIV_MEM_ASSERT_AND_FREE():
Use UNIV_MEM_ASSERT_W() instead of UNIV_MEM_ASSERT_RW().
The memory area need not be initialized.
This mistake was made in r1815.
Revision r1918:
Improve Valgrind instrumentation.
rec_offs_set_n_alloc(): Use UNIV_MEM_ASSERT_AND_ALLOC().
UNIV_MEM_ASSERT_AND_ALLOC(): New directive, similar to
UNIV_MEM_ASSERT_AND_FREE().
Revision r1830:
Improve memory debugging. This is follow-up to r1819.
mem_heap_validate(): Compile this function also if UNIV_MEM_DEBUG is
defined. Previously, this function was only compiled with UNIV_DEBUG.
mem_heap_free_heap_top(): Flag the memory allocated, not freed, for
Valgrind. Otherwise, Valgrind would complain on the second call of
mem_heap_empty().
UNIV_MEM_ASSERT_RW(), UNIV_MEM_ASSERT_W(): Display additional diagnostics
for failed Valgrind checks.
Revision r1819:
Merge r1815:1817 from branches/zip: Improve Valgrind instrumentation.
UNIV_MEM_ASSERT_RW(): New macro, to check that the contents of a memory
area is defined.
UNIV_MEM_ASSERT_W(): New macro, to check that a memory area is writable.
UNIV_MEM_ASSERT_AND_FREE(): New macro, to check that the memory is
writable before declaring it free (unwritable). This replaces UNIV_MEM_FREE()
in many places.
mem_init_buf(): Check that the memory is writable, and declare it undefined.
mem_erase_buf(): Check that the memory is writable, and declare it freed.
Revision r1948:
UNIV_MEM_ASSERT_RW(), UNIV_MEM_ASSERT_W(): Display also __FILE__ and __LINE__
when these Valgrind checks fail.
storage/innobase/include/ut0ut.h:
Apply snapshot innodb-5.1-ss1989
Revision r1850:
Implement this feature request:
http://bugs.mysql.com/30706
* Add a function that returns the number of microseconds since
epoch - ut_time_us().
* Add (innodb|innobase|srv)_replication_delay MySQL config parameter.
* Add UT_WAIT_FOR() macro that waits for a specified condition to occur
until a timeout elapses.
* Using all of the above, handle the replication thread specially in
srv_conc_enter_innodb().
Approved by: Heikki
Revision r1862:
Add ut_snprintf() function. On Windows this needs to be implemented
using auxiliary functions because there is no snprintf-variant on
Windows that behaves exactly as specified in the standard:
* Always return the number of characters that would have been printed
if the size were unlimited (not including the final `\0').
* Always '\0'-terminate the result
* Do not touch the buffer if size=0, only return the number of characters
that would have been printed. Can be used to estimate the size needed
and to allocate it dynamically.
See http://www.freebsd.org/cgi/query-pr.cgi?pr=87260 for the reason why
2 ap variables are used.
Approved by: Heikki
Revision r1866:
Revert r1850 as MySQL did not approve the addition.
log for r1850:
Implement this feature request:
http://bugs.mysql.com/30706
* Add a function that returns the number of microseconds since
epoch - ut_time_us().
* Add (innodb|innobase|srv)_replication_delay MySQL config parameter.
* Add UT_WAIT_FOR() macro that waits for a specified condition to occur
until a timeout elapses.
* Using all of the above, handle the replication thread specially in
srv_conc_enter_innodb().
storage/innobase/mem/mem0dbg.c:
Apply snapshot innodb-5.1-ss1989
Revision r1830:
Improve memory debugging. This is follow-up to r1819.
mem_heap_validate(): Compile this function also if UNIV_MEM_DEBUG is
defined. Previously, this function was only compiled with UNIV_DEBUG.
mem_heap_free_heap_top(): Flag the memory allocated, not freed, for
Valgrind. Otherwise, Valgrind would complain on the second call of
mem_heap_empty().
UNIV_MEM_ASSERT_RW(), UNIV_MEM_ASSERT_W(): Display additional diagnostics
for failed Valgrind checks.
Revision r1819:
Merge r1815:1817 from branches/zip: Improve Valgrind instrumentation.
UNIV_MEM_ASSERT_RW(): New macro, to check that the contents of a memory
area is defined.
UNIV_MEM_ASSERT_W(): New macro, to check that a memory area is writable.
UNIV_MEM_ASSERT_AND_FREE(): New macro, to check that the memory is
writable before declaring it free (unwritable). This replaces UNIV_MEM_FREE()
in many places.
mem_init_buf(): Check that the memory is writable, and declare it undefined.
mem_erase_buf(): Check that the memory is writable, and declare it freed.
storage/innobase/mem/mem0mem.c:
Apply snapshot innodb-5.1-ss1989
Revision r1819:
Merge r1815:1817 from branches/zip: Improve Valgrind instrumentation.
UNIV_MEM_ASSERT_RW(): New macro, to check that the contents of a memory
area is defined.
UNIV_MEM_ASSERT_W(): New macro, to check that a memory area is writable.
UNIV_MEM_ASSERT_AND_FREE(): New macro, to check that the memory is
writable before declaring it free (unwritable). This replaces UNIV_MEM_FREE()
in many places.
mem_init_buf(): Check that the memory is writable, and declare it undefined.
mem_erase_buf(): Check that the memory is writable, and declare it freed.
storage/innobase/row/row0mysql.c:
Apply snapshot innodb-5.1-ss1989
Revision r1786:
row_create_table_for_mysql(), row_truncate_table_for_mysql(),
row_drop_table_for_mysql(): Do not mention innodb_force_recovery
when newraw is set.
Revision r1790:
row_drop_table_for_mysql(): Before calling
dict_table_remove_from_cache(table) and thus freeing the memory
allocated for the table, copy the table name. This avoids reading
freed memory when name == table->name.
Approved by Sunny.
Revision r1783:
Correct the function comments of row_create_table_for_mysql() and
row_drop_table_for_mysql().
Revision r1894:
Add debug lock checks to autoinc functions. Add lock guards around an
invocation of dict_table_autoinc_initialize().
storage/innobase/row/row0sel.c:
Apply snapshot innodb-5.1-ss1989
Revision r1782:
Add comment that the variable dest should be word aligned. After discussion
on IM with Heikki.
Revision r1988:
Set an error code when a deadlock occurs in semi-consistent read. (Bug #31494)
innodb-semi-consistent: New tests for InnoDB semi-consistent reads.
Unfortunately, these will not trigger Bug #31494, because there merely
occur lock wait timeouts, not deadlocks.
Revision r1820:
Use the clustered index and not the one selected by the optimizer in the plan,
when building a previous version of the row. This bug is triggered when
running queries via InnoDB's internal SQL parser; when InnoDB's optimizer
selects a secondary index for the plan.
Revision r1828:
Fix two bugs:
Bug# 30907: We don't rely on *first_value to be 0 when checking whether
get_auto_increment() has been invoked for the first time in a multi-row
INSERT. We instead use trx_t::n_autoinc_rows. Initialize trx::n_autoinc_rows
inside ha_innobase::start_stmt() too.
Bug# 30888: While adding code for the low level read of the AUTOINC value
from the index, the case for MEDIUM ints which are 3 bytes was missed
triggering an assertion.
Revision r1779:
Fix a bug that handles the case where the host specific byte order matches
the InnoDB storage byte order, which is big-endian.
storage/innobase/sync/sync0rw.c:
Apply snapshot innodb-5.1-ss1989
Revision r1757:
Enclose rw_lock_validate() in #ifdef UNIV_DEBUG. It is only called by
debug assertions.
storage/innobase/ut/ut0ut.c:
Apply snapshot innodb-5.1-ss1989
Revision r1850:
Implement this feature request:
http://bugs.mysql.com/30706
* Add a function that returns the number of microseconds since
epoch - ut_time_us().
* Add (innodb|innobase|srv)_replication_delay MySQL config parameter.
* Add UT_WAIT_FOR() macro that waits for a specified condition to occur
until a timeout elapses.
* Using all of the above, handle the replication thread specially in
srv_conc_enter_innodb().
Approved by: Heikki
Revision r1873:
snprintf() should always return non-negative result. According to
Microsoft documentation about _vscprintf():
If format is a null pointer, the invalid parameter handler is invoked,
as described in Parameter Validation. If execution is allowed to
continue, the functions return -1 and set errno to EINVAL.
The UNIX variant of snprintf() segfaults if format is a NULL pointer
(similar to strlen(NULL) for example), so it is better to conform to
this behavior and crash our custom Windows version instead of
returning -1. Noone would expect -1 to be returned from snprintf().
Cosmetic: Add a space after typecast.
Approved by: Marko
Revision r1862:
Add ut_snprintf() function. On Windows this needs to be implemented
using auxiliary functions because there is no snprintf-variant on
Windows that behaves exactly as specified in the standard:
* Always return the number of characters that would have been printed
if the size were unlimited (not including the final `\0').
* Always '\0'-terminate the result
* Do not touch the buffer if size=0, only return the number of characters
that would have been printed. Can be used to estimate the size needed
and to allocate it dynamically.
See http://www.freebsd.org/cgi/query-pr.cgi?pr=87260 for the reason why
2 ap variables are used.
Approved by: Heikki
Revision r1866:
Revert r1850 as MySQL did not approve the addition.
log for r1850:
Implement this feature request:
http://bugs.mysql.com/30706
* Add a function that returns the number of microseconds since
epoch - ut_time_us().
* Add (innodb|innobase|srv)_replication_delay MySQL config parameter.
* Add UT_WAIT_FOR() macro that waits for a specified condition to occur
until a timeout elapses.
* Using all of the above, handle the replication thread specially in
srv_conc_enter_innodb().
Revision r1787:
Move the prototype of innobase_print_identifier() from ut0ut.c to
ha_prototypes.h. Enclose the definitions in ha_prototypes.h in
#ifndef UNIV_HOTBACKUP.
Revision r1789:
ut_print_namel(): Do not assume that all '/' are separators between
database and table names.
Approved by Heikki.
Revision r1936:
ut_print_buf(): Add a Valgrind check that the buffer is wholly defined.
mysql-test/r/innodb-semi-consistent.result:
Apply snapshot innodb-5.1-ss1989
Revision r1988:
Set an error code when a deadlock occurs in semi-consistent read. (Bug #31494)
innodb-semi-consistent: New tests for InnoDB semi-consistent reads.
Unfortunately, these will not trigger Bug #31494, because there merely
occur lock wait timeouts, not deadlocks.
mysql-test/r/innodb_autoinc_lock_mode_zero.result:
New test, using read-only setting --innodb-autoinc-lock-mode=0
mysql-test/t/innodb-semi-consistent-master.opt:
Apply snapshot innodb-5.1-ss1989
Revision r1988:
Set an error code when a deadlock occurs in semi-consistent read. (Bug #31494)
innodb-semi-consistent: New tests for InnoDB semi-consistent reads.
Unfortunately, these will not trigger Bug #31494, because there merely
occur lock wait timeouts, not deadlocks.
mysql-test/t/innodb-semi-consistent.test:
Apply snapshot innodb-5.1-ss1989
Revision r1988:
Set an error code when a deadlock occurs in semi-consistent read. (Bug #31494)
innodb-semi-consistent: New tests for InnoDB semi-consistent reads.
Unfortunately, these will not trigger Bug #31494, because there merely
occur lock wait timeouts, not deadlocks.
mysql-test/t/innodb_autoinc_lock_mode_zero-master.opt:
New test, using read-only setting --innodb-autoinc-lock-mode=0
mysql-test/t/innodb_autoinc_lock_mode_zero.test:
New test, using read-only setting --innodb-autoinc-lock-mode=0
2007-11-06 23:42:58 +01:00
SET TX_ISOLATION='read-committed';
SET AUTOCOMMIT=0;
DROP TABLE IF EXISTS t1, t2;
Warnings:
Note 1051 Unknown table 't1'
Note 1051 Unknown table 't2'
CREATE TABLE t1 ( a int ) ENGINE=InnoDB;
CREATE TABLE t2 LIKE t1;
SELECT * FROM t2;
a
2008-10-03 14:24:19 +02:00
SET binlog_format='MIXED';
Apply snapshot innodb-5.1-ss1989
Fixes the following bugs:
Bug #30706: SQL thread on slave is allowed to block client queries when slave load is high
Add (innodb|innobase|srv)_replication_delay MySQL config parameter.
Bug #30888: Innodb table + stored procedure + row deletion = server crash
While adding code for the low level read of the AUTOINC value from the index,
the case for MEDIUM ints which are 3 bytes was missed triggering an
assertion.
Bug #30907: Regression: "--innodb_autoinc_lock_mode=0" (off) not same as older releases
We don't rely on *first_value to be 0 when checking whether
get_auto_increment() has been invoked for the first time in a multi-row
INSERT. We instead use trx_t::n_autoinc_rows. Initialize trx::n_autoinc_rows
inside ha_innobase::start_stmt() too.
Bug #31444: "InnoDB: Error: MySQL is freeing a thd" in innodb_mysql.test
ha_innobase::external_lock(): Update prebuilt->mysql_has_locked and
trx->n_mysql_tables_in_use only after row_lock_table_for_mysql() returns
DB_SUCCESS. A timeout on LOCK TABLES would lead to an inconsistent state,
which would cause trx_free() to print a warning.
Bug #31494: innodb + 5.1 + read committed crash, assertion
Set an error code when a deadlock occurs in semi-consistent read.
mysql-test/r/innodb.result:
Apply snapshot innodb-5.1-ss1989
Also, a test is moved into the new innodb_autoinc_lock_mode_zero
test, because it depends on a non-default setting for a read-only
variable.
Revision r1821:
Merge a change from MySQL AB:
ChangeSet@1.2536.50.1 2007-08-02 12:45:56-07:00 igor@mysql.com
Fixed bug#28404.
This patch adds cost estimation for the queries with ORDER BY / GROUP BY
and LIMIT.
If there was a ref/range access to the table whose rows were required
to be ordered in the result set the optimizer always employed this access
though a scan by a different index that was compatible with the required
order could be cheaper to produce the first L rows of the result set.
Now for such queries the optimizer makes a choice between the cheapest
ref/range accesses not compatible with the given order and index scans
compatible with it.
innodb.result: Adjusted results for test cases affected fy the fix for
bug #28404.
Revision r1781:
Fix a test case that was broken after Bug#16979 fix. See r1645 and r1735.
The variable used in the tests below was introduced in r1735.
Revision r1792:
innodb.result: Revert r1655, which should have been reverted as part of r1781.
Revision r1843:
Add test for Bug# 21409, the actual bug was fixed in r1334.
mysql-test/t/innodb.test:
Apply snapshot innodb-5.1-ss1989
Also, a test is moved into the new innodb_autoinc_lock_mode_zero
test, because it depends on a non-default setting for a read-only
variable.
Revision r1781:
Fix a test case that was broken after Bug#16979 fix. See r1645 and r1735.
The variable used in the tests below was introduced in r1735.
Revision r1843:
Add test for Bug# 21409, the actual bug was fixed in r1334.
storage/innobase/buf/buf0lru.c:
Apply snapshot innodb-5.1-ss1989
Revision r1819:
Merge r1815:1817 from branches/zip: Improve Valgrind instrumentation.
UNIV_MEM_ASSERT_RW(): New macro, to check that the contents of a memory
area is defined.
UNIV_MEM_ASSERT_W(): New macro, to check that a memory area is writable.
UNIV_MEM_ASSERT_AND_FREE(): New macro, to check that the memory is
writable before declaring it free (unwritable). This replaces UNIV_MEM_FREE()
in many places.
mem_init_buf(): Check that the memory is writable, and declare it undefined.
mem_erase_buf(): Check that the memory is writable, and declare it freed.
storage/innobase/dict/dict0dict.c:
Apply snapshot innodb-5.1-ss1989
Revision r1894:
Add debug lock checks to autoinc functions. Add lock guards around an
invocation of dict_table_autoinc_initialize().
storage/innobase/dict/dict0load.c:
Apply snapshot innodb-5.1-ss1989
Revision r1974:
Prevent loading of tables that have unsupported features most notably
FTS indexes.
storage/innobase/handler/ha_innodb.cc:
Apply snapshot innodb-5.1-ss1989
Revision r1850:
Implement this feature request:
http://bugs.mysql.com/30706
* Add a function that returns the number of microseconds since
epoch - ut_time_us().
* Add (innodb|innobase|srv)_replication_delay MySQL config parameter.
* Add UT_WAIT_FOR() macro that waits for a specified condition to occur
until a timeout elapses.
* Using all of the above, handle the replication thread specially in
srv_conc_enter_innodb().
Approved by: Heikki
Revision r1887:
Merge changes from MySQL AB:
ChangeSet@1.2528.115.25 2007-08-27 18:18:14-06:00 tsmith@hindu.god
Fix some Windows compiler warnings.
dict0mem.c: Fix compiler warning with a cast.
ha_innodb.cc: Change type to fix a compiler warning.
Revision r1809:
ha_innobase::external_lock(): Update prebuilt->mysql_has_locked and
trx->n_mysql_tables_in_use only after row_lock_table_for_mysql()
returns DB_SUCCESS. A timeout on LOCK TABLES would lead to an
inconsistent state, which would cause trx_free() to print a warning.
This was later reported as Bug #31444.
Revision r1833:
Add /*== ... === */ decoration that was missing around some auto-inc functions.
Add a missing comment, fix the length of a decoration. Initialize the *value
out parameter in ha_innobase::innobase_get_auto_increment().
Revision r1866:
Revert r1850 as MySQL did not approve the addition.
log for r1850:
Implement this feature request:
http://bugs.mysql.com/30706
* Add a function that returns the number of microseconds since
epoch - ut_time_us().
* Add (innodb|innobase|srv)_replication_delay MySQL config parameter.
* Add UT_WAIT_FOR() macro that waits for a specified condition to occur
until a timeout elapses.
* Using all of the above, handle the replication thread specially in
srv_conc_enter_innodb().
Revision r1846:
Add config option innodb_use_adaptive_hash_indexes to enable/disable
adaptive hash indexes. It is enabled by default (no change in default
behavior).
Approved by: Marko
Revision r1974:
Prevent loading of tables that have unsupported features most notably
FTS indexes.
Revision r1829:
Add assertion to enforce check of an implicit invariant and add comment about
retry of autoinc read semantics. We always reread the table's autoinc counter
after attempting to initialize it i.e., we want to guarantee that a read of
autoinc valus that is returned to the caller is always covered by the
AUTOINC locking mechanism.
Revision r1787:
Move the prototype of innobase_print_identifier() from ut0ut.c to
ha_prototypes.h. Enclose the definitions in ha_prototypes.h in
#ifndef UNIV_HOTBACKUP.
Revision r1888:
Merge a change from MySQL AB:
ChangeSet@1.2528.115.30 2007-08-28 10:17:15-06:00 tsmith@hindu.god
Fix another compiler warning on Windows in InnoDB.
ha_innodb.cc:
Fix compiler warning: ::get_auto_increment takes a ulonglong
for nb_desired_values, but InnoDB's trx struct stores it as
a ulint (unsigned long). Probably harmless, as a single
statement won't be asking for more than 2^32 rows.
Revision r1987:
Bug fix: The problem was that when write_row() attempted to update the max
autoinc value, and if it was rolled back because of a deadlock, the
deadlock error (transaction rollback) was not being propagated back to MySQL.
Revision r1889:
Merge a change from MySQL AB:
ChangeSet@1.2560 2007-09-21 10:15:16+02:00 gkodinov@local
ha_innodb.cc: fixed type conversion warnings revealed by bug 30639
Revision r1989:
Suppress printing of deadlock errors while reading the autoinc value.
DB_DEADLOCK errors are part of normal processing and excessive printing
of these error messages could be disconcerting for users.
Revision r1828:
Fix two bugs:
Bug# 30907: We don't rely on *first_value to be 0 when checking whether
get_auto_increment() has been invoked for the first time in a multi-row
INSERT. We instead use trx_t::n_autoinc_rows. Initialize trx::n_autoinc_rows
inside ha_innobase::start_stmt() too.
Bug# 30888: While adding code for the low level read of the AUTOINC value
from the index, the case for MEDIUM ints which are 3 bytes was missed
triggering an assertion.
storage/innobase/handler/ha_innodb.h:
Apply snapshot innodb-5.1-ss1989
Revision r1844:
Remove the prototypes of some functions inside #if 0.
The function definitions were removed in r1746.
storage/innobase/ibuf/ibuf0ibuf.c:
Apply snapshot innodb-5.1-ss1989
Revision r1965:
ibuf_insert_to_index_page(): Fix typos in diagnostic output.
storage/innobase/include/db0err.h:
Apply snapshot innodb-5.1-ss1989
Revision r1974:
Prevent loading of tables that have unsupported features most notably
FTS indexes.
storage/innobase/include/ha_prototypes.h:
Apply snapshot innodb-5.1-ss1989
Revision r1787:
Move the prototype of innobase_print_identifier() from ut0ut.c to
ha_prototypes.h. Enclose the definitions in ha_prototypes.h in
#ifndef UNIV_HOTBACKUP.
storage/innobase/include/mach0data.h:
Apply snapshot innodb-5.1-ss1989
Revision r1779:
Fix a bug that handles the case where the host specific byte order matches
the InnoDB storage byte order, which is big-endian.
storage/innobase/include/mach0data.ic:
Apply snapshot innodb-5.1-ss1989
Revision r1779:
Fix a bug that handles the case where the host specific byte order matches
the InnoDB storage byte order, which is big-endian.
storage/innobase/include/mem0dbg.h:
Apply snapshot innodb-5.1-ss1989
Revision r1830:
Improve memory debugging. This is follow-up to r1819.
mem_heap_validate(): Compile this function also if UNIV_MEM_DEBUG is
defined. Previously, this function was only compiled with UNIV_DEBUG.
mem_heap_free_heap_top(): Flag the memory allocated, not freed, for
Valgrind. Otherwise, Valgrind would complain on the second call of
mem_heap_empty().
UNIV_MEM_ASSERT_RW(), UNIV_MEM_ASSERT_W(): Display additional diagnostics
for failed Valgrind checks.
storage/innobase/include/mem0mem.ic:
Apply snapshot innodb-5.1-ss1989
Revision r1830:
Improve memory debugging. This is follow-up to r1819.
mem_heap_validate(): Compile this function also if UNIV_MEM_DEBUG is
defined. Previously, this function was only compiled with UNIV_DEBUG.
mem_heap_free_heap_top(): Flag the memory allocated, not freed, for
Valgrind. Otherwise, Valgrind would complain on the second call of
mem_heap_empty().
UNIV_MEM_ASSERT_RW(), UNIV_MEM_ASSERT_W(): Display additional diagnostics
for failed Valgrind checks.
Revision r1937:
mem_heap_free_top(): Remove a bogus Valgrind warning.
Revision r1819:
Merge r1815:1817 from branches/zip: Improve Valgrind instrumentation.
UNIV_MEM_ASSERT_RW(): New macro, to check that the contents of a memory
area is defined.
UNIV_MEM_ASSERT_W(): New macro, to check that a memory area is writable.
UNIV_MEM_ASSERT_AND_FREE(): New macro, to check that the memory is
writable before declaring it free (unwritable). This replaces UNIV_MEM_FREE()
in many places.
mem_init_buf(): Check that the memory is writable, and declare it undefined.
mem_erase_buf(): Check that the memory is writable, and declare it freed.
storage/innobase/include/rem0rec.ic:
Apply snapshot innodb-5.1-ss1989
Revision r1918:
Improve Valgrind instrumentation.
rec_offs_set_n_alloc(): Use UNIV_MEM_ASSERT_AND_ALLOC().
UNIV_MEM_ASSERT_AND_ALLOC(): New directive, similar to
UNIV_MEM_ASSERT_AND_FREE().
storage/innobase/include/row0mysql.h:
Apply snapshot innodb-5.1-ss1989
Revision r1783:
Correct the function comments of row_create_table_for_mysql() and
row_drop_table_for_mysql().
storage/innobase/include/sync0rw.h:
Apply snapshot innodb-5.1-ss1989
Revision r1757:
Enclose rw_lock_validate() in #ifdef UNIV_DEBUG. It is only called by
debug assertions.
storage/innobase/include/univ.i:
Apply snapshot innodb-5.1-ss1989
Revision r1827:
Merge r1826 from branches/zip: UNIV_MEM_ASSERT_AND_FREE():
Use UNIV_MEM_ASSERT_W() instead of UNIV_MEM_ASSERT_RW().
The memory area need not be initialized.
This mistake was made in r1815.
Revision r1918:
Improve Valgrind instrumentation.
rec_offs_set_n_alloc(): Use UNIV_MEM_ASSERT_AND_ALLOC().
UNIV_MEM_ASSERT_AND_ALLOC(): New directive, similar to
UNIV_MEM_ASSERT_AND_FREE().
Revision r1830:
Improve memory debugging. This is follow-up to r1819.
mem_heap_validate(): Compile this function also if UNIV_MEM_DEBUG is
defined. Previously, this function was only compiled with UNIV_DEBUG.
mem_heap_free_heap_top(): Flag the memory allocated, not freed, for
Valgrind. Otherwise, Valgrind would complain on the second call of
mem_heap_empty().
UNIV_MEM_ASSERT_RW(), UNIV_MEM_ASSERT_W(): Display additional diagnostics
for failed Valgrind checks.
Revision r1819:
Merge r1815:1817 from branches/zip: Improve Valgrind instrumentation.
UNIV_MEM_ASSERT_RW(): New macro, to check that the contents of a memory
area is defined.
UNIV_MEM_ASSERT_W(): New macro, to check that a memory area is writable.
UNIV_MEM_ASSERT_AND_FREE(): New macro, to check that the memory is
writable before declaring it free (unwritable). This replaces UNIV_MEM_FREE()
in many places.
mem_init_buf(): Check that the memory is writable, and declare it undefined.
mem_erase_buf(): Check that the memory is writable, and declare it freed.
Revision r1948:
UNIV_MEM_ASSERT_RW(), UNIV_MEM_ASSERT_W(): Display also __FILE__ and __LINE__
when these Valgrind checks fail.
storage/innobase/include/ut0ut.h:
Apply snapshot innodb-5.1-ss1989
Revision r1850:
Implement this feature request:
http://bugs.mysql.com/30706
* Add a function that returns the number of microseconds since
epoch - ut_time_us().
* Add (innodb|innobase|srv)_replication_delay MySQL config parameter.
* Add UT_WAIT_FOR() macro that waits for a specified condition to occur
until a timeout elapses.
* Using all of the above, handle the replication thread specially in
srv_conc_enter_innodb().
Approved by: Heikki
Revision r1862:
Add ut_snprintf() function. On Windows this needs to be implemented
using auxiliary functions because there is no snprintf-variant on
Windows that behaves exactly as specified in the standard:
* Always return the number of characters that would have been printed
if the size were unlimited (not including the final `\0').
* Always '\0'-terminate the result
* Do not touch the buffer if size=0, only return the number of characters
that would have been printed. Can be used to estimate the size needed
and to allocate it dynamically.
See http://www.freebsd.org/cgi/query-pr.cgi?pr=87260 for the reason why
2 ap variables are used.
Approved by: Heikki
Revision r1866:
Revert r1850 as MySQL did not approve the addition.
log for r1850:
Implement this feature request:
http://bugs.mysql.com/30706
* Add a function that returns the number of microseconds since
epoch - ut_time_us().
* Add (innodb|innobase|srv)_replication_delay MySQL config parameter.
* Add UT_WAIT_FOR() macro that waits for a specified condition to occur
until a timeout elapses.
* Using all of the above, handle the replication thread specially in
srv_conc_enter_innodb().
storage/innobase/mem/mem0dbg.c:
Apply snapshot innodb-5.1-ss1989
Revision r1830:
Improve memory debugging. This is follow-up to r1819.
mem_heap_validate(): Compile this function also if UNIV_MEM_DEBUG is
defined. Previously, this function was only compiled with UNIV_DEBUG.
mem_heap_free_heap_top(): Flag the memory allocated, not freed, for
Valgrind. Otherwise, Valgrind would complain on the second call of
mem_heap_empty().
UNIV_MEM_ASSERT_RW(), UNIV_MEM_ASSERT_W(): Display additional diagnostics
for failed Valgrind checks.
Revision r1819:
Merge r1815:1817 from branches/zip: Improve Valgrind instrumentation.
UNIV_MEM_ASSERT_RW(): New macro, to check that the contents of a memory
area is defined.
UNIV_MEM_ASSERT_W(): New macro, to check that a memory area is writable.
UNIV_MEM_ASSERT_AND_FREE(): New macro, to check that the memory is
writable before declaring it free (unwritable). This replaces UNIV_MEM_FREE()
in many places.
mem_init_buf(): Check that the memory is writable, and declare it undefined.
mem_erase_buf(): Check that the memory is writable, and declare it freed.
storage/innobase/mem/mem0mem.c:
Apply snapshot innodb-5.1-ss1989
Revision r1819:
Merge r1815:1817 from branches/zip: Improve Valgrind instrumentation.
UNIV_MEM_ASSERT_RW(): New macro, to check that the contents of a memory
area is defined.
UNIV_MEM_ASSERT_W(): New macro, to check that a memory area is writable.
UNIV_MEM_ASSERT_AND_FREE(): New macro, to check that the memory is
writable before declaring it free (unwritable). This replaces UNIV_MEM_FREE()
in many places.
mem_init_buf(): Check that the memory is writable, and declare it undefined.
mem_erase_buf(): Check that the memory is writable, and declare it freed.
storage/innobase/row/row0mysql.c:
Apply snapshot innodb-5.1-ss1989
Revision r1786:
row_create_table_for_mysql(), row_truncate_table_for_mysql(),
row_drop_table_for_mysql(): Do not mention innodb_force_recovery
when newraw is set.
Revision r1790:
row_drop_table_for_mysql(): Before calling
dict_table_remove_from_cache(table) and thus freeing the memory
allocated for the table, copy the table name. This avoids reading
freed memory when name == table->name.
Approved by Sunny.
Revision r1783:
Correct the function comments of row_create_table_for_mysql() and
row_drop_table_for_mysql().
Revision r1894:
Add debug lock checks to autoinc functions. Add lock guards around an
invocation of dict_table_autoinc_initialize().
storage/innobase/row/row0sel.c:
Apply snapshot innodb-5.1-ss1989
Revision r1782:
Add comment that the variable dest should be word aligned. After discussion
on IM with Heikki.
Revision r1988:
Set an error code when a deadlock occurs in semi-consistent read. (Bug #31494)
innodb-semi-consistent: New tests for InnoDB semi-consistent reads.
Unfortunately, these will not trigger Bug #31494, because there merely
occur lock wait timeouts, not deadlocks.
Revision r1820:
Use the clustered index and not the one selected by the optimizer in the plan,
when building a previous version of the row. This bug is triggered when
running queries via InnoDB's internal SQL parser; when InnoDB's optimizer
selects a secondary index for the plan.
Revision r1828:
Fix two bugs:
Bug# 30907: We don't rely on *first_value to be 0 when checking whether
get_auto_increment() has been invoked for the first time in a multi-row
INSERT. We instead use trx_t::n_autoinc_rows. Initialize trx::n_autoinc_rows
inside ha_innobase::start_stmt() too.
Bug# 30888: While adding code for the low level read of the AUTOINC value
from the index, the case for MEDIUM ints which are 3 bytes was missed
triggering an assertion.
Revision r1779:
Fix a bug that handles the case where the host specific byte order matches
the InnoDB storage byte order, which is big-endian.
storage/innobase/sync/sync0rw.c:
Apply snapshot innodb-5.1-ss1989
Revision r1757:
Enclose rw_lock_validate() in #ifdef UNIV_DEBUG. It is only called by
debug assertions.
storage/innobase/ut/ut0ut.c:
Apply snapshot innodb-5.1-ss1989
Revision r1850:
Implement this feature request:
http://bugs.mysql.com/30706
* Add a function that returns the number of microseconds since
epoch - ut_time_us().
* Add (innodb|innobase|srv)_replication_delay MySQL config parameter.
* Add UT_WAIT_FOR() macro that waits for a specified condition to occur
until a timeout elapses.
* Using all of the above, handle the replication thread specially in
srv_conc_enter_innodb().
Approved by: Heikki
Revision r1873:
snprintf() should always return non-negative result. According to
Microsoft documentation about _vscprintf():
If format is a null pointer, the invalid parameter handler is invoked,
as described in Parameter Validation. If execution is allowed to
continue, the functions return -1 and set errno to EINVAL.
The UNIX variant of snprintf() segfaults if format is a NULL pointer
(similar to strlen(NULL) for example), so it is better to conform to
this behavior and crash our custom Windows version instead of
returning -1. Noone would expect -1 to be returned from snprintf().
Cosmetic: Add a space after typecast.
Approved by: Marko
Revision r1862:
Add ut_snprintf() function. On Windows this needs to be implemented
using auxiliary functions because there is no snprintf-variant on
Windows that behaves exactly as specified in the standard:
* Always return the number of characters that would have been printed
if the size were unlimited (not including the final `\0').
* Always '\0'-terminate the result
* Do not touch the buffer if size=0, only return the number of characters
that would have been printed. Can be used to estimate the size needed
and to allocate it dynamically.
See http://www.freebsd.org/cgi/query-pr.cgi?pr=87260 for the reason why
2 ap variables are used.
Approved by: Heikki
Revision r1866:
Revert r1850 as MySQL did not approve the addition.
log for r1850:
Implement this feature request:
http://bugs.mysql.com/30706
* Add a function that returns the number of microseconds since
epoch - ut_time_us().
* Add (innodb|innobase|srv)_replication_delay MySQL config parameter.
* Add UT_WAIT_FOR() macro that waits for a specified condition to occur
until a timeout elapses.
* Using all of the above, handle the replication thread specially in
srv_conc_enter_innodb().
Revision r1787:
Move the prototype of innobase_print_identifier() from ut0ut.c to
ha_prototypes.h. Enclose the definitions in ha_prototypes.h in
#ifndef UNIV_HOTBACKUP.
Revision r1789:
ut_print_namel(): Do not assume that all '/' are separators between
database and table names.
Approved by Heikki.
Revision r1936:
ut_print_buf(): Add a Valgrind check that the buffer is wholly defined.
mysql-test/r/innodb-semi-consistent.result:
Apply snapshot innodb-5.1-ss1989
Revision r1988:
Set an error code when a deadlock occurs in semi-consistent read. (Bug #31494)
innodb-semi-consistent: New tests for InnoDB semi-consistent reads.
Unfortunately, these will not trigger Bug #31494, because there merely
occur lock wait timeouts, not deadlocks.
mysql-test/r/innodb_autoinc_lock_mode_zero.result:
New test, using read-only setting --innodb-autoinc-lock-mode=0
mysql-test/t/innodb-semi-consistent-master.opt:
Apply snapshot innodb-5.1-ss1989
Revision r1988:
Set an error code when a deadlock occurs in semi-consistent read. (Bug #31494)
innodb-semi-consistent: New tests for InnoDB semi-consistent reads.
Unfortunately, these will not trigger Bug #31494, because there merely
occur lock wait timeouts, not deadlocks.
mysql-test/t/innodb-semi-consistent.test:
Apply snapshot innodb-5.1-ss1989
Revision r1988:
Set an error code when a deadlock occurs in semi-consistent read. (Bug #31494)
innodb-semi-consistent: New tests for InnoDB semi-consistent reads.
Unfortunately, these will not trigger Bug #31494, because there merely
occur lock wait timeouts, not deadlocks.
mysql-test/t/innodb_autoinc_lock_mode_zero-master.opt:
New test, using read-only setting --innodb-autoinc-lock-mode=0
mysql-test/t/innodb_autoinc_lock_mode_zero.test:
New test, using read-only setting --innodb-autoinc-lock-mode=0
2007-11-06 23:42:58 +01:00
SET TX_ISOLATION='read-committed';
SET AUTOCOMMIT=0;
INSERT INTO t1 VALUES (1);
COMMIT;
SELECT * FROM t1 WHERE a=1;
a
1
2008-10-03 14:24:19 +02:00
SET binlog_format='MIXED';
Apply snapshot innodb-5.1-ss1989
Fixes the following bugs:
Bug #30706: SQL thread on slave is allowed to block client queries when slave load is high
Add (innodb|innobase|srv)_replication_delay MySQL config parameter.
Bug #30888: Innodb table + stored procedure + row deletion = server crash
While adding code for the low level read of the AUTOINC value from the index,
the case for MEDIUM ints which are 3 bytes was missed triggering an
assertion.
Bug #30907: Regression: "--innodb_autoinc_lock_mode=0" (off) not same as older releases
We don't rely on *first_value to be 0 when checking whether
get_auto_increment() has been invoked for the first time in a multi-row
INSERT. We instead use trx_t::n_autoinc_rows. Initialize trx::n_autoinc_rows
inside ha_innobase::start_stmt() too.
Bug #31444: "InnoDB: Error: MySQL is freeing a thd" in innodb_mysql.test
ha_innobase::external_lock(): Update prebuilt->mysql_has_locked and
trx->n_mysql_tables_in_use only after row_lock_table_for_mysql() returns
DB_SUCCESS. A timeout on LOCK TABLES would lead to an inconsistent state,
which would cause trx_free() to print a warning.
Bug #31494: innodb + 5.1 + read committed crash, assertion
Set an error code when a deadlock occurs in semi-consistent read.
mysql-test/r/innodb.result:
Apply snapshot innodb-5.1-ss1989
Also, a test is moved into the new innodb_autoinc_lock_mode_zero
test, because it depends on a non-default setting for a read-only
variable.
Revision r1821:
Merge a change from MySQL AB:
ChangeSet@1.2536.50.1 2007-08-02 12:45:56-07:00 igor@mysql.com
Fixed bug#28404.
This patch adds cost estimation for the queries with ORDER BY / GROUP BY
and LIMIT.
If there was a ref/range access to the table whose rows were required
to be ordered in the result set the optimizer always employed this access
though a scan by a different index that was compatible with the required
order could be cheaper to produce the first L rows of the result set.
Now for such queries the optimizer makes a choice between the cheapest
ref/range accesses not compatible with the given order and index scans
compatible with it.
innodb.result: Adjusted results for test cases affected fy the fix for
bug #28404.
Revision r1781:
Fix a test case that was broken after Bug#16979 fix. See r1645 and r1735.
The variable used in the tests below was introduced in r1735.
Revision r1792:
innodb.result: Revert r1655, which should have been reverted as part of r1781.
Revision r1843:
Add test for Bug# 21409, the actual bug was fixed in r1334.
mysql-test/t/innodb.test:
Apply snapshot innodb-5.1-ss1989
Also, a test is moved into the new innodb_autoinc_lock_mode_zero
test, because it depends on a non-default setting for a read-only
variable.
Revision r1781:
Fix a test case that was broken after Bug#16979 fix. See r1645 and r1735.
The variable used in the tests below was introduced in r1735.
Revision r1843:
Add test for Bug# 21409, the actual bug was fixed in r1334.
storage/innobase/buf/buf0lru.c:
Apply snapshot innodb-5.1-ss1989
Revision r1819:
Merge r1815:1817 from branches/zip: Improve Valgrind instrumentation.
UNIV_MEM_ASSERT_RW(): New macro, to check that the contents of a memory
area is defined.
UNIV_MEM_ASSERT_W(): New macro, to check that a memory area is writable.
UNIV_MEM_ASSERT_AND_FREE(): New macro, to check that the memory is
writable before declaring it free (unwritable). This replaces UNIV_MEM_FREE()
in many places.
mem_init_buf(): Check that the memory is writable, and declare it undefined.
mem_erase_buf(): Check that the memory is writable, and declare it freed.
storage/innobase/dict/dict0dict.c:
Apply snapshot innodb-5.1-ss1989
Revision r1894:
Add debug lock checks to autoinc functions. Add lock guards around an
invocation of dict_table_autoinc_initialize().
storage/innobase/dict/dict0load.c:
Apply snapshot innodb-5.1-ss1989
Revision r1974:
Prevent loading of tables that have unsupported features most notably
FTS indexes.
storage/innobase/handler/ha_innodb.cc:
Apply snapshot innodb-5.1-ss1989
Revision r1850:
Implement this feature request:
http://bugs.mysql.com/30706
* Add a function that returns the number of microseconds since
epoch - ut_time_us().
* Add (innodb|innobase|srv)_replication_delay MySQL config parameter.
* Add UT_WAIT_FOR() macro that waits for a specified condition to occur
until a timeout elapses.
* Using all of the above, handle the replication thread specially in
srv_conc_enter_innodb().
Approved by: Heikki
Revision r1887:
Merge changes from MySQL AB:
ChangeSet@1.2528.115.25 2007-08-27 18:18:14-06:00 tsmith@hindu.god
Fix some Windows compiler warnings.
dict0mem.c: Fix compiler warning with a cast.
ha_innodb.cc: Change type to fix a compiler warning.
Revision r1809:
ha_innobase::external_lock(): Update prebuilt->mysql_has_locked and
trx->n_mysql_tables_in_use only after row_lock_table_for_mysql()
returns DB_SUCCESS. A timeout on LOCK TABLES would lead to an
inconsistent state, which would cause trx_free() to print a warning.
This was later reported as Bug #31444.
Revision r1833:
Add /*== ... === */ decoration that was missing around some auto-inc functions.
Add a missing comment, fix the length of a decoration. Initialize the *value
out parameter in ha_innobase::innobase_get_auto_increment().
Revision r1866:
Revert r1850 as MySQL did not approve the addition.
log for r1850:
Implement this feature request:
http://bugs.mysql.com/30706
* Add a function that returns the number of microseconds since
epoch - ut_time_us().
* Add (innodb|innobase|srv)_replication_delay MySQL config parameter.
* Add UT_WAIT_FOR() macro that waits for a specified condition to occur
until a timeout elapses.
* Using all of the above, handle the replication thread specially in
srv_conc_enter_innodb().
Revision r1846:
Add config option innodb_use_adaptive_hash_indexes to enable/disable
adaptive hash indexes. It is enabled by default (no change in default
behavior).
Approved by: Marko
Revision r1974:
Prevent loading of tables that have unsupported features most notably
FTS indexes.
Revision r1829:
Add assertion to enforce check of an implicit invariant and add comment about
retry of autoinc read semantics. We always reread the table's autoinc counter
after attempting to initialize it i.e., we want to guarantee that a read of
autoinc valus that is returned to the caller is always covered by the
AUTOINC locking mechanism.
Revision r1787:
Move the prototype of innobase_print_identifier() from ut0ut.c to
ha_prototypes.h. Enclose the definitions in ha_prototypes.h in
#ifndef UNIV_HOTBACKUP.
Revision r1888:
Merge a change from MySQL AB:
ChangeSet@1.2528.115.30 2007-08-28 10:17:15-06:00 tsmith@hindu.god
Fix another compiler warning on Windows in InnoDB.
ha_innodb.cc:
Fix compiler warning: ::get_auto_increment takes a ulonglong
for nb_desired_values, but InnoDB's trx struct stores it as
a ulint (unsigned long). Probably harmless, as a single
statement won't be asking for more than 2^32 rows.
Revision r1987:
Bug fix: The problem was that when write_row() attempted to update the max
autoinc value, and if it was rolled back because of a deadlock, the
deadlock error (transaction rollback) was not being propagated back to MySQL.
Revision r1889:
Merge a change from MySQL AB:
ChangeSet@1.2560 2007-09-21 10:15:16+02:00 gkodinov@local
ha_innodb.cc: fixed type conversion warnings revealed by bug 30639
Revision r1989:
Suppress printing of deadlock errors while reading the autoinc value.
DB_DEADLOCK errors are part of normal processing and excessive printing
of these error messages could be disconcerting for users.
Revision r1828:
Fix two bugs:
Bug# 30907: We don't rely on *first_value to be 0 when checking whether
get_auto_increment() has been invoked for the first time in a multi-row
INSERT. We instead use trx_t::n_autoinc_rows. Initialize trx::n_autoinc_rows
inside ha_innobase::start_stmt() too.
Bug# 30888: While adding code for the low level read of the AUTOINC value
from the index, the case for MEDIUM ints which are 3 bytes was missed
triggering an assertion.
storage/innobase/handler/ha_innodb.h:
Apply snapshot innodb-5.1-ss1989
Revision r1844:
Remove the prototypes of some functions inside #if 0.
The function definitions were removed in r1746.
storage/innobase/ibuf/ibuf0ibuf.c:
Apply snapshot innodb-5.1-ss1989
Revision r1965:
ibuf_insert_to_index_page(): Fix typos in diagnostic output.
storage/innobase/include/db0err.h:
Apply snapshot innodb-5.1-ss1989
Revision r1974:
Prevent loading of tables that have unsupported features most notably
FTS indexes.
storage/innobase/include/ha_prototypes.h:
Apply snapshot innodb-5.1-ss1989
Revision r1787:
Move the prototype of innobase_print_identifier() from ut0ut.c to
ha_prototypes.h. Enclose the definitions in ha_prototypes.h in
#ifndef UNIV_HOTBACKUP.
storage/innobase/include/mach0data.h:
Apply snapshot innodb-5.1-ss1989
Revision r1779:
Fix a bug that handles the case where the host specific byte order matches
the InnoDB storage byte order, which is big-endian.
storage/innobase/include/mach0data.ic:
Apply snapshot innodb-5.1-ss1989
Revision r1779:
Fix a bug that handles the case where the host specific byte order matches
the InnoDB storage byte order, which is big-endian.
storage/innobase/include/mem0dbg.h:
Apply snapshot innodb-5.1-ss1989
Revision r1830:
Improve memory debugging. This is follow-up to r1819.
mem_heap_validate(): Compile this function also if UNIV_MEM_DEBUG is
defined. Previously, this function was only compiled with UNIV_DEBUG.
mem_heap_free_heap_top(): Flag the memory allocated, not freed, for
Valgrind. Otherwise, Valgrind would complain on the second call of
mem_heap_empty().
UNIV_MEM_ASSERT_RW(), UNIV_MEM_ASSERT_W(): Display additional diagnostics
for failed Valgrind checks.
storage/innobase/include/mem0mem.ic:
Apply snapshot innodb-5.1-ss1989
Revision r1830:
Improve memory debugging. This is follow-up to r1819.
mem_heap_validate(): Compile this function also if UNIV_MEM_DEBUG is
defined. Previously, this function was only compiled with UNIV_DEBUG.
mem_heap_free_heap_top(): Flag the memory allocated, not freed, for
Valgrind. Otherwise, Valgrind would complain on the second call of
mem_heap_empty().
UNIV_MEM_ASSERT_RW(), UNIV_MEM_ASSERT_W(): Display additional diagnostics
for failed Valgrind checks.
Revision r1937:
mem_heap_free_top(): Remove a bogus Valgrind warning.
Revision r1819:
Merge r1815:1817 from branches/zip: Improve Valgrind instrumentation.
UNIV_MEM_ASSERT_RW(): New macro, to check that the contents of a memory
area is defined.
UNIV_MEM_ASSERT_W(): New macro, to check that a memory area is writable.
UNIV_MEM_ASSERT_AND_FREE(): New macro, to check that the memory is
writable before declaring it free (unwritable). This replaces UNIV_MEM_FREE()
in many places.
mem_init_buf(): Check that the memory is writable, and declare it undefined.
mem_erase_buf(): Check that the memory is writable, and declare it freed.
storage/innobase/include/rem0rec.ic:
Apply snapshot innodb-5.1-ss1989
Revision r1918:
Improve Valgrind instrumentation.
rec_offs_set_n_alloc(): Use UNIV_MEM_ASSERT_AND_ALLOC().
UNIV_MEM_ASSERT_AND_ALLOC(): New directive, similar to
UNIV_MEM_ASSERT_AND_FREE().
storage/innobase/include/row0mysql.h:
Apply snapshot innodb-5.1-ss1989
Revision r1783:
Correct the function comments of row_create_table_for_mysql() and
row_drop_table_for_mysql().
storage/innobase/include/sync0rw.h:
Apply snapshot innodb-5.1-ss1989
Revision r1757:
Enclose rw_lock_validate() in #ifdef UNIV_DEBUG. It is only called by
debug assertions.
storage/innobase/include/univ.i:
Apply snapshot innodb-5.1-ss1989
Revision r1827:
Merge r1826 from branches/zip: UNIV_MEM_ASSERT_AND_FREE():
Use UNIV_MEM_ASSERT_W() instead of UNIV_MEM_ASSERT_RW().
The memory area need not be initialized.
This mistake was made in r1815.
Revision r1918:
Improve Valgrind instrumentation.
rec_offs_set_n_alloc(): Use UNIV_MEM_ASSERT_AND_ALLOC().
UNIV_MEM_ASSERT_AND_ALLOC(): New directive, similar to
UNIV_MEM_ASSERT_AND_FREE().
Revision r1830:
Improve memory debugging. This is follow-up to r1819.
mem_heap_validate(): Compile this function also if UNIV_MEM_DEBUG is
defined. Previously, this function was only compiled with UNIV_DEBUG.
mem_heap_free_heap_top(): Flag the memory allocated, not freed, for
Valgrind. Otherwise, Valgrind would complain on the second call of
mem_heap_empty().
UNIV_MEM_ASSERT_RW(), UNIV_MEM_ASSERT_W(): Display additional diagnostics
for failed Valgrind checks.
Revision r1819:
Merge r1815:1817 from branches/zip: Improve Valgrind instrumentation.
UNIV_MEM_ASSERT_RW(): New macro, to check that the contents of a memory
area is defined.
UNIV_MEM_ASSERT_W(): New macro, to check that a memory area is writable.
UNIV_MEM_ASSERT_AND_FREE(): New macro, to check that the memory is
writable before declaring it free (unwritable). This replaces UNIV_MEM_FREE()
in many places.
mem_init_buf(): Check that the memory is writable, and declare it undefined.
mem_erase_buf(): Check that the memory is writable, and declare it freed.
Revision r1948:
UNIV_MEM_ASSERT_RW(), UNIV_MEM_ASSERT_W(): Display also __FILE__ and __LINE__
when these Valgrind checks fail.
storage/innobase/include/ut0ut.h:
Apply snapshot innodb-5.1-ss1989
Revision r1850:
Implement this feature request:
http://bugs.mysql.com/30706
* Add a function that returns the number of microseconds since
epoch - ut_time_us().
* Add (innodb|innobase|srv)_replication_delay MySQL config parameter.
* Add UT_WAIT_FOR() macro that waits for a specified condition to occur
until a timeout elapses.
* Using all of the above, handle the replication thread specially in
srv_conc_enter_innodb().
Approved by: Heikki
Revision r1862:
Add ut_snprintf() function. On Windows this needs to be implemented
using auxiliary functions because there is no snprintf-variant on
Windows that behaves exactly as specified in the standard:
* Always return the number of characters that would have been printed
if the size were unlimited (not including the final `\0').
* Always '\0'-terminate the result
* Do not touch the buffer if size=0, only return the number of characters
that would have been printed. Can be used to estimate the size needed
and to allocate it dynamically.
See http://www.freebsd.org/cgi/query-pr.cgi?pr=87260 for the reason why
2 ap variables are used.
Approved by: Heikki
Revision r1866:
Revert r1850 as MySQL did not approve the addition.
log for r1850:
Implement this feature request:
http://bugs.mysql.com/30706
* Add a function that returns the number of microseconds since
epoch - ut_time_us().
* Add (innodb|innobase|srv)_replication_delay MySQL config parameter.
* Add UT_WAIT_FOR() macro that waits for a specified condition to occur
until a timeout elapses.
* Using all of the above, handle the replication thread specially in
srv_conc_enter_innodb().
storage/innobase/mem/mem0dbg.c:
Apply snapshot innodb-5.1-ss1989
Revision r1830:
Improve memory debugging. This is follow-up to r1819.
mem_heap_validate(): Compile this function also if UNIV_MEM_DEBUG is
defined. Previously, this function was only compiled with UNIV_DEBUG.
mem_heap_free_heap_top(): Flag the memory allocated, not freed, for
Valgrind. Otherwise, Valgrind would complain on the second call of
mem_heap_empty().
UNIV_MEM_ASSERT_RW(), UNIV_MEM_ASSERT_W(): Display additional diagnostics
for failed Valgrind checks.
Revision r1819:
Merge r1815:1817 from branches/zip: Improve Valgrind instrumentation.
UNIV_MEM_ASSERT_RW(): New macro, to check that the contents of a memory
area is defined.
UNIV_MEM_ASSERT_W(): New macro, to check that a memory area is writable.
UNIV_MEM_ASSERT_AND_FREE(): New macro, to check that the memory is
writable before declaring it free (unwritable). This replaces UNIV_MEM_FREE()
in many places.
mem_init_buf(): Check that the memory is writable, and declare it undefined.
mem_erase_buf(): Check that the memory is writable, and declare it freed.
storage/innobase/mem/mem0mem.c:
Apply snapshot innodb-5.1-ss1989
Revision r1819:
Merge r1815:1817 from branches/zip: Improve Valgrind instrumentation.
UNIV_MEM_ASSERT_RW(): New macro, to check that the contents of a memory
area is defined.
UNIV_MEM_ASSERT_W(): New macro, to check that a memory area is writable.
UNIV_MEM_ASSERT_AND_FREE(): New macro, to check that the memory is
writable before declaring it free (unwritable). This replaces UNIV_MEM_FREE()
in many places.
mem_init_buf(): Check that the memory is writable, and declare it undefined.
mem_erase_buf(): Check that the memory is writable, and declare it freed.
storage/innobase/row/row0mysql.c:
Apply snapshot innodb-5.1-ss1989
Revision r1786:
row_create_table_for_mysql(), row_truncate_table_for_mysql(),
row_drop_table_for_mysql(): Do not mention innodb_force_recovery
when newraw is set.
Revision r1790:
row_drop_table_for_mysql(): Before calling
dict_table_remove_from_cache(table) and thus freeing the memory
allocated for the table, copy the table name. This avoids reading
freed memory when name == table->name.
Approved by Sunny.
Revision r1783:
Correct the function comments of row_create_table_for_mysql() and
row_drop_table_for_mysql().
Revision r1894:
Add debug lock checks to autoinc functions. Add lock guards around an
invocation of dict_table_autoinc_initialize().
storage/innobase/row/row0sel.c:
Apply snapshot innodb-5.1-ss1989
Revision r1782:
Add comment that the variable dest should be word aligned. After discussion
on IM with Heikki.
Revision r1988:
Set an error code when a deadlock occurs in semi-consistent read. (Bug #31494)
innodb-semi-consistent: New tests for InnoDB semi-consistent reads.
Unfortunately, these will not trigger Bug #31494, because there merely
occur lock wait timeouts, not deadlocks.
Revision r1820:
Use the clustered index and not the one selected by the optimizer in the plan,
when building a previous version of the row. This bug is triggered when
running queries via InnoDB's internal SQL parser; when InnoDB's optimizer
selects a secondary index for the plan.
Revision r1828:
Fix two bugs:
Bug# 30907: We don't rely on *first_value to be 0 when checking whether
get_auto_increment() has been invoked for the first time in a multi-row
INSERT. We instead use trx_t::n_autoinc_rows. Initialize trx::n_autoinc_rows
inside ha_innobase::start_stmt() too.
Bug# 30888: While adding code for the low level read of the AUTOINC value
from the index, the case for MEDIUM ints which are 3 bytes was missed
triggering an assertion.
Revision r1779:
Fix a bug that handles the case where the host specific byte order matches
the InnoDB storage byte order, which is big-endian.
storage/innobase/sync/sync0rw.c:
Apply snapshot innodb-5.1-ss1989
Revision r1757:
Enclose rw_lock_validate() in #ifdef UNIV_DEBUG. It is only called by
debug assertions.
storage/innobase/ut/ut0ut.c:
Apply snapshot innodb-5.1-ss1989
Revision r1850:
Implement this feature request:
http://bugs.mysql.com/30706
* Add a function that returns the number of microseconds since
epoch - ut_time_us().
* Add (innodb|innobase|srv)_replication_delay MySQL config parameter.
* Add UT_WAIT_FOR() macro that waits for a specified condition to occur
until a timeout elapses.
* Using all of the above, handle the replication thread specially in
srv_conc_enter_innodb().
Approved by: Heikki
Revision r1873:
snprintf() should always return non-negative result. According to
Microsoft documentation about _vscprintf():
If format is a null pointer, the invalid parameter handler is invoked,
as described in Parameter Validation. If execution is allowed to
continue, the functions return -1 and set errno to EINVAL.
The UNIX variant of snprintf() segfaults if format is a NULL pointer
(similar to strlen(NULL) for example), so it is better to conform to
this behavior and crash our custom Windows version instead of
returning -1. Noone would expect -1 to be returned from snprintf().
Cosmetic: Add a space after typecast.
Approved by: Marko
Revision r1862:
Add ut_snprintf() function. On Windows this needs to be implemented
using auxiliary functions because there is no snprintf-variant on
Windows that behaves exactly as specified in the standard:
* Always return the number of characters that would have been printed
if the size were unlimited (not including the final `\0').
* Always '\0'-terminate the result
* Do not touch the buffer if size=0, only return the number of characters
that would have been printed. Can be used to estimate the size needed
and to allocate it dynamically.
See http://www.freebsd.org/cgi/query-pr.cgi?pr=87260 for the reason why
2 ap variables are used.
Approved by: Heikki
Revision r1866:
Revert r1850 as MySQL did not approve the addition.
log for r1850:
Implement this feature request:
http://bugs.mysql.com/30706
* Add a function that returns the number of microseconds since
epoch - ut_time_us().
* Add (innodb|innobase|srv)_replication_delay MySQL config parameter.
* Add UT_WAIT_FOR() macro that waits for a specified condition to occur
until a timeout elapses.
* Using all of the above, handle the replication thread specially in
srv_conc_enter_innodb().
Revision r1787:
Move the prototype of innobase_print_identifier() from ut0ut.c to
ha_prototypes.h. Enclose the definitions in ha_prototypes.h in
#ifndef UNIV_HOTBACKUP.
Revision r1789:
ut_print_namel(): Do not assume that all '/' are separators between
database and table names.
Approved by Heikki.
Revision r1936:
ut_print_buf(): Add a Valgrind check that the buffer is wholly defined.
mysql-test/r/innodb-semi-consistent.result:
Apply snapshot innodb-5.1-ss1989
Revision r1988:
Set an error code when a deadlock occurs in semi-consistent read. (Bug #31494)
innodb-semi-consistent: New tests for InnoDB semi-consistent reads.
Unfortunately, these will not trigger Bug #31494, because there merely
occur lock wait timeouts, not deadlocks.
mysql-test/r/innodb_autoinc_lock_mode_zero.result:
New test, using read-only setting --innodb-autoinc-lock-mode=0
mysql-test/t/innodb-semi-consistent-master.opt:
Apply snapshot innodb-5.1-ss1989
Revision r1988:
Set an error code when a deadlock occurs in semi-consistent read. (Bug #31494)
innodb-semi-consistent: New tests for InnoDB semi-consistent reads.
Unfortunately, these will not trigger Bug #31494, because there merely
occur lock wait timeouts, not deadlocks.
mysql-test/t/innodb-semi-consistent.test:
Apply snapshot innodb-5.1-ss1989
Revision r1988:
Set an error code when a deadlock occurs in semi-consistent read. (Bug #31494)
innodb-semi-consistent: New tests for InnoDB semi-consistent reads.
Unfortunately, these will not trigger Bug #31494, because there merely
occur lock wait timeouts, not deadlocks.
mysql-test/t/innodb_autoinc_lock_mode_zero-master.opt:
New test, using read-only setting --innodb-autoinc-lock-mode=0
mysql-test/t/innodb_autoinc_lock_mode_zero.test:
New test, using read-only setting --innodb-autoinc-lock-mode=0
2007-11-06 23:42:58 +01:00
SET TX_ISOLATION='read-committed';
SET AUTOCOMMIT=0;
SELECT * FROM t2;
a
2008-10-03 14:24:19 +02:00
SET binlog_format='MIXED';
Apply snapshot innodb-5.1-ss1989
Fixes the following bugs:
Bug #30706: SQL thread on slave is allowed to block client queries when slave load is high
Add (innodb|innobase|srv)_replication_delay MySQL config parameter.
Bug #30888: Innodb table + stored procedure + row deletion = server crash
While adding code for the low level read of the AUTOINC value from the index,
the case for MEDIUM ints which are 3 bytes was missed triggering an
assertion.
Bug #30907: Regression: "--innodb_autoinc_lock_mode=0" (off) not same as older releases
We don't rely on *first_value to be 0 when checking whether
get_auto_increment() has been invoked for the first time in a multi-row
INSERT. We instead use trx_t::n_autoinc_rows. Initialize trx::n_autoinc_rows
inside ha_innobase::start_stmt() too.
Bug #31444: "InnoDB: Error: MySQL is freeing a thd" in innodb_mysql.test
ha_innobase::external_lock(): Update prebuilt->mysql_has_locked and
trx->n_mysql_tables_in_use only after row_lock_table_for_mysql() returns
DB_SUCCESS. A timeout on LOCK TABLES would lead to an inconsistent state,
which would cause trx_free() to print a warning.
Bug #31494: innodb + 5.1 + read committed crash, assertion
Set an error code when a deadlock occurs in semi-consistent read.
mysql-test/r/innodb.result:
Apply snapshot innodb-5.1-ss1989
Also, a test is moved into the new innodb_autoinc_lock_mode_zero
test, because it depends on a non-default setting for a read-only
variable.
Revision r1821:
Merge a change from MySQL AB:
ChangeSet@1.2536.50.1 2007-08-02 12:45:56-07:00 igor@mysql.com
Fixed bug#28404.
This patch adds cost estimation for the queries with ORDER BY / GROUP BY
and LIMIT.
If there was a ref/range access to the table whose rows were required
to be ordered in the result set the optimizer always employed this access
though a scan by a different index that was compatible with the required
order could be cheaper to produce the first L rows of the result set.
Now for such queries the optimizer makes a choice between the cheapest
ref/range accesses not compatible with the given order and index scans
compatible with it.
innodb.result: Adjusted results for test cases affected fy the fix for
bug #28404.
Revision r1781:
Fix a test case that was broken after Bug#16979 fix. See r1645 and r1735.
The variable used in the tests below was introduced in r1735.
Revision r1792:
innodb.result: Revert r1655, which should have been reverted as part of r1781.
Revision r1843:
Add test for Bug# 21409, the actual bug was fixed in r1334.
mysql-test/t/innodb.test:
Apply snapshot innodb-5.1-ss1989
Also, a test is moved into the new innodb_autoinc_lock_mode_zero
test, because it depends on a non-default setting for a read-only
variable.
Revision r1781:
Fix a test case that was broken after Bug#16979 fix. See r1645 and r1735.
The variable used in the tests below was introduced in r1735.
Revision r1843:
Add test for Bug# 21409, the actual bug was fixed in r1334.
storage/innobase/buf/buf0lru.c:
Apply snapshot innodb-5.1-ss1989
Revision r1819:
Merge r1815:1817 from branches/zip: Improve Valgrind instrumentation.
UNIV_MEM_ASSERT_RW(): New macro, to check that the contents of a memory
area is defined.
UNIV_MEM_ASSERT_W(): New macro, to check that a memory area is writable.
UNIV_MEM_ASSERT_AND_FREE(): New macro, to check that the memory is
writable before declaring it free (unwritable). This replaces UNIV_MEM_FREE()
in many places.
mem_init_buf(): Check that the memory is writable, and declare it undefined.
mem_erase_buf(): Check that the memory is writable, and declare it freed.
storage/innobase/dict/dict0dict.c:
Apply snapshot innodb-5.1-ss1989
Revision r1894:
Add debug lock checks to autoinc functions. Add lock guards around an
invocation of dict_table_autoinc_initialize().
storage/innobase/dict/dict0load.c:
Apply snapshot innodb-5.1-ss1989
Revision r1974:
Prevent loading of tables that have unsupported features most notably
FTS indexes.
storage/innobase/handler/ha_innodb.cc:
Apply snapshot innodb-5.1-ss1989
Revision r1850:
Implement this feature request:
http://bugs.mysql.com/30706
* Add a function that returns the number of microseconds since
epoch - ut_time_us().
* Add (innodb|innobase|srv)_replication_delay MySQL config parameter.
* Add UT_WAIT_FOR() macro that waits for a specified condition to occur
until a timeout elapses.
* Using all of the above, handle the replication thread specially in
srv_conc_enter_innodb().
Approved by: Heikki
Revision r1887:
Merge changes from MySQL AB:
ChangeSet@1.2528.115.25 2007-08-27 18:18:14-06:00 tsmith@hindu.god
Fix some Windows compiler warnings.
dict0mem.c: Fix compiler warning with a cast.
ha_innodb.cc: Change type to fix a compiler warning.
Revision r1809:
ha_innobase::external_lock(): Update prebuilt->mysql_has_locked and
trx->n_mysql_tables_in_use only after row_lock_table_for_mysql()
returns DB_SUCCESS. A timeout on LOCK TABLES would lead to an
inconsistent state, which would cause trx_free() to print a warning.
This was later reported as Bug #31444.
Revision r1833:
Add /*== ... === */ decoration that was missing around some auto-inc functions.
Add a missing comment, fix the length of a decoration. Initialize the *value
out parameter in ha_innobase::innobase_get_auto_increment().
Revision r1866:
Revert r1850 as MySQL did not approve the addition.
log for r1850:
Implement this feature request:
http://bugs.mysql.com/30706
* Add a function that returns the number of microseconds since
epoch - ut_time_us().
* Add (innodb|innobase|srv)_replication_delay MySQL config parameter.
* Add UT_WAIT_FOR() macro that waits for a specified condition to occur
until a timeout elapses.
* Using all of the above, handle the replication thread specially in
srv_conc_enter_innodb().
Revision r1846:
Add config option innodb_use_adaptive_hash_indexes to enable/disable
adaptive hash indexes. It is enabled by default (no change in default
behavior).
Approved by: Marko
Revision r1974:
Prevent loading of tables that have unsupported features most notably
FTS indexes.
Revision r1829:
Add assertion to enforce check of an implicit invariant and add comment about
retry of autoinc read semantics. We always reread the table's autoinc counter
after attempting to initialize it i.e., we want to guarantee that a read of
autoinc valus that is returned to the caller is always covered by the
AUTOINC locking mechanism.
Revision r1787:
Move the prototype of innobase_print_identifier() from ut0ut.c to
ha_prototypes.h. Enclose the definitions in ha_prototypes.h in
#ifndef UNIV_HOTBACKUP.
Revision r1888:
Merge a change from MySQL AB:
ChangeSet@1.2528.115.30 2007-08-28 10:17:15-06:00 tsmith@hindu.god
Fix another compiler warning on Windows in InnoDB.
ha_innodb.cc:
Fix compiler warning: ::get_auto_increment takes a ulonglong
for nb_desired_values, but InnoDB's trx struct stores it as
a ulint (unsigned long). Probably harmless, as a single
statement won't be asking for more than 2^32 rows.
Revision r1987:
Bug fix: The problem was that when write_row() attempted to update the max
autoinc value, and if it was rolled back because of a deadlock, the
deadlock error (transaction rollback) was not being propagated back to MySQL.
Revision r1889:
Merge a change from MySQL AB:
ChangeSet@1.2560 2007-09-21 10:15:16+02:00 gkodinov@local
ha_innodb.cc: fixed type conversion warnings revealed by bug 30639
Revision r1989:
Suppress printing of deadlock errors while reading the autoinc value.
DB_DEADLOCK errors are part of normal processing and excessive printing
of these error messages could be disconcerting for users.
Revision r1828:
Fix two bugs:
Bug# 30907: We don't rely on *first_value to be 0 when checking whether
get_auto_increment() has been invoked for the first time in a multi-row
INSERT. We instead use trx_t::n_autoinc_rows. Initialize trx::n_autoinc_rows
inside ha_innobase::start_stmt() too.
Bug# 30888: While adding code for the low level read of the AUTOINC value
from the index, the case for MEDIUM ints which are 3 bytes was missed
triggering an assertion.
storage/innobase/handler/ha_innodb.h:
Apply snapshot innodb-5.1-ss1989
Revision r1844:
Remove the prototypes of some functions inside #if 0.
The function definitions were removed in r1746.
storage/innobase/ibuf/ibuf0ibuf.c:
Apply snapshot innodb-5.1-ss1989
Revision r1965:
ibuf_insert_to_index_page(): Fix typos in diagnostic output.
storage/innobase/include/db0err.h:
Apply snapshot innodb-5.1-ss1989
Revision r1974:
Prevent loading of tables that have unsupported features most notably
FTS indexes.
storage/innobase/include/ha_prototypes.h:
Apply snapshot innodb-5.1-ss1989
Revision r1787:
Move the prototype of innobase_print_identifier() from ut0ut.c to
ha_prototypes.h. Enclose the definitions in ha_prototypes.h in
#ifndef UNIV_HOTBACKUP.
storage/innobase/include/mach0data.h:
Apply snapshot innodb-5.1-ss1989
Revision r1779:
Fix a bug that handles the case where the host specific byte order matches
the InnoDB storage byte order, which is big-endian.
storage/innobase/include/mach0data.ic:
Apply snapshot innodb-5.1-ss1989
Revision r1779:
Fix a bug that handles the case where the host specific byte order matches
the InnoDB storage byte order, which is big-endian.
storage/innobase/include/mem0dbg.h:
Apply snapshot innodb-5.1-ss1989
Revision r1830:
Improve memory debugging. This is follow-up to r1819.
mem_heap_validate(): Compile this function also if UNIV_MEM_DEBUG is
defined. Previously, this function was only compiled with UNIV_DEBUG.
mem_heap_free_heap_top(): Flag the memory allocated, not freed, for
Valgrind. Otherwise, Valgrind would complain on the second call of
mem_heap_empty().
UNIV_MEM_ASSERT_RW(), UNIV_MEM_ASSERT_W(): Display additional diagnostics
for failed Valgrind checks.
storage/innobase/include/mem0mem.ic:
Apply snapshot innodb-5.1-ss1989
Revision r1830:
Improve memory debugging. This is follow-up to r1819.
mem_heap_validate(): Compile this function also if UNIV_MEM_DEBUG is
defined. Previously, this function was only compiled with UNIV_DEBUG.
mem_heap_free_heap_top(): Flag the memory allocated, not freed, for
Valgrind. Otherwise, Valgrind would complain on the second call of
mem_heap_empty().
UNIV_MEM_ASSERT_RW(), UNIV_MEM_ASSERT_W(): Display additional diagnostics
for failed Valgrind checks.
Revision r1937:
mem_heap_free_top(): Remove a bogus Valgrind warning.
Revision r1819:
Merge r1815:1817 from branches/zip: Improve Valgrind instrumentation.
UNIV_MEM_ASSERT_RW(): New macro, to check that the contents of a memory
area is defined.
UNIV_MEM_ASSERT_W(): New macro, to check that a memory area is writable.
UNIV_MEM_ASSERT_AND_FREE(): New macro, to check that the memory is
writable before declaring it free (unwritable). This replaces UNIV_MEM_FREE()
in many places.
mem_init_buf(): Check that the memory is writable, and declare it undefined.
mem_erase_buf(): Check that the memory is writable, and declare it freed.
storage/innobase/include/rem0rec.ic:
Apply snapshot innodb-5.1-ss1989
Revision r1918:
Improve Valgrind instrumentation.
rec_offs_set_n_alloc(): Use UNIV_MEM_ASSERT_AND_ALLOC().
UNIV_MEM_ASSERT_AND_ALLOC(): New directive, similar to
UNIV_MEM_ASSERT_AND_FREE().
storage/innobase/include/row0mysql.h:
Apply snapshot innodb-5.1-ss1989
Revision r1783:
Correct the function comments of row_create_table_for_mysql() and
row_drop_table_for_mysql().
storage/innobase/include/sync0rw.h:
Apply snapshot innodb-5.1-ss1989
Revision r1757:
Enclose rw_lock_validate() in #ifdef UNIV_DEBUG. It is only called by
debug assertions.
storage/innobase/include/univ.i:
Apply snapshot innodb-5.1-ss1989
Revision r1827:
Merge r1826 from branches/zip: UNIV_MEM_ASSERT_AND_FREE():
Use UNIV_MEM_ASSERT_W() instead of UNIV_MEM_ASSERT_RW().
The memory area need not be initialized.
This mistake was made in r1815.
Revision r1918:
Improve Valgrind instrumentation.
rec_offs_set_n_alloc(): Use UNIV_MEM_ASSERT_AND_ALLOC().
UNIV_MEM_ASSERT_AND_ALLOC(): New directive, similar to
UNIV_MEM_ASSERT_AND_FREE().
Revision r1830:
Improve memory debugging. This is follow-up to r1819.
mem_heap_validate(): Compile this function also if UNIV_MEM_DEBUG is
defined. Previously, this function was only compiled with UNIV_DEBUG.
mem_heap_free_heap_top(): Flag the memory allocated, not freed, for
Valgrind. Otherwise, Valgrind would complain on the second call of
mem_heap_empty().
UNIV_MEM_ASSERT_RW(), UNIV_MEM_ASSERT_W(): Display additional diagnostics
for failed Valgrind checks.
Revision r1819:
Merge r1815:1817 from branches/zip: Improve Valgrind instrumentation.
UNIV_MEM_ASSERT_RW(): New macro, to check that the contents of a memory
area is defined.
UNIV_MEM_ASSERT_W(): New macro, to check that a memory area is writable.
UNIV_MEM_ASSERT_AND_FREE(): New macro, to check that the memory is
writable before declaring it free (unwritable). This replaces UNIV_MEM_FREE()
in many places.
mem_init_buf(): Check that the memory is writable, and declare it undefined.
mem_erase_buf(): Check that the memory is writable, and declare it freed.
Revision r1948:
UNIV_MEM_ASSERT_RW(), UNIV_MEM_ASSERT_W(): Display also __FILE__ and __LINE__
when these Valgrind checks fail.
storage/innobase/include/ut0ut.h:
Apply snapshot innodb-5.1-ss1989
Revision r1850:
Implement this feature request:
http://bugs.mysql.com/30706
* Add a function that returns the number of microseconds since
epoch - ut_time_us().
* Add (innodb|innobase|srv)_replication_delay MySQL config parameter.
* Add UT_WAIT_FOR() macro that waits for a specified condition to occur
until a timeout elapses.
* Using all of the above, handle the replication thread specially in
srv_conc_enter_innodb().
Approved by: Heikki
Revision r1862:
Add ut_snprintf() function. On Windows this needs to be implemented
using auxiliary functions because there is no snprintf-variant on
Windows that behaves exactly as specified in the standard:
* Always return the number of characters that would have been printed
if the size were unlimited (not including the final `\0').
* Always '\0'-terminate the result
* Do not touch the buffer if size=0, only return the number of characters
that would have been printed. Can be used to estimate the size needed
and to allocate it dynamically.
See http://www.freebsd.org/cgi/query-pr.cgi?pr=87260 for the reason why
2 ap variables are used.
Approved by: Heikki
Revision r1866:
Revert r1850 as MySQL did not approve the addition.
log for r1850:
Implement this feature request:
http://bugs.mysql.com/30706
* Add a function that returns the number of microseconds since
epoch - ut_time_us().
* Add (innodb|innobase|srv)_replication_delay MySQL config parameter.
* Add UT_WAIT_FOR() macro that waits for a specified condition to occur
until a timeout elapses.
* Using all of the above, handle the replication thread specially in
srv_conc_enter_innodb().
storage/innobase/mem/mem0dbg.c:
Apply snapshot innodb-5.1-ss1989
Revision r1830:
Improve memory debugging. This is follow-up to r1819.
mem_heap_validate(): Compile this function also if UNIV_MEM_DEBUG is
defined. Previously, this function was only compiled with UNIV_DEBUG.
mem_heap_free_heap_top(): Flag the memory allocated, not freed, for
Valgrind. Otherwise, Valgrind would complain on the second call of
mem_heap_empty().
UNIV_MEM_ASSERT_RW(), UNIV_MEM_ASSERT_W(): Display additional diagnostics
for failed Valgrind checks.
Revision r1819:
Merge r1815:1817 from branches/zip: Improve Valgrind instrumentation.
UNIV_MEM_ASSERT_RW(): New macro, to check that the contents of a memory
area is defined.
UNIV_MEM_ASSERT_W(): New macro, to check that a memory area is writable.
UNIV_MEM_ASSERT_AND_FREE(): New macro, to check that the memory is
writable before declaring it free (unwritable). This replaces UNIV_MEM_FREE()
in many places.
mem_init_buf(): Check that the memory is writable, and declare it undefined.
mem_erase_buf(): Check that the memory is writable, and declare it freed.
storage/innobase/mem/mem0mem.c:
Apply snapshot innodb-5.1-ss1989
Revision r1819:
Merge r1815:1817 from branches/zip: Improve Valgrind instrumentation.
UNIV_MEM_ASSERT_RW(): New macro, to check that the contents of a memory
area is defined.
UNIV_MEM_ASSERT_W(): New macro, to check that a memory area is writable.
UNIV_MEM_ASSERT_AND_FREE(): New macro, to check that the memory is
writable before declaring it free (unwritable). This replaces UNIV_MEM_FREE()
in many places.
mem_init_buf(): Check that the memory is writable, and declare it undefined.
mem_erase_buf(): Check that the memory is writable, and declare it freed.
storage/innobase/row/row0mysql.c:
Apply snapshot innodb-5.1-ss1989
Revision r1786:
row_create_table_for_mysql(), row_truncate_table_for_mysql(),
row_drop_table_for_mysql(): Do not mention innodb_force_recovery
when newraw is set.
Revision r1790:
row_drop_table_for_mysql(): Before calling
dict_table_remove_from_cache(table) and thus freeing the memory
allocated for the table, copy the table name. This avoids reading
freed memory when name == table->name.
Approved by Sunny.
Revision r1783:
Correct the function comments of row_create_table_for_mysql() and
row_drop_table_for_mysql().
Revision r1894:
Add debug lock checks to autoinc functions. Add lock guards around an
invocation of dict_table_autoinc_initialize().
storage/innobase/row/row0sel.c:
Apply snapshot innodb-5.1-ss1989
Revision r1782:
Add comment that the variable dest should be word aligned. After discussion
on IM with Heikki.
Revision r1988:
Set an error code when a deadlock occurs in semi-consistent read. (Bug #31494)
innodb-semi-consistent: New tests for InnoDB semi-consistent reads.
Unfortunately, these will not trigger Bug #31494, because there merely
occur lock wait timeouts, not deadlocks.
Revision r1820:
Use the clustered index and not the one selected by the optimizer in the plan,
when building a previous version of the row. This bug is triggered when
running queries via InnoDB's internal SQL parser; when InnoDB's optimizer
selects a secondary index for the plan.
Revision r1828:
Fix two bugs:
Bug# 30907: We don't rely on *first_value to be 0 when checking whether
get_auto_increment() has been invoked for the first time in a multi-row
INSERT. We instead use trx_t::n_autoinc_rows. Initialize trx::n_autoinc_rows
inside ha_innobase::start_stmt() too.
Bug# 30888: While adding code for the low level read of the AUTOINC value
from the index, the case for MEDIUM ints which are 3 bytes was missed
triggering an assertion.
Revision r1779:
Fix a bug that handles the case where the host specific byte order matches
the InnoDB storage byte order, which is big-endian.
storage/innobase/sync/sync0rw.c:
Apply snapshot innodb-5.1-ss1989
Revision r1757:
Enclose rw_lock_validate() in #ifdef UNIV_DEBUG. It is only called by
debug assertions.
storage/innobase/ut/ut0ut.c:
Apply snapshot innodb-5.1-ss1989
Revision r1850:
Implement this feature request:
http://bugs.mysql.com/30706
* Add a function that returns the number of microseconds since
epoch - ut_time_us().
* Add (innodb|innobase|srv)_replication_delay MySQL config parameter.
* Add UT_WAIT_FOR() macro that waits for a specified condition to occur
until a timeout elapses.
* Using all of the above, handle the replication thread specially in
srv_conc_enter_innodb().
Approved by: Heikki
Revision r1873:
snprintf() should always return non-negative result. According to
Microsoft documentation about _vscprintf():
If format is a null pointer, the invalid parameter handler is invoked,
as described in Parameter Validation. If execution is allowed to
continue, the functions return -1 and set errno to EINVAL.
The UNIX variant of snprintf() segfaults if format is a NULL pointer
(similar to strlen(NULL) for example), so it is better to conform to
this behavior and crash our custom Windows version instead of
returning -1. Noone would expect -1 to be returned from snprintf().
Cosmetic: Add a space after typecast.
Approved by: Marko
Revision r1862:
Add ut_snprintf() function. On Windows this needs to be implemented
using auxiliary functions because there is no snprintf-variant on
Windows that behaves exactly as specified in the standard:
* Always return the number of characters that would have been printed
if the size were unlimited (not including the final `\0').
* Always '\0'-terminate the result
* Do not touch the buffer if size=0, only return the number of characters
that would have been printed. Can be used to estimate the size needed
and to allocate it dynamically.
See http://www.freebsd.org/cgi/query-pr.cgi?pr=87260 for the reason why
2 ap variables are used.
Approved by: Heikki
Revision r1866:
Revert r1850 as MySQL did not approve the addition.
log for r1850:
Implement this feature request:
http://bugs.mysql.com/30706
* Add a function that returns the number of microseconds since
epoch - ut_time_us().
* Add (innodb|innobase|srv)_replication_delay MySQL config parameter.
* Add UT_WAIT_FOR() macro that waits for a specified condition to occur
until a timeout elapses.
* Using all of the above, handle the replication thread specially in
srv_conc_enter_innodb().
Revision r1787:
Move the prototype of innobase_print_identifier() from ut0ut.c to
ha_prototypes.h. Enclose the definitions in ha_prototypes.h in
#ifndef UNIV_HOTBACKUP.
Revision r1789:
ut_print_namel(): Do not assume that all '/' are separators between
database and table names.
Approved by Heikki.
Revision r1936:
ut_print_buf(): Add a Valgrind check that the buffer is wholly defined.
mysql-test/r/innodb-semi-consistent.result:
Apply snapshot innodb-5.1-ss1989
Revision r1988:
Set an error code when a deadlock occurs in semi-consistent read. (Bug #31494)
innodb-semi-consistent: New tests for InnoDB semi-consistent reads.
Unfortunately, these will not trigger Bug #31494, because there merely
occur lock wait timeouts, not deadlocks.
mysql-test/r/innodb_autoinc_lock_mode_zero.result:
New test, using read-only setting --innodb-autoinc-lock-mode=0
mysql-test/t/innodb-semi-consistent-master.opt:
Apply snapshot innodb-5.1-ss1989
Revision r1988:
Set an error code when a deadlock occurs in semi-consistent read. (Bug #31494)
innodb-semi-consistent: New tests for InnoDB semi-consistent reads.
Unfortunately, these will not trigger Bug #31494, because there merely
occur lock wait timeouts, not deadlocks.
mysql-test/t/innodb-semi-consistent.test:
Apply snapshot innodb-5.1-ss1989
Revision r1988:
Set an error code when a deadlock occurs in semi-consistent read. (Bug #31494)
innodb-semi-consistent: New tests for InnoDB semi-consistent reads.
Unfortunately, these will not trigger Bug #31494, because there merely
occur lock wait timeouts, not deadlocks.
mysql-test/t/innodb_autoinc_lock_mode_zero-master.opt:
New test, using read-only setting --innodb-autoinc-lock-mode=0
mysql-test/t/innodb_autoinc_lock_mode_zero.test:
New test, using read-only setting --innodb-autoinc-lock-mode=0
2007-11-06 23:42:58 +01:00
SET TX_ISOLATION='read-committed';
SET AUTOCOMMIT=0;
INSERT INTO t1 VALUES (2);
COMMIT;
SELECT * FROM t1 WHERE a=2;
a
2
SELECT * FROM t1 WHERE a=2;
a
2
DROP TABLE t1;
DROP TABLE t2;
2008-01-15 06:55:50 +01:00
create table t1 (i int, j int) engine=innodb;
insert into t1 (i, j) values (1, 1), (2, 2);
update t1 set j = 2;
affected rows: 1
info: Rows matched: 2 Changed: 1 Warnings: 0
drop table t1;
create table t1 (id int) comment='this is a comment' engine=innodb;
select table_comment, data_free > 0 as data_free_is_set
from information_schema.tables
where table_schema='test' and table_name = 't1';
table_comment data_free_is_set
this is a comment 1
drop table t1;
Apply innodb-5.1-ss2360 snapshot
Fixes:
- Bug #34920: auto_increment resets to 1 on foreign key creation
We need to use/inherit the passed in autoinc counter for ALTER TABLE
statements too.
mysql-test/r/innodb.result:
Apply innodb-5.1-ss2360 snapshot
Revision r2345:
branches/5.1: Fix Bug# 34920. We need to use/inherit the passed in autoinc
counter for ALTER TABLE statements too.
mysql-test/t/innodb.test:
Apply innodb-5.1-ss2360 snapshot
Revision r2345:
branches/5.1: Fix Bug# 34920. We need to use/inherit the passed in autoinc
counter for ALTER TABLE statements too.
storage/innobase/dict/dict0dict.c:
Apply innodb-5.1-ss2360 snapshot
Revision r2353:
branches/5.1: Change the InnoDB autoinc type to ulint64. For this added a
new typedef to univ.i (ib_ulonglong). Added checks for overflow and removed
the assertion where it crashed previously, since the type has now changed
to unsigned, it doesn't make sense to check for < 0. Added new tests, to
check for overflow, for the different INT types supported for both
signed and unsigned.
storage/innobase/handler/ha_innodb.cc:
Apply innodb-5.1-ss2360 snapshot
Revision r2353:
branches/5.1: Change the InnoDB autoinc type to ulint64. For this added a
new typedef to univ.i (ib_ulonglong). Added checks for overflow and removed
the assertion where it crashed previously, since the type has now changed
to unsigned, it doesn't make sense to check for < 0. Added new tests, to
check for overflow, for the different INT types supported for both
signed and unsigned.
Revision r2345:
branches/5.1: Fix Bug# 34920. We need to use/inherit the passed in autoinc
counter for ALTER TABLE statements too.
storage/innobase/handler/ha_innodb.h:
Apply innodb-5.1-ss2360 snapshot
Revision r2353:
branches/5.1: Change the InnoDB autoinc type to ulint64. For this added a
new typedef to univ.i (ib_ulonglong). Added checks for overflow and removed
the assertion where it crashed previously, since the type has now changed
to unsigned, it doesn't make sense to check for < 0. Added new tests, to
check for overflow, for the different INT types supported for both
signed and unsigned.
storage/innobase/include/dict0dict.h:
Apply innodb-5.1-ss2360 snapshot
Revision r2353:
branches/5.1: Change the InnoDB autoinc type to ulint64. For this added a
new typedef to univ.i (ib_ulonglong). Added checks for overflow and removed
the assertion where it crashed previously, since the type has now changed
to unsigned, it doesn't make sense to check for < 0. Added new tests, to
check for overflow, for the different INT types supported for both
signed and unsigned.
storage/innobase/include/dict0mem.h:
Apply innodb-5.1-ss2360 snapshot
Revision r2353:
branches/5.1: Change the InnoDB autoinc type to ulint64. For this added a
new typedef to univ.i (ib_ulonglong). Added checks for overflow and removed
the assertion where it crashed previously, since the type has now changed
to unsigned, it doesn't make sense to check for < 0. Added new tests, to
check for overflow, for the different INT types supported for both
signed and unsigned.
storage/innobase/include/row0sel.h:
Apply innodb-5.1-ss2360 snapshot
Revision r2353:
branches/5.1: Change the InnoDB autoinc type to ulint64. For this added a
new typedef to univ.i (ib_ulonglong). Added checks for overflow and removed
the assertion where it crashed previously, since the type has now changed
to unsigned, it doesn't make sense to check for < 0. Added new tests, to
check for overflow, for the different INT types supported for both
signed and unsigned.
storage/innobase/include/univ.i:
Apply innodb-5.1-ss2360 snapshot
Revision r2353:
branches/5.1: Change the InnoDB autoinc type to ulint64. For this added a
new typedef to univ.i (ib_ulonglong). Added checks for overflow and removed
the assertion where it crashed previously, since the type has now changed
to unsigned, it doesn't make sense to check for < 0. Added new tests, to
check for overflow, for the different INT types supported for both
signed and unsigned.
storage/innobase/row/row0sel.c:
Apply innodb-5.1-ss2360 snapshot
Revision r2353:
branches/5.1: Change the InnoDB autoinc type to ulint64. For this added a
new typedef to univ.i (ib_ulonglong). Added checks for overflow and removed
the assertion where it crashed previously, since the type has now changed
to unsigned, it doesn't make sense to check for < 0. Added new tests, to
check for overflow, for the different INT types supported for both
signed and unsigned.
2008-03-27 02:40:45 +01:00
CREATE TABLE t1 (
c1 INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
c2 VARCHAR(128) NOT NULL,
PRIMARY KEY(c1)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=100;
CREATE TABLE t2 (
c1 INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
c2 INT(10) UNSIGNED DEFAULT NULL,
PRIMARY KEY(c1)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=200;
SELECT AUTO_INCREMENT FROM INFORMATION_SCHEMA.TABLES WHERE table_name = 't2';
AUTO_INCREMENT
200
ALTER TABLE t2 ADD CONSTRAINT t1_t2_1 FOREIGN KEY(c1) REFERENCES t1(c1);
SELECT AUTO_INCREMENT FROM INFORMATION_SCHEMA.TABLES WHERE table_name = 't2';
AUTO_INCREMENT
200
DROP TABLE t2;
DROP TABLE t1;
2008-08-21 00:18:33 +02:00
CREATE TABLE t1 (c1 int default NULL,
c2 int default NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
TRUNCATE TABLE t1;
affected rows: 0
INSERT INTO t1 VALUES (1, 1), (2, 2), (3, 3), (4, 4), (5, 5);
affected rows: 5
info: Records: 5 Duplicates: 0 Warnings: 0
TRUNCATE TABLE t1;
affected rows: 0
DROP TABLE t1;
2008-12-14 19:24:16 +01:00
Variable_name Value
Handler_update 0
Variable_name Value
Handler_delete 0
Variable_name Value
Handler_update 1
Variable_name Value
Handler_delete 1