Comment 6 for bug 660779

Revision history for this message
Patrick Crews (patrick-crews) wrote :

Try this test case -
The call to PRINT_TRANSACTION_MESSAGE at the end of the test reveals a transaction log record for a change to col_int_not_null, despite that query dying due to ER_BAD_NULL_ERROR (1048)

--disable_warnings
DROP TABLE IF EXISTS A;
--enable_warnings

CREATE TABLE `a` (
  `col_int` INT DEFAULT NULL,
  `col_int_not_null` INT NOT NULL,
  `col_int_not_null_key` INT NOT NULL,
  `pk` INT NOT NULL AUTO_INCREMENT,
  `col_int_key` INT DEFAULT NULL,
  PRIMARY KEY (`pk`),
  KEY `col_int_not_null_key` (`col_int_not_null_key`),
  KEY `col_int_key` (`col_int_key`)
) ENGINE=InnoDB COLLATE = utf8_general_ci;

INSERT INTO `a` VALUES (NULL,1,5,1,NULL);
INSERT INTO `a` VALUES (6,1,7,2,6);
INSERT INTO `a` VALUES (NULL,3,7,3,NULL);
INSERT INTO `a` VALUES (NULL,9,0,4,2);
INSERT INTO `a` VALUES (3,5,4,5,2);
INSERT INTO `a` VALUES (4,6,0,6,5);
INSERT INTO `a` VALUES (NULL,7,9,7,NULL);
INSERT INTO `a` VALUES (NULL,6,6,8,NULL);
INSERT INTO `a` VALUES (5,8,2,9,0);
INSERT INTO `a` VALUES (7,8,2,10,NULL);
INSERT INTO `a` VALUES (6,4,1,11,6);
INSERT INTO `a` VALUES (NULL,4,2,12,NULL);

BEGIN;
UPDATE a SET col_int = col_int + 1 WHERE col_int_not_null_key = 2;
--error 1048
UPDATE a SET col_int_not_null = col_int WHERE col_int_not_null_key = 2;
COMMIT;

SELECT * FROM a;

SELECT PRINT_TRANSACTION_MESSAGE('transaction.log',(select max(entry_offset) from DATA_DICTIONARY.TRANSACTION_LOG_TRANSACTIONS));

DROP TABLE a;