mirror of
https://github.com/MariaDB/server.git
synced 2025-12-24 11:21:21 +03:00
Bug #17499 Alter table of ndb partitioned tables causes mysqld to core
This commit is contained in:
@@ -93,3 +93,107 @@ show create table t1;
|
||||
|
||||
drop table t1;
|
||||
|
||||
#
|
||||
# Bug #17499, #17687
|
||||
# Alter partitioned NDB table causes mysqld to core
|
||||
#
|
||||
|
||||
CREATE TABLE t1
|
||||
(id MEDIUMINT NOT NULL,
|
||||
b1 BIT(8),
|
||||
vc VARCHAR(255),
|
||||
bc CHAR(255),
|
||||
d DECIMAL(10,4) DEFAULT 0,
|
||||
f FLOAT DEFAULT 0,
|
||||
total BIGINT UNSIGNED,
|
||||
y YEAR,
|
||||
t DATE) ENGINE=NDB
|
||||
PARTITION BY RANGE (YEAR(t))
|
||||
(PARTITION p0 VALUES LESS THAN (1901),
|
||||
PARTITION p1 VALUES LESS THAN (1946),
|
||||
PARTITION p2 VALUES LESS THAN (1966),
|
||||
PARTITION p3 VALUES LESS THAN (1986),
|
||||
PARTITION p4 VALUES LESS THAN (2005),
|
||||
PARTITION p5 VALUES LESS THAN MAXVALUE);
|
||||
|
||||
INSERT INTO t1 VALUES (0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
|
||||
SELECT * FROM t1;
|
||||
ALTER TABLE t1 ENGINE=MYISAM;
|
||||
SELECT * FROM t1;
|
||||
DROP TABLE t1;
|
||||
|
||||
CREATE LOGFILE GROUP lg1
|
||||
ADD UNDOFILE 'undofile.dat'
|
||||
INITIAL_SIZE 16M
|
||||
UNDO_BUFFER_SIZE=1M
|
||||
ENGINE=NDB;
|
||||
|
||||
CREATE TABLESPACE ts1
|
||||
ADD DATAFILE 'datafile.dat'
|
||||
USE LOGFILE GROUP lg1
|
||||
INITIAL_SIZE 12M
|
||||
ENGINE NDB;
|
||||
|
||||
CREATE TABLE test.t1 (
|
||||
a1 INT,
|
||||
a2 TEXT NOT NULL,
|
||||
a3 BIT NOT NULL,
|
||||
a4 DECIMAL(8,3),
|
||||
a5 INT NOT NULL,
|
||||
a6 VARCHAR(255),
|
||||
PRIMARY KEY(a1))
|
||||
TABLESPACE ts1 STORAGE DISK ENGINE=NDB
|
||||
PARTITION BY LIST (a1)
|
||||
(PARTITION p0 VALUES IN (1,2,3,4,5),
|
||||
PARTITION p1 VALUES IN (6,7,8,9, 10),
|
||||
PARTITION p2 VALUES IN (11, 12, 13, 14, 15));
|
||||
|
||||
let $j= 15;
|
||||
--disable_query_log
|
||||
while ($j)
|
||||
{
|
||||
eval INSERT INTO test.t1 VALUES ($j, "Tested Remotely from Texas, USA",
|
||||
b'1',$j.00,$j+1,"By NIK $j");
|
||||
dec $j;
|
||||
}
|
||||
--enable_query_log
|
||||
SELECT COUNT(*) FROM test.t1;
|
||||
|
||||
ALTER TABLE test.t1 DROP COLUMN a4;
|
||||
SELECT COUNT(*) FROM test.t1;
|
||||
|
||||
DROP TABLE t1;
|
||||
|
||||
CREATE TABLE test.t1 (
|
||||
a1 INT,
|
||||
a2 TEXT NOT NULL,
|
||||
a3 BIT NOT NULL,
|
||||
a4 DECIMAL(8,3),
|
||||
a5 INT NOT NULL,
|
||||
a6 VARCHAR(255),
|
||||
PRIMARY KEY(a1))
|
||||
TABLESPACE ts1 STORAGE DISK ENGINE=NDB
|
||||
PARTITION BY HASH(a1)
|
||||
PARTITIONS 4;
|
||||
|
||||
let $j= 15;
|
||||
--disable_query_log
|
||||
while ($j)
|
||||
{
|
||||
eval INSERT INTO test.t1 VALUES ($j, "Tested Remotely from Texas, USA",
|
||||
b'1',$j.00,$j+1,"By NIK $j");
|
||||
dec $j;
|
||||
}
|
||||
--enable_query_log
|
||||
SELECT COUNT(*) FROM test.t1;
|
||||
|
||||
ALTER TABLE test.t1 DROP COLUMN a4;
|
||||
SELECT COUNT(*) FROM test.t1;
|
||||
|
||||
DROP TABLE t1;
|
||||
|
||||
ALTER TABLESPACE ts1
|
||||
DROP DATAFILE 'datafile.dat'
|
||||
ENGINE=NDB;
|
||||
DROP TABLESPACE ts1 ENGINE=NDB;
|
||||
DROP LOGFILE GROUP lg1 ENGINE=NDB;
|
||||
|
||||
@@ -5183,6 +5183,8 @@ copy_data_between_tables(TABLE *from,TABLE *to,
|
||||
*/
|
||||
to->file->ha_set_all_bits_in_write_set();
|
||||
from->file->ha_retrieve_all_cols();
|
||||
if (from->part_info)
|
||||
bitmap_set_all(&(from->part_info->used_partitions));
|
||||
init_read_record(&info, thd, from, (SQL_SELECT *) 0, 1,1);
|
||||
if (ignore ||
|
||||
handle_duplicates == DUP_REPLACE)
|
||||
|
||||
Reference in New Issue
Block a user