https://bugzilla.wikimedia.org/show_bug.cgi?id=29392

       Web browser: ---
             Bug #: 29392
           Summary: PostgreSQL invalid input syntax for type timestamp
                    with time zone
           Product: MediaWiki
           Version: 1.16.4
          Platform: All
        OS/Version: Linux
            Status: NEW
          Severity: normal
          Priority: Unprioritized
         Component: API
        AssignedTo: [email protected]
        ReportedBy: [email protected]
                CC: [email protected], [email protected],
                    [email protected], [email protected]
    Classification: Unclassified


Product    Version
 MediaWiki  1.16.4
 PHP        5.3.6-pl0-gentoo (cgi-fcgi)
 PostgreSQL 9.0.3 (but also seen with 8.4)

EXECUTING THIS API QUERY (but under PostgreSQL):
http://en.wikipedia.org/w/api.php?action=query&list=recentchanges&rcend=2010-05-06T14:31:51Z&rclimit=1&rcprop=title|timestamp&rctype=edit&format=xmlfm

RETURNS THIS ERROR VIA API:

error code="internal_api_error_DBUnexpectedError" info="Exception Caught: A
database error
has occurred
Query: SELECT
rc_timestamp,rc_namespace,rc_title,rc_cur_id,rc_type,rc_moved_to_ns,rc_moved_to_title
FROM
recentchanges WHERE (rc_timestamp>='20100506143151') AND rc_deleted =
'0' AND rc_type = '0' ORDER BY rc_timestamp DESC LIMIT 2

Function: ApiQueryRecentChanges::execute
Error: 1 ERROR: invalid input
syntax for
type timestamp with time zone: "20100506143151"
LINE 1: ...title FROM
recentchanges
WHERE (rc_timestamp>='201005061...


WHICH IS LOGGED AS:

==> /var/log/php5-cgi.log <==
[14-Jun-2011 05:20:26] PHP Warning:  pg_query() [<a
href='function.pg-query'>function.pg-query</a>]: Query failed: ERROR:  invalid
input syntax for type timestamp with time zone: &quot;20100506143151&quot;
LINE 1: ...title  FROM recentchanges    WHERE (rc_timestamp&gt;='201005061...
                                                             ^ in
/var/www/localhost/htdocs/mediawiki/includes/db/DatabasePostgres.php on line
584

MY FIX to includes/api/ApiBase.php:

case 'timestamp':
    if ( $multi ) {
        ApiBase::dieDebug( __METHOD__, "Multi-values not supported for
$encParamName" );
    }
    $value = wfTimestamp( TS_UNIX, $value );
    if ( $value === 0 ) {
        $this->dieUsage( "Invalid value '$value' for timestamp parameter
$encParamName", "badtimestamp_{$encParamName}" );
    }
//  $value = wfTimestamp(TS_MW, $value);
//// MCA.  Above fails on PostgreSQL.  It works if space inserted between date
and time,
  // thus "20100506 143151".  But here is an easier fix:
    $value = wfTimestamp( TS_POSTGRES, $value );
    break;

-- 
Configure bugmail: https://bugzilla.wikimedia.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.

_______________________________________________
Wikibugs-l mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/wikibugs-l

Reply via email to