Commit d5fa3dda authored by Marko Mäkelä's avatar Marko Mäkelä

Fix a bug in metadata record creation

dict_index_t::instant_metadata(): For instantly dropped NOT NULL
variable-length columns, store an empty string for the default value.
parent 8fe0211a
...@@ -495,6 +495,13 @@ INSERT INTO t1 SET a=NULL; ...@@ -495,6 +495,13 @@ INSERT INTO t1 SET a=NULL;
ROLLBACK; ROLLBACK;
DELETE FROM t1; DELETE FROM t1;
DROP TABLE t1; DROP TABLE t1;
CREATE TABLE t1 (a INT PRIMARY KEY, t VARCHAR(33101) NOT NULL) ENGINE=InnoDB ROW_FORMAT=REDUNDANT;
INSERT INTO t1 VALUES(347,'');
ALTER TABLE t1 DROP COLUMN t, ALGORITHM=INSTANT;
SELECT * FROM t1;
a
347
DROP TABLE t1;
CREATE TABLE t1 CREATE TABLE t1
(id INT PRIMARY KEY, c2 INT UNIQUE, (id INT PRIMARY KEY, c2 INT UNIQUE,
c3 POINT NOT NULL DEFAULT ST_GeomFromText('POINT(3 4)'), c3 POINT NOT NULL DEFAULT ST_GeomFromText('POINT(3 4)'),
...@@ -936,6 +943,13 @@ INSERT INTO t1 SET a=NULL; ...@@ -936,6 +943,13 @@ INSERT INTO t1 SET a=NULL;
ROLLBACK; ROLLBACK;
DELETE FROM t1; DELETE FROM t1;
DROP TABLE t1; DROP TABLE t1;
CREATE TABLE t1 (a INT PRIMARY KEY, t VARCHAR(33101) NOT NULL) ENGINE=InnoDB ROW_FORMAT=COMPACT;
INSERT INTO t1 VALUES(347,'');
ALTER TABLE t1 DROP COLUMN t, ALGORITHM=INSTANT;
SELECT * FROM t1;
a
347
DROP TABLE t1;
CREATE TABLE t1 CREATE TABLE t1
(id INT PRIMARY KEY, c2 INT UNIQUE, (id INT PRIMARY KEY, c2 INT UNIQUE,
c3 POINT NOT NULL DEFAULT ST_GeomFromText('POINT(3 4)'), c3 POINT NOT NULL DEFAULT ST_GeomFromText('POINT(3 4)'),
...@@ -1377,10 +1391,17 @@ INSERT INTO t1 SET a=NULL; ...@@ -1377,10 +1391,17 @@ INSERT INTO t1 SET a=NULL;
ROLLBACK; ROLLBACK;
DELETE FROM t1; DELETE FROM t1;
DROP TABLE t1; DROP TABLE t1;
CREATE TABLE t1 (a INT PRIMARY KEY, t VARCHAR(33101) NOT NULL) ENGINE=InnoDB ROW_FORMAT=DYNAMIC;
INSERT INTO t1 VALUES(347,'');
ALTER TABLE t1 DROP COLUMN t, ALGORITHM=INSTANT;
SELECT * FROM t1;
a
347
DROP TABLE t1;
disconnect analyze; disconnect analyze;
SELECT variable_value-@old_instant instants SELECT variable_value-@old_instant instants
FROM information_schema.global_status FROM information_schema.global_status
WHERE variable_name = 'innodb_instant_alter_column'; WHERE variable_name = 'innodb_instant_alter_column';
instants instants
63 66
SET GLOBAL innodb_purge_rseg_truncate_frequency= @saved_frequency; SET GLOBAL innodb_purge_rseg_truncate_frequency= @saved_frequency;
...@@ -371,6 +371,12 @@ BEGIN;INSERT INTO t1 SET a=NULL;ROLLBACK; ...@@ -371,6 +371,12 @@ BEGIN;INSERT INTO t1 SET a=NULL;ROLLBACK;
DELETE FROM t1; DELETE FROM t1;
DROP TABLE t1; DROP TABLE t1;
eval CREATE TABLE t1 (a INT PRIMARY KEY, t VARCHAR(33101) NOT NULL) $engine;
INSERT INTO t1 VALUES(347,'');
ALTER TABLE t1 DROP COLUMN t, ALGORITHM=INSTANT;
SELECT * FROM t1;
DROP TABLE t1;
dec $format; dec $format;
} }
disconnect analyze; disconnect analyze;
......
...@@ -4774,7 +4774,7 @@ dict_index_t::instant_metadata(const dtuple_t& row, mem_heap_t* heap) const ...@@ -4774,7 +4774,7 @@ dict_index_t::instant_metadata(const dtuple_t& row, mem_heap_t* heap) const
dfield_set_null(dfield); dfield_set_null(dfield);
} else { } else {
dfield_set_data(dfield, field_ref_zero, dfield_set_data(dfield, field_ref_zero,
field->col->len); field->fixed_len);
} }
continue; continue;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment