File tree Expand file tree Collapse file tree 3 files changed +90
-1
lines changed Expand file tree Collapse file tree 3 files changed +90
-1
lines changed Original file line number Diff line number Diff line change @@ -645,3 +645,47 @@ MAX(dt) = '2011-01-06 12:34:30'
645
645
1
646
646
DROP TABLE t1;
647
647
End of 5.5 tests
648
+ #
649
+ # MDEV-7254: Assigned expression is evaluated twice when updating column TIMESTAMP NOT NULL
650
+ #
651
+ create table t1(value timestamp not null);
652
+ set @a:=0;
653
+ create function f1 () returns timestamp
654
+ begin
655
+ set @a = @a + 1;
656
+ return NULL;
657
+ end//
658
+ set timestamp=12340;
659
+ insert t1 values (f1());
660
+ select @a, value from t1;
661
+ @a value
662
+ 1 1970-01-01 05:25:40
663
+ set timestamp=12350;
664
+ update t1 set value = f1();
665
+ select @a, value from t1;
666
+ @a value
667
+ 2 1970-01-01 05:25:50
668
+ drop table t1;
669
+ drop function f1;
670
+ set timestamp=0;
671
+ create table t1(value timestamp null);
672
+ set @a:=0;
673
+ create function f1 () returns timestamp
674
+ begin
675
+ set @a = @a + 1;
676
+ return NULL;
677
+ end//
678
+ set timestamp=12340;
679
+ insert t1 values (f1());
680
+ select @a, value from t1;
681
+ @a value
682
+ 1 NULL
683
+ set timestamp=12350;
684
+ update t1 set value = f1();
685
+ select @a, value from t1;
686
+ @a value
687
+ 2 NULL
688
+ drop table t1;
689
+ drop function f1;
690
+ set timestamp=0;
691
+ End of 10.0 tests
Original file line number Diff line number Diff line change @@ -446,3 +446,48 @@ SELECT MAX(dt) = '2011-01-06 12:34:30' FROM t1;
446
446
DROP TABLE t1;
447
447
448
448
--echo End of 5.5 tests
449
+
450
+ --echo #
451
+ --echo # MDEV-7254: Assigned expression is evaluated twice when updating column TIMESTAMP NOT NULL
452
+ --echo #
453
+
454
+ create table t1(value timestamp not null);
455
+ set @a:=0;
456
+ delimiter //;
457
+ create function f1 () returns timestamp
458
+ begin
459
+ set @a = @a + 1;
460
+ return NULL;
461
+ end//
462
+ delimiter ;//
463
+ set timestamp=12340;
464
+ insert t1 values (f1());
465
+ select @a, value from t1;
466
+ set timestamp=12350;
467
+ update t1 set value = f1();
468
+ select @a, value from t1;
469
+ drop table t1;
470
+ drop function f1;
471
+ set timestamp=0;
472
+
473
+ # Verify no regressions to TIMESTAMP NULL
474
+ create table t1(value timestamp null);
475
+ set @a:=0;
476
+ delimiter //;
477
+ create function f1 () returns timestamp
478
+ begin
479
+ set @a = @a + 1;
480
+ return NULL;
481
+ end//
482
+ delimiter ;//
483
+ set timestamp=12340;
484
+ insert t1 values (f1());
485
+ select @a, value from t1;
486
+ set timestamp=12350;
487
+ update t1 set value = f1();
488
+ select @a, value from t1;
489
+ drop table t1;
490
+ drop function f1;
491
+ set timestamp=0;
492
+
493
+ --echo End of 10.0 tests
Original file line number Diff line number Diff line change @@ -4899,7 +4899,7 @@ void Field_timestamp::set_explicit_default(Item *value)
4899
4899
{
4900
4900
if (((value->type () == Item::DEFAULT_VALUE_ITEM &&
4901
4901
!((Item_default_value*)value)->arg ) ||
4902
- (!maybe_null () && value->is_null () )))
4902
+ (!maybe_null () && value->null_value )))
4903
4903
return ;
4904
4904
set_has_explicit_value ();
4905
4905
}
You can’t perform that action at this time.
0 commit comments