Hi,
I encountered a few issues listed below, regarding the timestamps in a mediawiki database (I am running MediaWiki 1.6.7), when writing an extension that looks for the user that added a specific category link. Indeed, the only efficient way I've found is to compare cl_timestamp and rev_timestamp in the database (any better idea?).
1) Is there a specific reason why the *cl_timestamp* column of the *categorylinks* table has a different type from the *rev_timestamp* column of the *revision* table (or page_touched of the page table)? Cl_timestamp is a timestamp whereas rev_timestamp and page_touched are strings. This adds complexity - useless I believe - when comparing these timestamps with each other (formatting with such MySQL functions as DATE_FORMAT or STR_TO_DATE is necessary). Wouldn't this make easier to use the same type?
2) Looking at the code, I noticed that cl_timestamp and rev_timestamp are computed separately (function insertOn in Revision.php for rev_timestamp, function getCategoryInsertions in LinksUpdate.php for cl_timestamp). On my system, there is sometimes a difference of 1 for the seconds between the cl_timestamp value and the corresponding rev_timestamp. Wouldn't this make more sense to use the same rev_timestamp for the cl_timestamp value, OR replace the cl_timestamp column with something like a 'cl_rev' column that links to the rev_id from the revision table? If not, why. Thus, it would be easier to get the revision info (e.g. the category adder) corresponding to any addition of a category link in a page.
3) Should I report a bug for this?
Thanks for your time. -- Cyril Dangerville