summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorunknown <tomas@poseidon.ndb.mysql.com>2006-02-28 12:28:52 +0100
committerunknown <tomas@poseidon.ndb.mysql.com>2006-02-28 12:28:52 +0100
commit5f06d1738c7670ac5bee88a178e0b90d5ed4953b (patch)
tree501bfcf07aa048c0e4cda4109d351cab293a2bad
parentad5eb8d133af3f5152552beb5726ad6acd00f245 (diff)
downloadmariadb-git-5f06d1738c7670ac5bee88a178e0b90d5ed4953b.tar.gz
Bug#16385, Partitions: crash when updating a range partitioned NDB table
- too little space was allocated for receiving events, partition uses extra column in table mysql-test/r/ndb_partition_range.result: Bug#16385, Partitions: crash when updating a range partitioned NDB table mysql-test/t/ndb_partition_range.test: Bug#16385, Partitions: crash when updating a range partitioned NDB table
-rw-r--r--mysql-test/r/ndb_partition_range.result23
-rw-r--r--mysql-test/t/ndb_partition_range.test26
-rw-r--r--sql/ha_ndbcluster_binlog.cc8
3 files changed, 53 insertions, 4 deletions
diff --git a/mysql-test/r/ndb_partition_range.result b/mysql-test/r/ndb_partition_range.result
index 3f31df369aa..e078f38c166 100644
--- a/mysql-test/r/ndb_partition_range.result
+++ b/mysql-test/r/ndb_partition_range.result
@@ -198,3 +198,26 @@ DROP DATAFILE 'datafile.dat'
ENGINE=NDB;
DROP TABLESPACE ts1 ENGINE=NDB;
DROP LOGFILE GROUP lg1 ENGINE=NDB;
+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 LIST(id)
+(PARTITION p0 VALUES IN (2, 4),
+PARTITION p1 VALUES IN (42, 142));
+INSERT INTO t1 VALUES (2,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+SELECT * FROM t1;
+id b1 vc bc d f total y t
+2 NULL NULL NULL NULL NULL NULL NULL NULL
+ALTER TABLE t1 ADD PARTITION
+(PARTITION p2 VALUES IN (412));
+SELECT * FROM t1;
+id b1 vc bc d f total y t
+2 NULL NULL NULL NULL NULL NULL NULL NULL
+DROP TABLE t1;
diff --git a/mysql-test/t/ndb_partition_range.test b/mysql-test/t/ndb_partition_range.test
index b7f3a42322a..66235b0e9eb 100644
--- a/mysql-test/t/ndb_partition_range.test
+++ b/mysql-test/t/ndb_partition_range.test
@@ -197,3 +197,29 @@ ALTER TABLESPACE ts1
ENGINE=NDB;
DROP TABLESPACE ts1 ENGINE=NDB;
DROP LOGFILE GROUP lg1 ENGINE=NDB;
+
+
+#
+# Bug #17701 ALTER TABLE t1 ADD PARTITION for PARTITION BY LIST hangs test
+#
+
+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 LIST(id)
+ (PARTITION p0 VALUES IN (2, 4),
+ PARTITION p1 VALUES IN (42, 142));
+
+INSERT INTO t1 VALUES (2,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+SELECT * FROM t1;
+ALTER TABLE t1 ADD PARTITION
+ (PARTITION p2 VALUES IN (412));
+SELECT * FROM t1;
+DROP TABLE t1;
diff --git a/sql/ha_ndbcluster_binlog.cc b/sql/ha_ndbcluster_binlog.cc
index 4893958e194..b2c14fe470f 100644
--- a/sql/ha_ndbcluster_binlog.cc
+++ b/sql/ha_ndbcluster_binlog.cc
@@ -284,11 +284,11 @@ ndbcluster_binlog_open_table(THD *thd, NDB_SHARE *share,
it may be in use by the injector thread
*/
share->ndb_value[0]= (NdbValue*)
- alloc_root(mem_root, sizeof(NdbValue) * table->s->fields
- + 1 /*extra for hidden key*/);
+ alloc_root(mem_root, sizeof(NdbValue) *
+ (table->s->fields + 2 /*extra for hidden key and part key*/));
share->ndb_value[1]= (NdbValue*)
- alloc_root(mem_root, sizeof(NdbValue) * table->s->fields
- +1 /*extra for hidden key*/);
+ alloc_root(mem_root, sizeof(NdbValue) *
+ (table->s->fields + 2 /*extra for hidden key and part key*/));
DBUG_RETURN(0);
}