@@ -5362,6 +5362,60 @@ SELECT * FROM t2;
53625362# Cleanup
53635363DROP TABLE t1, t2;
53645364
5365+ --echo #
5366+ --echo # MDEV-33549: Incorrect handling of UPDATE in PS mode in case a table's colum declared as NOT NULL
5367+ --echo #
5368+
5369+ CREATE TABLE t1 (a INT, b INT DEFAULT NULL);
5370+ INSERT INTO t1 VALUES (20, 30);
5371+ EXECUTE IMMEDIATE 'UPDATE t1 SET b=?' USING DEFAULT;
5372+ SELECT * FROM t1;
5373+
5374+ --echo # Run twice the same update in PS mode to check
5375+ --echo # that no memory relating issues taken place.
5376+ PREPARE stmt FROM 'UPDATE t1 SET b=?';
5377+ EXECUTE stmt USING DEFAULT;
5378+ EXECUTE stmt USING DEFAULT;
5379+
5380+ --echo # Clean up
5381+ DEALLOCATE PREPARE stmt;
5382+ DROP TABLE t1;
5383+
5384+ --echo # The same test for multi-table update
5385+ CREATE TABLE t1 (a INT, b INT DEFAULT NULL);
5386+ CREATE TABLE t2 (a INT, c INT DEFAULT NULL);
5387+
5388+ INSERT INTO t1 VALUES (20, 30);
5389+ INSERT INTO t2 VALUES (20, 30);
5390+
5391+ EXECUTE IMMEDIATE 'UPDATE t1,t2 SET b=? WHERE t1.a=t2.a' USING DEFAULT;
5392+ SELECT * FROM t1;
5393+ --echo # Run twice the same multi-table update in PS mode to check
5394+ --echo # that no memory relating issues taken place.
5395+ PREPARE stmt FROM 'UPDATE t1,t2 SET b=? WHERE t1.a=t2.a';
5396+ EXECUTE stmt USING DEFAULT;
5397+ EXECUTE stmt USING DEFAULT;
5398+ DEALLOCATE PREPARE stmt;
5399+ --echo # Clean up
5400+ DROP TABLE t1;
5401+
5402+ --echo # This time checks that a default value for table's column
5403+ --echo # represented by a function call is handled correctly on UPDATE in PS mode
5404+ CREATE TABLE t1 (a INT, b INT DEFAULT MOD(a, 3));
5405+ INSERT INTO t1 VALUES (20, 30);
5406+ EXECUTE IMMEDIATE 'UPDATE t1, t2 SET b=? WHERE t1.a=t2.a' USING DEFAULT;
5407+ SELECT * FROM t1;
5408+
5409+ --echo # Run twice the same multi-table update in PS mode to check
5410+ --echo # that no memory relating issues taken place.
5411+ PREPARE stmt FROM 'UPDATE t1, t2 SET b=? WHERE t1.a=t2.a';
5412+ EXECUTE stmt USING DEFAULT;
5413+ EXECUTE stmt USING DEFAULT;
5414+
5415+ --echo # Clean up
5416+ DEALLOCATE PREPARE stmt;
5417+ DROP TABLE t1, t2;
5418+
53655419--echo #
53665420--echo # End of 10.4 tests
53675421--echo #
0 commit comments