diff --git a/mysql-test/r/ndb_types.result b/mysql-test/r/ndb_types.result index 9a45b77149b..5afa9c57e38 100644 --- a/mysql-test/r/ndb_types.result +++ b/mysql-test/r/ndb_types.result @@ -2,6 +2,9 @@ DROP TABLE IF EXISTS t1; CREATE TABLE t1 ( auto int(5) unsigned NOT NULL auto_increment, string char(10) default "hello", +vstring varchar(10) default "hello", +bin binary(7), +vbin varbinary(7), tiny tinyint(4) DEFAULT '0' NOT NULL , short smallint(6) DEFAULT '1' NOT NULL , medium mediumint(8) DEFAULT '0' NOT NULL, @@ -14,12 +17,13 @@ ushort smallint(5) unsigned zerofill DEFAULT '00000' NOT NULL, umedium mediumint(8) unsigned DEFAULT '0' NOT NULL, ulong int(11) unsigned DEFAULT '0' NOT NULL, ulonglong bigint(13) unsigned DEFAULT '0' NOT NULL, -time_stamp timestamp, -date_field date, -time_field time, -date_time datetime, options enum('one','two','tree') not null, flags set('one','two','tree') not null, +date_field date, +year_field year, +time_field time, +date_time datetime, +time_stamp timestamp not null default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP, PRIMARY KEY (auto), KEY (utiny), KEY (tiny), @@ -33,4 +37,36 @@ KEY (ulong), KEY (ulonglong,ulong), KEY (options,flags) ); +set @now = now(); +insert into t1 +(string,vstring,bin,vbin,tiny,short,medium,long_int,longlong, +real_float,real_double, utiny, ushort, umedium,ulong,ulonglong, +options,flags,date_field,year_field,time_field,date_time) +values +("aaaa","aaaa",0xAAAA,0xAAAA,-1,-1,-1,-1,-1,1.1,1.1,1,1,1,1,1, +'one','one', '1901-01-01','1901','01:01:01','1901-01-01 01:01:01'); +select auto,string,vstring,bin,vbin,tiny,short,medium,long_int,longlong, +real_float,real_double, utiny, ushort, umedium,ulong,ulonglong, +options,flags,date_field,year_field,time_field,date_time +from t1; +auto string vstring bin vbin tiny short medium long_int longlong real_float real_double utiny ushort umedium ulong ulonglong options flags date_field year_field time_field date_time +1 aaaa aaaa ªª ªª -1 -1 -1 -1 -1 1.1 1.1000 1 00001 1 1 1 one one 1901-01-01 1901 01:01:01 1901-01-01 01:01:01 +select time_stamp>@now from t1; +time_stamp>@now +1 +set @now = now(); +update t1 set string="bbbb",vstring="bbbb",bin=0xBBBB,vbin=0xBBBB, +tiny=-2,short=-2,medium=-2,long_int=-2,longlong=-2,real_float=2.2, +real_double=2.2,utiny=2,ushort=2,umedium=2,ulong=2,ulonglong=2, +options='one',flags='one', date_field='1902-02-02',year_field='1902', +time_field='02:02:02',date_time='1902-02-02 02:02:02' where auto=1; +select auto,string,vstring,bin,vbin,tiny,short,medium,long_int,longlong, +real_float,real_double, utiny, ushort, umedium,ulong,ulonglong, +options,flags,date_field,year_field,time_field,date_time +from t1; +auto string vstring bin vbin tiny short medium long_int longlong real_float real_double utiny ushort umedium ulong ulonglong options flags date_field year_field time_field date_time +1 bbbb bbbb »» »» -2 -2 -2 -2 -2 2.2 2.2000 2 00002 2 2 2 one one 1902-02-02 1902 02:02:02 1902-02-02 02:02:02 +select time_stamp>@now from t1; +time_stamp>@now +1 drop table t1; diff --git a/mysql-test/t/ndb_types.test b/mysql-test/t/ndb_types.test index d9f50c8b3fc..d66718ca4e4 100644 --- a/mysql-test/t/ndb_types.test +++ b/mysql-test/t/ndb_types.test @@ -7,10 +7,12 @@ DROP TABLE IF EXISTS t1; # # Test creation of different column types in NDB # - CREATE TABLE t1 ( auto int(5) unsigned NOT NULL auto_increment, string char(10) default "hello", + vstring varchar(10) default "hello", + bin binary(7), + vbin varbinary(7), tiny tinyint(4) DEFAULT '0' NOT NULL , short smallint(6) DEFAULT '1' NOT NULL , medium mediumint(8) DEFAULT '0' NOT NULL, @@ -23,12 +25,13 @@ CREATE TABLE t1 ( umedium mediumint(8) unsigned DEFAULT '0' NOT NULL, ulong int(11) unsigned DEFAULT '0' NOT NULL, ulonglong bigint(13) unsigned DEFAULT '0' NOT NULL, - time_stamp timestamp, - date_field date, - time_field time, - date_time datetime, options enum('one','two','tree') not null, flags set('one','two','tree') not null, + date_field date, + year_field year, + time_field time, + date_time datetime, + time_stamp timestamp not null default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP, PRIMARY KEY (auto), KEY (utiny), KEY (tiny), @@ -43,5 +46,34 @@ CREATE TABLE t1 ( KEY (options,flags) ); +set @now = now(); +sleep 1; +insert into t1 +(string,vstring,bin,vbin,tiny,short,medium,long_int,longlong, + real_float,real_double, utiny, ushort, umedium,ulong,ulonglong, + options,flags,date_field,year_field,time_field,date_time) +values +("aaaa","aaaa",0xAAAA,0xAAAA,-1,-1,-1,-1,-1,1.1,1.1,1,1,1,1,1, + 'one','one', '1901-01-01','1901','01:01:01','1901-01-01 01:01:01'); + +select auto,string,vstring,bin,vbin,tiny,short,medium,long_int,longlong, + real_float,real_double, utiny, ushort, umedium,ulong,ulonglong, + options,flags,date_field,year_field,time_field,date_time +from t1; +select time_stamp>@now from t1; + +set @now = now(); +sleep 1; +update t1 set string="bbbb",vstring="bbbb",bin=0xBBBB,vbin=0xBBBB, +tiny=-2,short=-2,medium=-2,long_int=-2,longlong=-2,real_float=2.2, +real_double=2.2,utiny=2,ushort=2,umedium=2,ulong=2,ulonglong=2, +options='one',flags='one', date_field='1902-02-02',year_field='1902', +time_field='02:02:02',date_time='1902-02-02 02:02:02' where auto=1; + +select auto,string,vstring,bin,vbin,tiny,short,medium,long_int,longlong, + real_float,real_double, utiny, ushort, umedium,ulong,ulonglong, + options,flags,date_field,year_field,time_field,date_time +from t1; +select time_stamp>@now from t1; drop table t1; diff --git a/sql/ha_ndbcluster.cc b/sql/ha_ndbcluster.cc index dd7a719eda4..e3f6235c62c 100644 --- a/sql/ha_ndbcluster.cc +++ b/sql/ha_ndbcluster.cc @@ -2053,7 +2053,11 @@ int ha_ndbcluster::update_row(const byte *old_data, byte *new_data) statistic_increment(thd->status_var.ha_update_count, &LOCK_status); if (table->timestamp_field_type & TIMESTAMP_AUTO_SET_ON_UPDATE) + { table->timestamp_field->set_time(); + // Set query_id so that field is really updated + table->timestamp_field->query_id= thd->query_id; + } /* Check for update of primary key for special handling */ if ((table->s->primary_key != MAX_KEY) &&