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;
ROLLBACK;
DELETE FROM 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
(id INT PRIMARY KEY, c2 INT UNIQUE,
c3 POINT NOT NULL DEFAULT ST_GeomFromText('POINT(3 4)'),
......@@ -936,6 +943,13 @@ INSERT INTO t1 SET a=NULL;
ROLLBACK;
DELETE FROM 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
(id INT PRIMARY KEY, c2 INT UNIQUE,
c3 POINT NOT NULL DEFAULT ST_GeomFromText('POINT(3 4)'),
......@@ -1377,10 +1391,17 @@ INSERT INTO t1 SET a=NULL;
ROLLBACK;
DELETE FROM 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;
SELECT variable_value-@old_instant instants
FROM information_schema.global_status
WHERE variable_name = 'innodb_instant_alter_column';
instants
63
66
SET GLOBAL innodb_purge_rseg_truncate_frequency= @saved_frequency;
......@@ -371,6 +371,12 @@ BEGIN;INSERT INTO t1 SET a=NULL;ROLLBACK;
DELETE FROM 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;
}
disconnect analyze;
......
......@@ -4774,7 +4774,7 @@ dict_index_t::instant_metadata(const dtuple_t& row, mem_heap_t* heap) const
dfield_set_null(dfield);
} else {
dfield_set_data(dfield, field_ref_zero,
field->col->len);
field->fixed_len);
}
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