Bug #36035 I_S.TABLES.UPDATE_TIME not being set on INSERT for Windows
Submitted: 13 Apr 2008 18:27 Modified: 8 Dec 2008 23:58
Reporter: Patrick Crews Email Updates:
Status: Closed Impact on me:
None 
Category:MySQL Server: Information schema Severity:S3 (Non-critical)
Version:5.1 OS:Windows
Assigned to: Sergei Glukhov CPU Architecture:Any
Tags: funcs_1, Tests, windows

[13 Apr 2008 18:27] Patrick Crews
Description:
Test funcs_1.is_tables is failing on Windows only.

The following query set below is failing, specifically, the part where we compare UPDATE_TIME to the stored value @UPDATE_TIME.  When checked on Windows, these values are the same, even with alteration to the --real_sleep value (went up to 50s)

It doesn't appear that INFORMATION_SCHEMA.TABLES.UPDATE_TIME is being incremented after the INSERT statement on Windows system.  I compared this query on MacOS, and there is a 1s difference between the pre and post-INSERT UPDATE_TIME values on the Mac.

SELECT UPDATE_TIME, checksum INTO @UPDATE_TIME, @checksum
FROM information_schema.tables
WHERE table_name = 't1_my_tablex';
#   Enforce a time difference bigger than the smallest unit (1 second).
--real_sleep 1.1
INSERT INTO db_datadict.t1_my_tablex SET f1 = 3;
SELECT UPDATE_TIME > @UPDATE_TIME
    AS "Is current UPDATE_TIME bigger than before last INSERT?"
FROM information_schema.tables
WHERE table_name = 't1_my_tablex';
SELECT checksum <> @checksum
    AS "Is current CHECKSUM different than before last INSERT?"
FROM information_schema.tables
WHERE table_name = 't1_my_tablex';

How to repeat:
Run the test on a Windows system -- Verified on Win 2003 and Win XP 32 bit.

From the mysql-test directory, execute the following command:

./mysql-test-run.pl --suite=funcs_1 is_tables

You should see the following failure:
 @@ -315,7 +315,7 @@
15861:  FROM information_schema.tables
15862:  WHERE table_name = 't1_my_tablex';
15863:  Is current UPDATE_TIME bigger than before last INSERT?
15864: -1
15865: +0
15866:  SELECT checksum <> @checksum
15867:  AS "Is current CHECKSUM different than before last INSERT?"
15868:  FROM information_schema.tables

To verify that UPDATE_TIME isn't being modified on Windows, you can apply the following changes to the is_tables.test file:

@@ -339,13 +339,15 @@ WHERE table_name = 't1_my_tablex';
 ALTER TABLE db_datadict.t1_my_tablex CHECKSUM = 1;
 SELECT table_name, checksum IS NOT NULL FROM information_schema.tables
 WHERE table_name = 't1_my_tablex';
+SELECT UPDATE_TIME FROM INFORMATION_SCHEMA.TABLES
+WHERE TABLE_NAME='t1_my_tablex';
 SELECT UPDATE_TIME, checksum INTO @UPDATE_TIME, @checksum
 FROM information_schema.tables
 WHERE table_name = 't1_my_tablex';
 #   Enforce a time difference bigger than the smallest unit (1 second).
 --real_sleep 1.1
 INSERT INTO db_datadict.t1_my_tablex SET f1 = 3;
-SELECT UPDATE_TIME > @UPDATE_TIME
+SELECT UPDATE_TIME , @UPDATE_TIME
     AS "Is current UPDATE_TIME bigger than before last INSERT?"
 FROM information_schema.tables
 WHERE table_name = 't1_my_tablex';

Suggested fix:
Need to determine what is causing this behavior on Windows.  Is this a Windows quirk that needs to be accounted for in the .test, or is this a problem with the way INFORMATION_SCHEMA.TABLES is behaving on Windows?

Will disable this portion of the test file to maintain the rest of the test functionality until a proper fix can be achieved.
[7 May 2008 8:14] Bugs System
A patch for this bug has been committed. After review, it may
be pushed to the relevant source trees for release in the next
version. You can access the patch from:

  http://lists.mysql.com/commits/46442

ChangeSet@1.2582, 2008-05-07 13:14:22+05:00, gluh@mysql.com +2 -0
  Bug#36035 I_S.TABLES.UPDATE_TIME not being set on INSERT for Windows
  added FLUSH TABLES after INSERT because UPDATE_TIME is updated with delay
  on Win.
[22 May 2008 8:30] Martin Hansson
In my humble opinion, this deserves mention in the manual on this page:

http://dev.mysql.com/doc/refman/5.1/en/show-table-status.html

/Martin
[13 Nov 2008 8:45] Bugs System
A patch for this bug has been committed. After review, it may
be pushed to the relevant source trees for release in the next
version. You can access the patch from:

  http://lists.mysql.com/commits/58605

2706 Sergey Glukhov	2008-11-13
      Bug#36035 I_S.TABLES.UPDATE_TIME not being set on INSERT for Windows
      added FLUSH TABLES after INSERT because UPDATE_TIME is updated with delay
      on Win.
[13 Nov 2008 9:01] Bugs System
A patch for this bug has been committed. After review, it may
be pushed to the relevant source trees for release in the next
version. You can access the patch from:

  http://lists.mysql.com/commits/58608

2923 Sergey Glukhov	2008-11-13 [merge]
      5.1-bugteam->6.0-bugteam automerge(bug#36035)
[8 Dec 2008 10:23] Bugs System
Pushed into 5.1.31  (revid:sergey.glukhov@sun.com-20081113083830-2g76k0gm6rsz2v5o) (version source revid:azundris@mysql.com-20081114081134-pswy3m5go7r64m1p) (pib:5)
[8 Dec 2008 11:34] Bugs System
Pushed into 6.0.9-alpha  (revid:sergey.glukhov@sun.com-20081113085402-shokbgzj75lpi2fr) (version source revid:ingo.struewing@sun.com-20081121151447-dtf2ofz2ys0zqed1) (pib:5)
[8 Dec 2008 23:58] Paul DuBois
Test case changes. No changelog entry needed

However, I have updated the Update_time description for SHOW TABLE STATUS as suggested by Martin.
[19 Jan 2009 11:26] Bugs System
Pushed into 5.1.31-ndb-6.2.17 (revid:tomas.ulin@sun.com-20090119095303-uwwvxiibtr38djii) (version source revid:tomas.ulin@sun.com-20090108105244-8opp3i85jw0uj5ib) (merge vers: 5.1.31-ndb-6.2.17) (pib:6)
[19 Jan 2009 13:04] Bugs System
Pushed into 5.1.31-ndb-6.3.21 (revid:tomas.ulin@sun.com-20090119104956-guxz190n2kh31fxl) (version source revid:tomas.ulin@sun.com-20090119104956-guxz190n2kh31fxl) (merge vers: 5.1.31-ndb-6.3.21) (pib:6)
[19 Jan 2009 16:10] Bugs System
Pushed into 5.1.31-ndb-6.4.1 (revid:tomas.ulin@sun.com-20090119144033-4aylstx5czzz88i5) (version source revid:tomas.ulin@sun.com-20090119144033-4aylstx5czzz88i5) (merge vers: 5.1.31-ndb-6.4.1) (pib:6)