Page MenuHomePhabricator

Install/Upgrade Semantic MW fails due to syntax error in PostgreSQL
Closed, ResolvedPublic

Description

Author: wwwwolf

Description:
I have an already existing Semantic MediaWiki site in PostgreSQL. When I upgraded to SMW 1.5.4, there were luckily no schema changes, because the "Initialise or upgrade tables" process fails.

Here's the bizarre error message that the software spits out - apparently, someone's being oddly specific about quotes, and PostgreSQL has a problem with that:


Setting up standard database configuration for SMW ...

Selected storage engine is "SMWSQLStore2" (or an extension thereof)

Checking table smw_ids ...

Table already exists, checking structure ...

Warning: pg_query() [function.pg-query]: Query failed: ERROR: syntax error at or near "\"
LINE 6: case when a.attnotnull THEN \'NO\'::text else \'YES\'::tex...

^ in /usr/share/mediawiki/includes/db/DatabasePostgres.php on line 580

I use MediaWiki 1.15.5-1 (Debian packaged version), PHP 5.2.6 and PostgreSQL 8.4.2.


Version: unspecified
Severity: normal

Details

Reference
bz26202

Event Timeline

bzimport raised the priority of this task from to Medium.Nov 21 2014, 11:13 PM
bzimport set Reference to bz26202.

jwm wrote:

The problem is that getFields function in SemanticMediaWiki/includes/storage/SMW_SQLHelpers.php uses a heredoc for the SQL for the postgre branch, but the query text is escaping single quotes like it's a big block of single quote string.

Which would have been painfully obvious if, before making a versioned release, a simple upgrade was run against a test postgresql installation :-/

I'll attach a patch against 1.5.5.1

jwm wrote:

Postgresql database upgrade fix

Attached:

Thanks John, I'll review your patch and apply it so it's in the next release (and set up a PostGres install to test compatibility :)

*Bulk BZ Change: +Patch to open bugs with patches attached that are missing the keyword*

This should now be fixed, I installed SMW trunk on MW trunk using PostGres, and fixed the issues popping up both during the installation and upgrading process. This code will be in SMW 1.6.