SET @max_row = 100;

CREATE TABLE t1 ( f_int1 INTEGER, f_int2 INTEGER,
f_char1 CHAR(10), f_char2 CHAR(10), f_charbig VARCHAR(1000))
PARTITION BY LIST(f_int1)
(PARTITION part_4 VALUES IN (-4), PARTITION part_3 VALUES IN (-3),
PARTITION part_2 VALUES IN (-2), PARTITION part_1 VALUES IN (-1),
PARTITION part0 VALUES IN (0), PARTITION part1 VALUES IN (1),
PARTITION part2 VALUES IN (2), PARTITION part3 VALUES IN (3),
PARTITION part4 VALUES IN (4));

# INSERT with use of @max_row works.
INSERT INTO t1 SET f_int1 = NULL , f_int2 = -@max_row,
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR);
DELETE FROM t1 WHERE f_int1 IS NULL;

SHOW CREATE TABLE t1;

--disable_abort_on_error

# This ADD PRIMARY KEY is expected to fail, because it does not
# contain the column f_int1 used within partitioning function.
ALTER TABLE t1 ADD PRIMARY KEY(f_int2);

# Here comes rotten output.
SHOW CREATE TABLE t1;

# This INSERT has to be successful, but fails
INSERT INTO t1 SET f_int1 = NULL , f_int2 = - 100,
f_char1 = CAST(- 100 AS CHAR), f_char2 = CAST(- 100 AS CHAR);
DELETE FROM t1 WHERE f_int1 IS NULL;


# This INSERT has to be successful, but causes a crash
INSERT INTO t1 SET f_int1 = NULL , f_int2 = -@max_row,
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR);