dear mysql3, try to remember how beautiful filesorts are, you're so good at it.
$page_id = $wgDatabase->insertID();
$sql = "INSERT INTO $revision (rev_id, rev_page, rev_comment, rev_user, rev_user_text,
- rev_timestamp, inverse_timestamp, rev_minor_edit)
- VALUES ({$text_id}, {$page_id}, '', 0, 'MediaWiki default', '{$now}', '{$won}', 0)";
+ rev_timestamp, rev_minor_edit)
+ VALUES ({$text_id}, {$page_id}, '', 0, 'MediaWiki default', '{$now}', 0)";
$wgDatabase->query( $sql, $fname );
print "<li><pre>";
else { $redir = 0; }
$now = wfTimestampNow();
- $won = wfInvertTimestamp( $now );
wfSeedRandom();
$rand = wfRandom();
$isminor = ( $isminor && $wgUser->isLoggedIn() ) ? 1 : 0;
'rev_timestamp' => $dbw->timestamp($now),
'rev_minor_edit' => $isminor,
'rev_user_text' => $wgUser->getName(),
- 'inverse_timestamp' => $won,
), $fname );
$this->mTitle->resetArticleID( $newid );
$this->mCountAdjustment = $this->isCountable( $text )
- $this->isCountable( $oldtext );
$now = wfTimestampNow();
- $won = wfInvertTimestamp( $now );
$mungedText = $text;
$flags = Revision::compressRevisionText( $mungedText );
'rev_user' => $wgUser->getID(),
'rev_user_text' => $wgUser->getName(),
'rev_timestamp' => $dbw->timestamp( $now ),
- 'inverse_timestamp' => $won
), $fname
);
'page_namespace' => $ns,
'page_title' => $title,
'rev_page = page_id'
- ), $fname, $this->getSelectOptions( array( 'ORDER BY' => 'inverse_timestamp' ) )
+ ), $fname, $this->getSelectOptions( array( 'ORDER BY' => 'rev_timestamp DESC' ) )
);
if( $dbr->numRows( $revisions ) > 1 && !$confirm ) {
'rev_user' => $wgUser->getID(),
'rev_user_text' => $wgUser->getName(),
'rev_timestamp' => $timestamp,
- 'inverse_timestamp' => wfInvertTimestamp( $timestamp ),
'rev_minor_edit' => intval($minor) ),
$fname );
wfProfileOut( $fname );
/**
* Sorting hack for MySQL 3, which doesn't use index sorts for DESC
+ * No longer supported and nuked.
*/
function wfInvertTimestamp( $ts ) {
+ wfDieDebugBacktrace("Inverted timestamps should be nuked away from all code\n");
return strtr(
$ts,
'0123456789',
$now = wfTimestampNow();
- $won = wfInvertTimestamp( $now );
$size = IntVal( $size );
if ( $wgUseCopyrightUpload ) {
else $textdesc = $desc ;
$now = wfTimestampNow();
- $won = wfInvertTimestamp( $now );
# Test to see if the row exists using INSERT IGNORE
# This avoids race conditions by locking the row until the commit, and also
"rev_comment,rev_user_text,rev_timestamp,rev_minor_edit ".
"FROM $revision $use_index " .
"WHERE rev_page=$id " .
- "ORDER BY inverse_timestamp ".$db->limitResult($limitplus,$offset);
+ "ORDER BY rev_timestamp DESC ".$db->limitResult($limitplus,$offset);
$res = $db->query( $sql, $fname );
$revs = $db->numRows( $res );
rev_id,rev_timestamp,rev_comment,rev_minor_edit,rev_user_text
FROM $page,$revision $use_index
WHERE page_id=rev_page AND $condition $minorQuery " .
- "ORDER BY inverse_timestamp LIMIT {$querylimit}";
+ "ORDER BY rev_timestamp DESC LIMIT {$querylimit}";
$res = $dbr->query( $sql, $fname );
$numRows = $dbr->numRows( $res );
'old_user' => intval( $user->getId() ),
'old_user_text' => $user->getName(),
'old_timestamp' => $this->timestamp,
- 'inverse_timestamp' => wfInvertTimestamp( $this->timestamp ),
'old_minor_edit' => 0,
'old_flags' => ''
), $fname
"rev_user_text,rev_timestamp,rev_minor_edit,page_is_new FROM $categorylinks, $revision, $page " .
"WHERE rev_timestamp > '{$cutoff}' {$cmq} AND cl_from=page_id AND cl_to=$catkey " .
"GROUP BY page_id,page_namespace,page_title,rev_user,rev_comment,rev_user_text," .
- "rev_timestamp,rev_minor_edit,page_is_new,inverse_timestamp ORDER BY inverse_timestamp LIMIT {$limit}";
+ "rev_timestamp,rev_minor_edit,page_is_new ORDER BY rev_timestamp DESC LIMIT {$limit}";
} else {
$sql = "SELECT page_id,page_namespace,page_title,rev_user,rev_comment," .
"rev_user_text,rev_timestamp,rev_minor_edit,page_is_new FROM $links, $revision, $page " .
"WHERE rev_timestamp > '{$cutoff}' {$cmq} AND l_to=page_id AND l_from=$id " .
"GROUP BY page_id,page_namespace,page_title,rev_user,rev_comment,rev_user_text," .
- "rev_timestamp,rev_minor_edit,page_is_new,inverse_timestamp ORDER BY inverse_timestamp LIMIT {$limit}";
+ "rev_timestamp,rev_minor_edit,page_is_new ORDER BY rev_timestamp DESC LIMIT {$limit}";
}
$res = $dbr->query( $sql, $fname );
'cur_is_redirect' => $redir,
'cur_random' => $rand,
'cur_touched' => $dbw->timestamp( $now ),
- 'inverse_timestamp' => wfInvertTimestamp( wfTimestamp( TS_MW, $s->ar_timestamp ) ),
), $fname );
$newid = $dbw->insertId();
$oldones = "AND ar_timestamp IN ( {$oldts} )";
}
$sql = "INSERT INTO $old (old_namespace,old_title,old_text," .
- "old_comment,old_user,old_user_text,old_timestamp,inverse_timestamp,old_minor_edit," .
+ "old_comment,old_user,old_user_text,old_timestamp,old_minor_edit," .
"old_flags) SELECT ar_namespace,ar_title,ar_text,ar_comment," .
- "ar_user,ar_user_text,ar_timestamp,99999999999999-ar_timestamp,ar_minor_edit,ar_flags " .
+ "ar_user,ar_user_text,ar_timestamp,ar_minor_edit,ar_flags " .
"FROM $archive WHERE ar_namespace={$namespace} AND ar_title='{$t}' {$oldones}";
if( $restoreAll || !empty( $oldts ) ) {
$dbw->query( $sql, $fname );
$comment = wfMsgForContent( '1movedto2', $this->getPrefixedText(), $nt->getPrefixedText() );
$now = wfTimestampNow();
- $won = wfInvertTimestamp( $now );
$rand = wfRandom();
$newid = $nt->getArticleID();
$oldid = $this->getArticleID();
'rev_comment' => $comment,
'rev_user' => $wgUser->getID(),
'rev_user_text' => $wgUser->getName(),
- 'rev_timestamp' => $now,
- 'inverse_timestamp' => $won ), $fname
+ 'rev_timestamp' => $now
+ ), $fname
);
$revid = $dbw->insertId();
$dbw->insert( 'text', array(
$oldid = $this->getArticleID();
$dbw =& wfGetDB( DB_MASTER );
$now = $dbw->timestamp();
- $won = wfInvertTimestamp( wfTimestamp(TS_MW,$now) );
wfSeedRandom();
$rand = wfRandom();
'rev_comment' => $comment,
'rev_user' => $wgUser->getID(),
'rev_user_text' => $wgUser->getName(),
- 'rev_timestamp' => $now,
- 'inverse_timestamp' => $won ), $fname
+ 'rev_timestamp' => $now
+ ), $fname
);
$revid = $dbw->insertId();
$dbw->insert( 'text', array(
$fname = 'Title::createRedirect';
$dbw =& wfGetDB( DB_MASTER );
$now = wfTimestampNow();
- $won = wfInvertTimestamp( $now );
$seqVal = $dbw->nextSequenceValue( 'page_page_id_seq' );
$dbw->insert( 'page', array(
'rev_user' => $wgUser->getID(),
'rev_user_text' => $wgUser->getName(),
'rev_timestamp' => $now,
- 'inverse_timestamp' => $won,
), $fname );
$dbw->update( 'page',
}
}
-?>
\ No newline at end of file
+?>
$page_id = $dbw->insertID();
$sql = "INSERT INTO $revision (rev_id, rev_page, rev_comment, rev_user, rev_user_text,
- rev_timestamp, inverse_timestamp, rev_minor_edit)
- VALUES ({$text_id}, {$page_id}, '', 0, '{$username}', '{$timestamp}', '{$invTimestamp}', 0)";
+ rev_timestamp, rev_minor_edit)
+ VALUES ({$text_id}, {$page_id}, '', 0, '{$username}', '{$timestamp}', 0)";
$dbw->query( $sql, $fname );
}
global $wgDeferredUpdateList;
foreach ( $wgDeferredUpdateList as $up ) { $up->doUpdate(); }
}
-?>
\ No newline at end of file
+?>
rev_user_text varchar(255) binary NOT NULL default '',
rev_timestamp char(14) binary NOT NULL default '',
rev_minor_edit tinyint(1) unsigned NOT NULL default '0',
- inverse_timestamp char(14) binary NOT NULL default '',
PRIMARY KEY rev_page_id (rev_page, rev_id),
UNIQUE INDEX rev_id (rev_id),
INDEX rev_timestamp (rev_timestamp),
- INDEX page_timestamp (rev_page,inverse_timestamp),
- INDEX user_timestamp (rev_user,inverse_timestamp),
- INDEX usertext_timestamp (rev_user_text,inverse_timestamp)
+ INDEX page_timestamp (rev_page,rev_timestamp),
+ INDEX user_timestamp (rev_user,rev_timestamp),
+ INDEX usertext_timestamp (rev_user_text,rev_timestamp)
);
-- If creating new 'text' table it would look like this:
old_user_text,
old_timestamp,
old_minor_edit,
- old_flags,
- inverse_timestamp)
+ old_flags)
SELECT
cur_namespace,
cur_title,
cur_user_text,
cur_timestamp,
cur_minor_edit,
- '',
- inverse_timestamp
+ ''
FROM /*$wgDBprefix*/cur;
-- Now, copy all old data except the text into revisions
rev_user,
rev_user_text,
rev_timestamp,
- inverse_timestamp,
rev_minor_edit)
SELECT
old_id,
old_user,
old_user_text,
old_timestamp,
- old.inverse_timestamp,
old_minor_edit
FROM /*$wgDBprefix*/old,/*$wgDBprefix*/cur
WHERE old_namespace=cur_namespace
print "Importing current revision data...\n";
wfQuery( "INSERT INTO cur (cur_id,cur_namespace,cur_title,cur_text,cur_comment,
cur_user,cur_user_text,cur_timestamp,cur_restrictions,cur_counter,
- cur_is_redirect,cur_minor_edit,cur_is_new,cur_random,cur_touched,inverse_timestamp)
+ cur_is_redirect,cur_minor_edit,cur_is_new,cur_random,cur_touched)
SELECT cur_id,0,cur_title,cur_text,cur_comment,
cur_user,cur_user_text,cur_timestamp,REPLACE(cur_restrictions,'is_',''),cur_counter,
- cur_text like '#redirect%',cur_minor_edit,0,RAND(),NOW()+0,99999999999999-cur_timestamp
+ cur_text like '#redirect%',cur_minor_edit,0,RAND(),NOW()+0,
FROM {$this->olddb}.cur", DB_MASTER );
$n = mysql_affected_rows();
print "$n rows imported.\n";
print "Importing old revision data...\n";
wfQuery( "INSERT INTO old (old_id,old_namespace,old_title,old_text,old_comment,
- old_user,old_user_text,old_timestamp,old_minor_edit,old_flags,inverse_timestamp)
+ old_user,old_user_text,old_timestamp,old_minor_edit,old_flags)
SELECT old_id,0,old_title,old_text,old_comment,
- old_user,old_user_text,old_timestamp,old_minor_edit,'',99999999999999-old_timestamp
+ old_user,old_user_text,old_timestamp,old_minor_edit,''
FROM {$this->olddb}.old", DB_MASTER );
$n = mysql_affected_rows();
print "$n rows imported.\n";
$timestamp = wfUnix2Timestamp( time() );
$redirect = ( preg_match( '/^#REDIRECT/', $page->text ) ? 1 : 0 );
$random = mt_rand() / mt_getrandmax();
- $inverse = wfInvertTimestamp( $timestamp );
$revisions = array( $page );
} else {
$timestamp = wfUnix2Timestamp( $page->ts );
$redirect = ( preg_match( '/^#REDIRECT/', $page->text ) ? 1 : 0 );
$random = mt_rand() / mt_getrandmax();
- $inverse = wfInvertTimestamp( $timestamp );
$revisions = array();
}
$sql = "
INSERT
- INTO cur (cur_namespace,cur_title,cur_text,cur_comment,cur_user,cur_user_text,cur_timestamp,inverse_timestamp,cur_touched,cur_minor_edit,cur_is_redirect,cur_random) VALUES
- ($namespace,'$newtitle','$text','$comment',$userid,'$username','$timestamp','$inverse','$conversiontime',$minor,$redirect,$random);\n";
+ INTO cur (cur_namespace,cur_title,cur_text,cur_comment,cur_user,cur_user_text,cur_timestamp,cur_touched,cur_minor_edit,cur_is_redirect,cur_random) VALUES
+ ($namespace,'$newtitle','$text','$comment',$userid,'$username','$timestamp','$conversiontime',$minor,$redirect,$random);\n";
# History
$revisions = array_merge( $revisions, fetchKeptPages( $title ) );
$any = false;
$sql .= "INSERT
- INTO old (old_namespace,old_title,old_text,old_comment,old_user,old_user_text,old_timestamp,inverse_timestamp,old_minor_edit) VALUES\n";
+ INTO old (old_namespace,old_title,old_text,old_comment,old_user,old_user_text,old_timestamp,old_minor_edit) VALUES\n";
foreach( $revisions as $rev ) {
$text = wfStrencode( recodeText( $rev->text ) );
$minor = ($rev->minor ? 1 : 0);
list( $userid, $username ) = checkUserCache( $rev->username, $rev->host );
$username = wfStrencode( recodeText( $username ) );
$timestamp = wfUnix2Timestamp( $rev->ts );
- $inverse = wfInvertTimestamp( $timestamp );
$comment = wfStrencode( recodeText( $rev->summary ) );
if($any) $sql .= ",";
- $sql .= "\n\t($namespace,'$newtitle','$text','$comment',$userid,'$username','$timestamp','$inverse',$minor)";
+ $sql .= "\n\t($namespace,'$newtitle','$text','$comment',$userid,'$username','$timestamp',$minor)";
$any = true;
}
$sql .= ";\n\n";
cur_minor_edit smallint DEFAULT 0 NOT NULL,
cur_is_new smallint DEFAULT 0 NOT NULL,
cur_random double precision DEFAULT random(),
- cur_touched timestamp without time zone,
- inverse_timestamp varchar(14)
+ cur_touched timestamp without time zone
);
CREATE INDEX cur_title_namespace_idx ON cur (cur_title, cur_namespace);
CREATE INDEX cur_random_idx ON cur (cur_random);
old_user_text varchar(255) NOT NULL,
old_timestamp timestamp without time zone NOT NULL,
old_minor_edit smallint NOT NULL,
- old_flags text NOT NULL,
- inverse_timestamp varchar(14) NOT NULL
+ old_flags text NOT NULL
);
CREATE INDEX old_name_title_ts_idx ON "old" (old_namespace, old_title, old_timestamp);
CREATE INDEX old_timestamp ON "old" (old_timestamp);
'rc_this_oldid' => 0,
'rc_last_oldid' => 0,
'rc_type' => $dbw->conditional( 'cur_is_new != 0', RC_NEW, RC_EDIT ),
- ), '*', $fname, array( 'ORDER BY' => 'inverse_timestamp', 'LIMIT' => 5000 )
+ ), '*', $fname, array( 'ORDER BY' => 'cur_timestamp DESC', 'LIMIT' => 5000 )
);
print( "Loading from OLD table...\n" );
"rc_cur_id,rc_this_oldid,rc_last_oldid,rc_type) SELECT old_timestamp,cur_timestamp," .
"old_user,old_user_text,old_namespace,old_title,old_comment," .
"old_minor_edit,0,0,cur_id,old_id,0,0 FROM $old,$cur " .
- "WHERE old_namespace=cur_namespace AND old_title=cur_title ORDER BY $old.inverse_timestamp " .
+ "WHERE old_namespace=cur_namespace AND old_title=cur_title ORDER BY old_timestamp DESC " .
"LIMIT 5000";
$dbw->query( $sql );
if( $obj->rc_cur_id != $lastCurId ) {
# Switch! Look up the previous last edit, if any
$lastCurId = IntVal( $obj->rc_cur_id );
- $emit = wfInvertTimestamp( $obj->rc_timestamp );
+ $emit = $obj->rc_timestamp;
$sql2 = "SELECT old_id FROM $old,$cur " .
"WHERE old_namespace=cur_namespace AND old_title=cur_title AND cur_id={$lastCurId} ".
- "AND $old.inverse_timestamp>'{$emit}' ORDER BY $old.inverse_timestamp LIMIT 1";
+ "AND old_timestamp<'{$emit}' ORDER BY old_timestamp DESC LIMIT 1";
$res2 = $dbw->query( $sql2 );
if( $row = $dbw->fetchObject( $res2 ) ) {
$lastOldId = IntVal( $row->old_id );
rev_user_text varchar(255) binary NOT NULL default '',
rev_timestamp char(14) binary NOT NULL default '',
rev_minor_edit tinyint(1) unsigned NOT NULL default '0',
- inverse_timestamp char(14) binary NOT NULL default '',
PRIMARY KEY rev_page_id (rev_page, rev_id),
UNIQUE INDEX rev_id (rev_id),
INDEX rev_timestamp (rev_timestamp),
- INDEX page_timestamp (rev_page,inverse_timestamp),
- INDEX user_timestamp (rev_user,inverse_timestamp),
- INDEX usertext_timestamp (rev_user_text,inverse_timestamp)
+ INDEX page_timestamp (rev_page,rev_timestamp),
+ INDEX user_timestamp (rev_user,rev_timestamp),
+ INDEX usertext_timestamp (rev_user_text,rev_timestamp)
);
rev_user_text varchar(255) binary NOT NULL default '',
rev_timestamp char(14) binary NOT NULL default '',
rev_minor_edit tinyint(1) unsigned NOT NULL default '0',
- inverse_timestamp char(14) binary NOT NULL default '',
PRIMARY KEY rev_page_id (rev_page, rev_id),
UNIQUE INDEX rev_id (rev_id),
INDEX rev_timestamp (rev_timestamp),
- INDEX page_timestamp (rev_page,inverse_timestamp),
- INDEX user_timestamp (rev_user,inverse_timestamp),
- INDEX usertext_timestamp (rev_user_text,inverse_timestamp)
+ INDEX page_timestamp (rev_page,rev_timestamp),
+ INDEX user_timestamp (rev_user,rev_timestamp),
+ INDEX usertext_timestamp (rev_user_text,rev_timestamp)
)", $fname );
echo "......Locking tables.\n";
echo "......Moving text from cur.\n";
$wgDatabase->query( "INSERT INTO $old (old_namespace, old_title, old_text, old_comment, old_user, old_user_text,
- old_timestamp, old_minor_edit, old_flags, inverse_timestamp)
- SELECT cur_namespace, cur_title, cur_text, cur_comment, cur_user, cur_user_text, cur_timestamp, cur_minor_edit,
- '', inverse_timestamp
+ old_timestamp, old_minor_edit, old_flags, rev_timestamp)
+ SELECT cur_namespace, cur_title, cur_text, cur_comment, cur_user, cur_user_text, cur_timestamp, cur_minor_edit,''
FROM $cur", $fname );
echo "......Setting up revision table.\n";
$wgDatabase->query( "INSERT INTO $revision (rev_id, rev_page, rev_comment, rev_user, rev_user_text, rev_timestamp,
- inverse_timestamp, rev_minor_edit)
+ rev_minor_edit)
SELECT old_id, cur_id, old_comment, old_user, old_user_text,
- old_timestamp, $old.inverse_timestamp, old_minor_edit
+ old_timestamp, old_minor_edit
FROM $old,$cur WHERE old_namespace=cur_namespace AND old_title=cur_title", $fname );
echo "......Setting up page table.\n";