http://www.mediawiki.org/wiki/Special:Code/MediaWiki/90024
Revision: 90024
Author: aaron
Date: 2011-06-14 00:30:04 +0000 (Tue, 14 Jun 2011)
Log Message:
-----------
* Moved stats storage to new table. This makes adding stats easier and allows
for historical stats.
* Added new FlaggedRevsStats class
* Track sample size for review lag data (not displayed yet)
Modified Paths:
--------------
trunk/extensions/FlaggedRevs/FlaggedRevs.php
trunk/extensions/FlaggedRevs/dataclasses/FlaggedRevs.hooks.php
trunk/extensions/FlaggedRevs/maintenance/updateStats.inc
trunk/extensions/FlaggedRevs/presentation/specialpages/reports/ValidationStatistics_body.php
trunk/extensions/FlaggedRevs/schema/FlaggedRevsUpdater.hooks.php
trunk/extensions/FlaggedRevs/schema/mysql/FlaggedRevs.sql
Added Paths:
-----------
trunk/extensions/FlaggedRevs/dataclasses/FlaggedRevsStats.php
trunk/extensions/FlaggedRevs/schema/mysql/patch-flaggedrevs_statistics.sql
trunk/extensions/FlaggedRevs/schema/postgres/patch-flaggedrevs_statistics.sql
Modified: trunk/extensions/FlaggedRevs/FlaggedRevs.php
===================================================================
--- trunk/extensions/FlaggedRevs/FlaggedRevs.php 2011-06-14 00:18:16 UTC
(rev 90023)
+++ trunk/extensions/FlaggedRevs/FlaggedRevs.php 2011-06-14 00:30:04 UTC
(rev 90024)
@@ -248,6 +248,7 @@
$wgAutoloadClasses['FlaggedPageConfig'] = $accessDir . 'FlaggedPageConfig.php';
$wgAutoloadClasses['FlaggedRevsLog'] = $accessDir . 'FlaggedRevsLog.php';
$wgAutoloadClasses['FRInclusionCache'] = $accessDir . 'FRInclusionCache.php';
+$wgAutoloadClasses['FlaggedRevsStats'] = $accessDir . 'FlaggedRevsStats.php';
# Data object classes...
$wgAutoloadClasses['FRExtraCacheUpdate'] = $accessDir .
'FRExtraCacheUpdate.php';
$wgAutoloadClasses['FRExtraCacheUpdateJob'] = $accessDir .
'FRExtraCacheUpdate.php';
Modified: trunk/extensions/FlaggedRevs/dataclasses/FlaggedRevs.hooks.php
===================================================================
--- trunk/extensions/FlaggedRevs/dataclasses/FlaggedRevs.hooks.php
2011-06-14 00:18:16 UTC (rev 90023)
+++ trunk/extensions/FlaggedRevs/dataclasses/FlaggedRevs.hooks.php
2011-06-14 00:30:04 UTC (rev 90024)
@@ -261,12 +261,12 @@
static $pcCounts = null;
if ( !$pcCounts ) {
- $dbr = wfGetDB( DB_SLAVE );
- $res = $dbr->select( 'flaggedrevs_stats', '*', array(),
__METHOD__ );
+ $stats = FlaggedRevsStats::getLatestStats();
+ $reviewedPerNS = $stats['reviewedPages-NS'];
$totalCount = 0;
- foreach( $res as $row ) {
- $nsList[ "ns-{$row->namespace}" ] =
$row->reviewed;
- $totalCount += $row->reviewed;
+ foreach ( $reviewedPerNS as $ns => $reviewed ) {
+ $nsList[ "ns-{$ns}" ] = $reviewed;
+ $totalCount += $reviewed;
}
$nsList[ 'all' ] = $totalCount;
}
Added: trunk/extensions/FlaggedRevs/dataclasses/FlaggedRevsStats.php
===================================================================
--- trunk/extensions/FlaggedRevs/dataclasses/FlaggedRevsStats.php
(rev 0)
+++ trunk/extensions/FlaggedRevs/dataclasses/FlaggedRevsStats.php
2011-06-14 00:30:04 UTC (rev 90024)
@@ -0,0 +1,51 @@
+<?php
+/**
+ * FlaggedRevs stats functions
+ */
+class FlaggedRevsStats {
+ /*
+ * Get latest FR-related stats
+ * @return Array of current FR stats
+ */
+ public static function getLatestStats() {
+ $dbr = wfGetDB( DB_SLAVE );
+ $dbTs = $dbr->selectField( 'flaggedrevs_statistics',
'MAX(frs_timestamp)' );
+ $res = $dbr->select( 'flaggedrevs_statistics',
+ array( 'frs_stat_key', 'frs_stat_val' ),
+ array( 'frs_timestamp' => $dbTs ),
+ __METHOD__
+ );
+
+ $data = array();
+ $data['reviewLag-sampleSize'] = '-';
+ $data['reviewLag-average'] = '-';
+ $data['reviewLag-median'] = '-';
+ $data['reviewLag-percentiles'] = array();
+ $data['totalPages-NS'] = array();
+ $data['reviewedPages-NS'] = array();
+ $data['syncedPages-NS'] = array();
+ $data['pendingLag-average'] = '-';
+ $data['statTimestamp'] = wfTimestamp( TS_MW, $dbTs );
+
+ foreach( $res as $row ) {
+ $key = explode( ':', $row->frs_stat_key );
+ switch ( $key[0] ) {
+ case 'reviewLag-sampleSize':
+ case 'reviewLag-average':
+ case 'reviewLag-median':
+ case 'pendingLag-average':
+ $data[$key[0]] =
(int)$row->frs_stat_val;
+ break;
+ case 'reviewLag-percentile': // <stat
name,percentile)
+ $data[$key[0]][$key[1]] =
(int)$row->frs_stat_val;
+ break;
+ case 'totalPages-NS': // <stat name,namespace)
+ case 'reviewedPages-NS': // <stat
name,namespace)
+ case 'syncedPages-NS': // <stat name,namespace)
+ $data[$key[0]][$key[1]] =
(int)$row->frs_stat_val;
+ break;
+ }
+ }
+ return $data;
+ }
+}
Property changes on:
trunk/extensions/FlaggedRevs/dataclasses/FlaggedRevsStats.php
___________________________________________________________________
Added: svn:eol-style
+ native
Modified: trunk/extensions/FlaggedRevs/maintenance/updateStats.inc
===================================================================
--- trunk/extensions/FlaggedRevs/maintenance/updateStats.inc 2011-06-14
00:18:16 UTC (rev 90023)
+++ trunk/extensions/FlaggedRevs/maintenance/updateStats.inc 2011-06-14
00:30:04 UTC (rev 90024)
@@ -52,51 +52,62 @@
array( 'USE INDEX' => array('flaggedpages' =>
'fp_pending_since') )
);
# Get wait times for anon edits...
- list( $aveRT, $medianRT, $rPerTable ) = getAveReviewTimesAnons( $dbr,
$dbCache );
+ list( $aveRT, $medianRT, $rPerTable, $rSize ) = getAveReviewTimesAnons(
$dbr, $dbCache );
// Save the data...
- // @TODO: new permanent schema
#echo "\nAve=".($aveRT/3600)." Med=".($medianRT/3600)."\n";
$dbw = wfGetDB( DB_MASTER );
- // Make sure the master has flaggedrevs_stats and _stats2
- if ( !$dbw->tableExists( 'flaggedrevs_stats' ) ||
- !$dbw->tableExists( 'flaggedrevs_stats2' ) )
- {
- print( "Need to run update.php to create flaggedrevs_stats and
flaggedrevs_stats2. Stopping." );
- die( 1 );
+ // The timestamp to identify this whole batch of data
+ $encDataTimestamp = $dbw->timestamp();
+
+ $dataSet = array();
+ // All-namespace percentiles...
+ foreach( $rPerTable as $percentile => $seconds ) {
+ $dataSet[] = array(
+ 'frs_stat_key' =>
'reviewLag-percentile:'.(int)$percentile,
+ 'frs_stat_val' => $seconds,
+ 'frs_timestamp' => $encDataTimestamp );
}
- $dbw->begin();
- // Save/cache percentiles
- $key = wfMemcKey( 'flaggedrevs', 'reviewPercentiles' );
- $dbCache->set( $key, $rPerTable, 30*24*3600 );
- // Per-namespace stats...
+ // Sample size...
+ $dataSet[] = array(
+ 'frs_stat_key' => 'reviewLag-sampleSize',
+ 'frs_stat_val' => $rSize,
+ 'frs_timestamp' => $encDataTimestamp );
+
+ // All-namespace ave/med review lag & ave pending lag stats...
+ $dataSet[] = array(
+ 'frs_stat_key' => 'reviewLag-average',
+ 'frs_stat_val' => $aveRT,
+ 'frs_timestamp' => $encDataTimestamp );
+ $dataSet[] = array(
+ 'frs_stat_key' => 'reviewLag-median',
+ 'frs_stat_val' => $medianRT,
+ 'frs_timestamp' => $encDataTimestamp );
+ $dataSet[] = array(
+ 'frs_stat_key' => 'pendingLag-average',
+ 'frs_stat_val' => $avePET,
+ 'frs_timestamp' => $encDataTimestamp );
+
+ // Per-namespace total/reviewed/synced stats...
foreach( $wgFlaggedRevsNamespaces as $namespace ) {
- $dbw->replace( 'flaggedrevs_stats',
- array( 'namespace' ),
- array( 'namespace' => intval($namespace),
- 'total' => isset($ns_total[$namespace]) ?
$ns_total[$namespace] : 0,
- 'reviewed' => isset($ns_reviewed[$namespace]) ?
$ns_reviewed[$namespace] : 0,
- 'synced' => isset($ns_synced[$namespace]) ?
$ns_synced[$namespace] : 0
- ),
- __METHOD__
- );
+ $dataSet[] = array(
+ 'frs_stat_key' => 'totalPages-NS:'.(int)$namespace,
+ 'frs_stat_val' => isset($ns_total[$namespace]) ?
$ns_total[$namespace] : 0,
+ 'frs_timestamp' => $encDataTimestamp );
+ $dataSet[] = array(
+ 'frs_stat_key' => 'reviewedPages-NS:'.(int)$namespace,
+ 'frs_stat_val' => isset($ns_reviewed[$namespace]) ?
$ns_reviewed[$namespace] : 0,
+ 'frs_timestamp' => $encDataTimestamp );
+ $dataSet[] = array(
+ 'frs_stat_key' => 'syncedPages-NS:'.(int)$namespace,
+ 'frs_stat_val' => isset($ns_synced[$namespace]) ?
$ns_synced[$namespace] : 0,
+ 'frs_timestamp' => $encDataTimestamp );
}
- // Overall stats...
- $dbw->replace( 'flaggedrevs_stats2',
- array( 'stat_id' ),
- array( 'stat_id' => 1,
- 'ave_review_time' => $aveRT,
- 'med_review_time' => $medianRT,
- 'ave_pending_time' => $avePET
- ),
- __METHOD__
- );
- // Update timestamp
- $dbw->replace( 'querycache_info', array('qci_type'),
- array('qci_type' => 'validationstats', 'qci_timestamp' =>
$dbw->timestamp()),
- __METHOD__
- );
+
+ $dbw->begin();
+ $dbw->insert( 'flaggedrevs_statistics', $dataSet, __FUNCTION__, array(
'IGNORE' ) );
$dbw->commit();
+
// Stats are now up to date!
$key = wfMemcKey( 'flaggedrevs', 'statsUpdated' );
$dbCache->set( $key, '1', $wgFlaggedRevsStatsAge );
@@ -252,5 +263,5 @@
}
echo "(sampled ".count($times)." edits)...";
}
- return array($aveRT,$medianRT,$rPerTable);
+ return array($aveRT,$medianRT,$rPerTable,count($times));
}
Modified:
trunk/extensions/FlaggedRevs/presentation/specialpages/reports/ValidationStatistics_body.php
===================================================================
---
trunk/extensions/FlaggedRevs/presentation/specialpages/reports/ValidationStatistics_body.php
2011-06-14 00:18:16 UTC (rev 90023)
+++
trunk/extensions/FlaggedRevs/presentation/specialpages/reports/ValidationStatistics_body.php
2011-06-14 00:30:04 UTC (rev 90024)
@@ -1,6 +1,8 @@
<?php
class ValidationStatistics extends IncludableSpecialPage {
+ protected $latestData = null;
+
public function __construct() {
parent::__construct( 'ValidationStatistics' );
}
@@ -18,6 +20,7 @@
$mt = $this->getMeanReviewWait();
$mdt = $this->getMedianReviewWait();
$pt = $this->getMeanPendingWait();
+ $pData = $this->getPercentiles();
$timestamp = $this->getLastUpdate();
$wgOut->addWikiMsg( 'validationstatistics-users',
@@ -28,13 +31,10 @@
return false;
}
- $key = wfMemcKey( 'flaggedrevs', 'reviewPercentiles' );
- $dbCache = wfGetCache( CACHE_DB );
- $data = $dbCache->get( $key );
# Is there a review time table available?
- if ( is_array( $data ) && count( $data ) ) {
+ if ( is_array( $pData ) && count( $pData ) ) {
$headerRows = $dataRows = '';
- foreach ( $data as $percentile => $perValue ) {
+ foreach ( $pData as $percentile => $perValue ) {
$headerRows .= "<th>P<sub>" . intval(
$percentile ) . "</sub></th>";
$dataRows .= '<td>' .
$wgLang->formatTimePeriod( $perValue ) . '</td>';
}
@@ -82,36 +82,39 @@
$wgOut->addHTML( "</tr>\n" );
$namespaces = FlaggedRevs::getReviewNamespaces();
foreach ( $namespaces as $namespace ) {
- $row = $this->db->selectRow( 'flaggedrevs_stats', '*',
- array( 'namespace' => $namespace ) );
- if( !$row ) continue; // NS added to config recently?
+ $total = $this->getTotalPages( $namespace );
+ $reviewed = $this->getReviewedPages( $namespace );
+ $synced = $this->getSyncedPages( $namespace );
+ if ( $total === '-' || $reviewed === '-' || $synced ===
'-' ) {
+ continue; // NS added to config recently?
+ }
- $NsText = $wgContLang->getFormattedNsText(
$row->namespace );
+ $NsText = $wgContLang->getFormattedNsText( $namespace );
$NsText = $NsText ? $NsText : wfMsgHTML(
'blanknamespace' );
- $percRev = intval( $row->total ) == 0
+ $percRev = intval( $total ) == 0
? '-' // devision by zero
: wfMsg( 'parentheses',
wfMsgExt( 'percent', array(
'escapenoentities' ),
$wgLang->formatnum( sprintf(
'%4.2f',
- 100 * intval(
$row->reviewed ) / intval( $row->total ) ) )
+ 100 * intval( $reviewed
) / intval( $total ) ) )
)
);
- $percLatest = intval( $row->total ) == 0
+ $percLatest = intval( $total ) == 0
? '-' // devision by zero
: wfMsg( 'parentheses',
wfMsgExt( 'percent', array(
'escapenoentities' ),
$wgLang->formatnum( sprintf(
'%4.2f',
- 100 * intval(
$row->synced ) / intval( $row->total ) ) )
+ 100 * intval( $synced )
/ intval( $total ) ) )
)
);
- $percSynced = intval( $row->reviewed ) == 0
+ $percSynced = intval( $reviewed ) == 0
? '-' // devision by zero
: wfMsgExt( 'percent', array(
'escapenoentities' ),
$wgLang->formatnum( sprintf( '%4.2f',
- 100 * intval( $row->synced ) /
intval( $row->reviewed ) ) )
+ 100 * intval( $synced ) /
intval( $reviewed ) ) )
);
- $outdated = intval( $row->reviewed ) - intval(
$row->synced );
+ $outdated = intval( $reviewed ) - intval( $synced );
$outdated = $wgLang->formatnum( max( 0, $outdated ) );
// lag between queries
$wgOut->addHTML(
@@ -120,14 +123,14 @@
htmlspecialchars( $NsText ) .
"</td>
<td>" .
- htmlspecialchars(
$wgLang->formatnum( $row->total ) ) .
+ htmlspecialchars(
$wgLang->formatnum( $total ) ) .
"</td>
<td>" .
- htmlspecialchars(
$wgLang->formatnum( $row->reviewed ) .
+ htmlspecialchars(
$wgLang->formatnum( $reviewed ) .
$wgContLang->getDirMark() ) . " <i>$percRev</i>
</td>
<td>" .
- htmlspecialchars(
$wgLang->formatnum( $row->synced ) .
+ htmlspecialchars(
$wgLang->formatnum( $synced ) .
$wgContLang->getDirMark() ) . " <i>$percLatest</i>
</td>
<td>" .
@@ -193,10 +196,10 @@
}
protected function readyForQuery() {
- if ( !$this->db->tableExists( 'flaggedrevs_stats' ) ) {
+ if ( !$this->db->tableExists( 'flaggedrevs_statistics' ) ) {
return false;
} else {
- return ( 0 != $this->db->selectField(
'flaggedrevs_stats', 'COUNT(*)' ) );
+ return ( 0 != $this->db->selectField(
'flaggedrevs_statistics', 'COUNT(*)' ) );
}
}
@@ -211,30 +214,59 @@
array( 'ug_group' => 'reviewer' ),
__METHOD__ );
}
-
+
+ protected function getLatestStats() {
+ if ( $this->latestData !== null ) {
+ return $this->latestData;
+ }
+ $this->latestData = FlaggedRevsStats::getLatestStats();
+ return $this->latestData;
+ }
+
protected function getMeanReviewWait() {
- if ( !$this->db->tableExists( 'flaggedrevs_stats2' ) ) return
'-';
- $val = $this->db->selectField( 'flaggedrevs_stats2',
'ave_review_time' );
- return ( $val == false ? '-' : $val );
+ $stats = $this->getLatestStats();
+ return $stats['reviewLag-average'];
}
protected function getMedianReviewWait() {
- if ( !$this->db->tableExists( 'flaggedrevs_stats2' ) ) return
'-';
- $val = $this->db->selectField( 'flaggedrevs_stats2',
'med_review_time' );
- return ( $val == false ? '-' : $val );
+ $stats = $this->getLatestStats();
+ return $stats['reviewLag-median'];
}
protected function getMeanPendingWait() {
- if ( !$this->db->tableExists( 'flaggedrevs_stats2' ) ) return
'-';
- $val = $this->db->selectField( 'flaggedrevs_stats2',
'ave_pending_time' );
- return ( $val == false ? '-' : $val );
+ $stats = $this->getLatestStats();
+ return $stats['pendingLag-average'];
}
+
+ protected function getTotalPages( $ns ) {
+ $stats = $this->getLatestStats();
+ return isset( $stats['totalPages-NS'][$ns] )
+ ? $stats['totalPages-NS'][$ns]
+ : '-';
+ }
+ protected function getReviewedPages( $ns ) {
+ $stats = $this->getLatestStats();
+ return isset( $stats['reviewedPages-NS'][$ns] )
+ ? $stats['reviewedPages-NS'][$ns]
+ : '-';
+ }
+
+ protected function getSyncedPages( $ns ) {
+ $stats = $this->getLatestStats();
+ return isset( $stats['syncedPages-NS'][$ns] )
+ ? $stats['syncedPages-NS'][$ns]
+ : '-';
+ }
+
+ protected function getPercentiles() {
+ $stats = $this->getLatestStats();
+ return $stats['reviewLag-percentile'];
+ }
+
protected function getLastUpdate() {
- if ( !$this->db->tableExists( 'querycache_info' ) ) return '-';
- $val = $this->db->selectField( 'querycache_info',
'qci_timestamp',
- array( 'qci_type' => 'validationstats' ) );
- return ( $val == false ? '-' : $val );
+ $stats = $this->getLatestStats();
+ return $stats['statTimestamp'];
}
// top X reviewers in the last Y hours
Modified: trunk/extensions/FlaggedRevs/schema/FlaggedRevsUpdater.hooks.php
===================================================================
--- trunk/extensions/FlaggedRevs/schema/FlaggedRevsUpdater.hooks.php
2011-06-14 00:18:16 UTC (rev 90023)
+++ trunk/extensions/FlaggedRevs/schema/FlaggedRevsUpdater.hooks.php
2011-06-14 00:30:04 UTC (rev 90024)
@@ -29,12 +29,12 @@
'flaggedpage_config', 'fpc_level',
"$base/patch-fpc_level.sql", true ) );
$du->addExtensionUpdate( array( 'addTable',
'flaggedpage_pending',
"$base/patch-flaggedpage_pending.sql", true ) );
- $du->addExtensionUpdate( array( 'addTable',
- 'flaggedrevs_stats',
"$base/patch-flaggedrevs_stats.sql", true ) );
$du->addExtensionUpdate( array(
'FlaggedRevsUpdaterHooks::doFlaggedImagesTimestampNULL',
"$base/patch-fi_img_timestamp.sql" ) );
$du->addExtensionUpdate( array(
'FlaggedRevsUpdaterHooks::doFlaggedRevsRevTimestamp',
"$base/patch-fr_page_rev-index.sql" ) );
+ $du->addExtensionUpdate( array( 'addTable',
+ 'flaggedrevs_statistics',
"$base/patch-flaggedrevs_statistics.sql", true ) );
} elseif ( $wgDBtype == 'postgres' ) {
$base = dirname( __FILE__ ) . '/postgres';
// Initial install tables (current schema)
@@ -59,11 +59,12 @@
'flaggedpage_config', 'fpc_level', "TEXT NULL"
) );
$du->addExtensionUpdate( array( 'addTable',
'flaggedpage_pending',
"$base/patch-flaggedpage_pending.sql", true ) );
- // @TODO: PG stats table???
$du->addExtensionUpdate( array(
'FlaggedRevsUpdaterHooks::doFlaggedImagesTimestampNULL',
"$base/patch-fi_img_timestamp.sql" ) );
$du->addExtensionUpdate( array(
'FlaggedRevsUpdaterHooks::doFlaggedRevsRevTimestamp',
"$base/patch-fr_page_rev-index.sql" ) );
+ $du->addExtensionUpdate( array( 'addTable',
+ 'flaggedrevs_statistics',
"$base/patch-flaggedrevs_statistics.sql", true ) );
} elseif ( $wgDBtype == 'sqlite' ) {
$base = dirname( __FILE__ ) . '/mysql';
$du->addExtensionUpdate( array( 'addTable',
Modified: trunk/extensions/FlaggedRevs/schema/mysql/FlaggedRevs.sql
===================================================================
--- trunk/extensions/FlaggedRevs/schema/mysql/FlaggedRevs.sql 2011-06-14
00:18:16 UTC (rev 90023)
+++ trunk/extensions/FlaggedRevs/schema/mysql/FlaggedRevs.sql 2011-06-14
00:30:04 UTC (rev 90024)
@@ -139,16 +139,14 @@
frp_user_params mediumblob NOT NULL
) /*$wgDBTableOptions*/;
-CREATE TABLE /*_*/flaggedrevs_stats (
- namespace int unsigned NOT NULL DEFAULT 0 PRIMARY KEY,
- total int unsigned NOT NULL DEFAULT 0,
- reviewed int unsigned NOT NULL DEFAULT 0,
- synced int unsigned NOT NULL DEFAULT 0
+-- This stores overall stats
+CREATE TABLE /*_*/flaggedrevs_statistics (
+ -- Timestamp stat was recorded
+ frs_timestamp varbinary(14) NOT NULL,
+ -- Stat key name, colons separate paramaters
+ frs_stat_key varchar(255) NOT NULL,
+ -- Stat value as an integer
+ frs_stat_val integer unsigned NOT NULL,
+ PRIMARY KEY(frs_stat_key,frs_timestamp)
) /*$wgDBTableOptions*/;
-
-CREATE TABLE /*_*/flaggedrevs_stats2 (
- stat_id int unsigned NOT NULL DEFAULT 1 PRIMARY KEY,
- ave_review_time int unsigned NOT NULL DEFAULT 0,
- med_review_time int unsigned NOT NULL DEFAULT 0,
- ave_pending_time int unsigned NOT NULL DEFAULT 0
-) /*$wgDBTableOptions*/;
+CREATE INDEX /*i*/frs_timestamp ON /*_*/flaggedrevs_statistics (frs_timestamp);
Added:
trunk/extensions/FlaggedRevs/schema/mysql/patch-flaggedrevs_statistics.sql
===================================================================
--- trunk/extensions/FlaggedRevs/schema/mysql/patch-flaggedrevs_statistics.sql
(rev 0)
+++ trunk/extensions/FlaggedRevs/schema/mysql/patch-flaggedrevs_statistics.sql
2011-06-14 00:30:04 UTC (rev 90024)
@@ -0,0 +1,15 @@
+-- old format --
+DROP TABLE IF EXISTS /*_*/flaggedrevs_stats;
+DROP TABLE IF EXISTS /*_*/flaggedrevs_stats2;
+
+-- This stores overall stats
+CREATE TABLE /*_*/flaggedrevs_statistics (
+ -- Timestamp stat was recorded
+ frs_timestamp varbinary(14) NOT NULL,
+ -- Stat key name, colons separate paramaters
+ frs_stat_key varchar(255) NOT NULL,
+ -- Stat value as an integer
+ frs_stat_val integer unsigned NOT NULL,
+ PRIMARY KEY(frs_stat_key,frs_timestamp)
+) /*$wgDBTableOptions*/;
+CREATE INDEX /*i*/frs_timestamp ON /*_*/flaggedrevs_statistics (frs_timestamp);
Property changes on:
trunk/extensions/FlaggedRevs/schema/mysql/patch-flaggedrevs_statistics.sql
___________________________________________________________________
Added: svn:eol-style
+ native
Added:
trunk/extensions/FlaggedRevs/schema/postgres/patch-flaggedrevs_statistics.sql
===================================================================
---
trunk/extensions/FlaggedRevs/schema/postgres/patch-flaggedrevs_statistics.sql
(rev 0)
+++
trunk/extensions/FlaggedRevs/schema/postgres/patch-flaggedrevs_statistics.sql
2011-06-14 00:30:04 UTC (rev 90024)
@@ -0,0 +1,11 @@
+-- old format --
+DROP TABLE IF EXISTS flaggedrevs_stats;
+DROP TABLE IF EXISTS flaggedrevs_stats2;
+
+CREATE TABLE flaggedrevs_statistics (
+ frs_timestamp TIMESTAMPTZ NOT NULL,
+ frs_stat_key TEXT NOT NULL,
+ frs_stat_val BIGINT NOT NULL,
+ PRIMARY KEY(frs_stat_key,frs_timestamp)
+) /*$wgDBTableOptions*/;
+CREATE INDEX frs_timestamp ON flaggedrevs_statistics (frs_timestamp);
Property changes on:
trunk/extensions/FlaggedRevs/schema/postgres/patch-flaggedrevs_statistics.sql
___________________________________________________________________
Added: svn:eol-style
+ native
_______________________________________________
MediaWiki-CVS mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-cvs