Details
-
Bug
-
Status: Closed (View Workflow)
-
Major
-
Resolution: Fixed
-
10.0.0, 5.5.28, 5.3.8, 5.2.12
-
None
-
None
Description
Virtual columns are always NULL in Triggers. I beilive this is a bug, because documentation says:
"Triggers, stored procedures, informational commands (...), and partitioning based on virtual columns are all fully supported."
Example:
DROP VIEW IF EXISTS `t1`;
|
DROP TABLE IF EXISTS `t1`;
|
CREATE TABLE `t1` (
|
`a` INTEGER UNSIGNED NULL DEFAULT NULL,
|
`b` INTEGER UNSIGNED GENERATED ALWAYS AS (`a`) VIRTUAL
|
)
|
ENGINE = MyISAM;
|
DROP VIEW IF EXISTS `t2`;
|
DROP TABLE IF EXISTS `t2`;
|
CREATE TABLE `t2` (
|
`c1` INTEGER UNSIGNED NOT NULL
|
)
|
ENGINE = MyISAM;
|
|
|
DELIMITER ||
|
|
CREATE TRIGGER `t1_ins_aft`
|
AFTER INSERT
|
ON `t1`
|
FOR EACH ROW
|
BEGIN
|
INSERT INTO `t2` (`c1`) VALUES (NEW.`b`);
|
END ||
|
|
CREATE TRIGGER `t1_del_bef`
|
BEFORE DELETE
|
ON `t1`
|
FOR EACH ROW
|
BEGIN
|
INSERT INTO `t2` (`c1`) VALUES (OLD.`b`);
|
END ||
|
|
DELIMITER ;
|
– Then I try those:
INSERT INTO `t1` (`a`) VALUES (1), (2), (3);
|
DELETE FROM t1;
|
It looks that b is treated as NULL.
Attachments
Activity
Field | Original Value | New Value |
---|---|---|
Description |
Virtual columns are always NULL in Triggers. I beilive this is a bug, because documentation says: "Triggers, stored procedures, informational commands (...), and partitioning based on virtual columns are all fully supported." Example: DROP VIEW IF EXISTS `t1`; DROP TABLE IF EXISTS `t1`; CREATE TABLE `t1` ( `a` INTEGER UNSIGNED NULL DEFAULT NULL, `b` INTEGER UNSIGNED GENERATED ALWAYS AS (`a`) VIRTUAL ) ENGINE = Aria ROW_FORMAT = PAGE; DROP VIEW IF EXISTS `t2`; DROP TABLE IF EXISTS `t2`; CREATE TABLE `t2` ( `c1` INTEGER UNSIGNED NOT NULL ) ENGINE = Aria ROW_FORMAT = PAGE; DELIMITER || CREATE TRIGGER `t1_ins_aft` AFTER INSERT ON `t1` FOR EACH ROW BEGIN INSERT INTO `t2` (`c1`) VALUES (NEW.`b`); END; CREATE TRIGGER `t1_del_bef` BEFORE DELETE ON `t1` FOR EACH ROW BEGIN INSERT INTO `t2` (`c1`) VALUES (OLD.`b`); END; || DELIMITER ; -- Then I try those: INSERT INTO `t1` (`a`) VALUES (1), (2), (3); DELETE FROM t1; -- It looks that b is threated as NULL. |
Virtual columns are always NULL in Triggers. I beilive this is a bug, because documentation says: "Triggers, stored procedures, informational commands (...), and partitioning based on virtual columns are all fully supported." Example: {noformat} DROP VIEW IF EXISTS `t1`; DROP TABLE IF EXISTS `t1`; CREATE TABLE `t1` ( `a` INTEGER UNSIGNED NULL DEFAULT NULL, `b` INTEGER UNSIGNED GENERATED ALWAYS AS (`a`) VIRTUAL ) ENGINE = Aria ROW_FORMAT = PAGE; DROP VIEW IF EXISTS `t2`; DROP TABLE IF EXISTS `t2`; CREATE TABLE `t2` ( `c1` INTEGER UNSIGNED NOT NULL ) ENGINE = Aria ROW_FORMAT = PAGE; DELIMITER || CREATE TRIGGER `t1_ins_aft` AFTER INSERT ON `t1` FOR EACH ROW BEGIN INSERT INTO `t2` (`c1`) VALUES (NEW.`b`); END; CREATE TRIGGER `t1_del_bef` BEFORE DELETE ON `t1` FOR EACH ROW BEGIN INSERT INTO `t2` (`c1`) VALUES (OLD.`b`); END; || DELIMITER ; -- Then I try those: INSERT INTO `t1` (`a`) VALUES (1), (2), (3); DELETE FROM t1; {noformat} It looks that {{b}} is treated as {{NULL}}. |
Assignee | Elena Stepanova [ elenst ] |
Affects Version/s | 5.2.12 [ 10702 ] | |
Affects Version/s | 5.3.8 [ 10900 ] | |
Affects Version/s | 5.5.28 [ 11200 ] | |
Affects Version/s | 10.0.0 [ 10000 ] |
Fix Version/s | 10.0.1 [ 11400 ] | |
Fix Version/s | 5.5.29 [ 11701 ] | |
Fix Version/s | 5.3.10 [ 11500 ] | |
Fix Version/s | 5.2.13 [ 10800 ] |
Assignee | Elena Stepanova [ elenst ] | Igor Babaev [ igor ] |
Description |
Virtual columns are always NULL in Triggers. I beilive this is a bug, because documentation says: "Triggers, stored procedures, informational commands (...), and partitioning based on virtual columns are all fully supported." Example: {noformat} DROP VIEW IF EXISTS `t1`; DROP TABLE IF EXISTS `t1`; CREATE TABLE `t1` ( `a` INTEGER UNSIGNED NULL DEFAULT NULL, `b` INTEGER UNSIGNED GENERATED ALWAYS AS (`a`) VIRTUAL ) ENGINE = Aria ROW_FORMAT = PAGE; DROP VIEW IF EXISTS `t2`; DROP TABLE IF EXISTS `t2`; CREATE TABLE `t2` ( `c1` INTEGER UNSIGNED NOT NULL ) ENGINE = Aria ROW_FORMAT = PAGE; DELIMITER || CREATE TRIGGER `t1_ins_aft` AFTER INSERT ON `t1` FOR EACH ROW BEGIN INSERT INTO `t2` (`c1`) VALUES (NEW.`b`); END; CREATE TRIGGER `t1_del_bef` BEFORE DELETE ON `t1` FOR EACH ROW BEGIN INSERT INTO `t2` (`c1`) VALUES (OLD.`b`); END; || DELIMITER ; -- Then I try those: INSERT INTO `t1` (`a`) VALUES (1), (2), (3); DELETE FROM t1; {noformat} It looks that {{b}} is treated as {{NULL}}. |
Virtual columns are always NULL in Triggers. I beilive this is a bug, because documentation says: "Triggers, stored procedures, informational commands (...), and partitioning based on virtual columns are all fully supported." Example: {noformat} DROP VIEW IF EXISTS `t1`; DROP TABLE IF EXISTS `t1`; CREATE TABLE `t1` ( `a` INTEGER UNSIGNED NULL DEFAULT NULL, `b` INTEGER UNSIGNED GENERATED ALWAYS AS (`a`) VIRTUAL ) ENGINE = MyISAM; DROP VIEW IF EXISTS `t2`; DROP TABLE IF EXISTS `t2`; CREATE TABLE `t2` ( `c1` INTEGER UNSIGNED NOT NULL ) ENGINE = MyISAM; DELIMITER || CREATE TRIGGER `t1_ins_aft` AFTER INSERT ON `t1` FOR EACH ROW BEGIN INSERT INTO `t2` (`c1`) VALUES (NEW.`b`); END || CREATE TRIGGER `t1_del_bef` BEFORE DELETE ON `t1` FOR EACH ROW BEGIN INSERT INTO `t2` (`c1`) VALUES (OLD.`b`); END || DELIMITER ; {noformat} -- Then I try those: {noformat} INSERT INTO `t1` (`a`) VALUES (1), (2), (3); DELETE FROM t1; {noformat} It looks that {{b}} is treated as {{NULL}}. |
Assignee | Igor Babaev [ igor ] | Oleksandr Byelkin [ sanja ] |
Status | Open [ 1 ] | In Progress [ 3 ] |
Status | In Progress [ 3 ] | Open [ 1 ] |
Assignee | Oleksandr Byelkin [ sanja ] | Igor Babaev [ igor ] |
Resolution | Fixed [ 1 ] | |
Status | Open [ 1 ] | Closed [ 6 ] |
Workflow | defaullt [ 25102 ] | MariaDB v2 [ 45828 ] |
Workflow | MariaDB v2 [ 45828 ] | MariaDB v3 [ 66526 ] |
Workflow | MariaDB v3 [ 66526 ] | MariaDB v4 [ 146192 ] |