Difference between revisions of "DPL:Manual - DPL with PostgreSQL"

From FollowTheScore
Jump to: navigation, search
(New page: {{Type:Manual |section= PostgreSQL }} == Database Functions == The code of this extenstion uses some MySQL-specific functions which don't exist in PostgreSQL. In order to avoid patching...)
 
(DPL Patches)
 
(5 intermediate revisions by 3 users not shown)
Line 1: Line 1:
{{Type:Manual
+
{{Type Manual
 
  |section= PostgreSQL
 
  |section= PostgreSQL
 
}}
 
}}
Line 31: Line 31:
 
   end;
 
   end;
 
$function$ language plpgsql immutable strict;
 
$function$ language plpgsql immutable strict;
</pre>
 
  
== DPL Patch ==
+
create or replace function mysql.ifnull(text, text) returns text
 +
as $function$
 +
    select coalesce($1, $2) as result
 +
$function$ language 'sql';</pre>
  
Note: The following problem was resolved with DPL 1.2.0
+
==DPL Patches==
  
A more unpleasant problem is that DPL 1.1.7 uses double quotes to quote literal strings (e.g. for the parameter titlematch). The only solution is to modify the code. The patch is as follows:
+
DPL uses (at least at version 1.7.5) a LIMIT syntax that is not suitable for PostgreSQL and leads to SQL errors. In the corresponding [[Issue:Issue:Crash_on_Postgres-based_Mediawiki_(patch_included)|bug report]], a small patch is posted that solves this issue.
  
<pre>
+
DPL uses parentheses around JOIN tables that is not suitable for PostgreSQL and leads to SQL errors. In the corresponding [[Issue:Crash on ordermethod=category,sortkey on PostgreSQL-based Mediawiki (patch included)|bug report]], a small patch is posted that solves this issue.
1784c1784
 
<        $sSqlWhere .= ' AND page_title = "' . $sTitleIs . '"';
 
---
 
>        $sSqlWhere .= ' AND page_title = \'' . $sTitleIs . '\'';
 
1794c1794
 
<        $sSqlWhere .= 'pl_title' . $sTitleMatchMode . '"' . $link .'"';
 
---
 
>        $sSqlWhere .= 'pl_title' . $sTitleMatchMode . '\'' . $link .'\'';
 
1796c1796
 
<        $sSqlWhere .= 'page_title' . $sTitleMatchMode . '"' . $link .'"';
 
---
 
>        $sSqlWhere .= 'page_title' . $sTitleMatchMode . '\'' . $link .'\'';
 
1809c1809
 
<         $sSqlWhere .= 'pl_title' . $sNotTitleMatchMode . '"' . $link .'"';
 
---
 
>         $sSqlWhere .= 'pl_title' . $sNotTitleMatchMode . '\'' . $link .'\'';
 
1811c1811
 
<         $sSqlWhere .= 'page_title' . $sNotTitleMatchMode . '"' . $link .'"';
 
---
 
>         $sSqlWhere .= 'page_title' . $sNotTitleMatchMode . '\'' . $link .'\'';
 
</pre>
 

Latest revision as of 15:45, 19 January 2011

Manual PostgreSQL

Database Functions

The code of this extenstion uses some MySQL-specific functions which don't exist in PostgreSQL. In order to avoid patching each new version of DyanmicPageList, I suggest to run the following script on your postgres Database (from the postgres account). This simply emulates the MySQL functions.

create schema mysql;

grant usage on schema mysql to public;

alter user wikiuser set search_path to mediawiki, public, mysql;

create or replace function mysql.concat(text, text) returns text
as $function$
  begin
    return $1 || $2;
  end;
$function$ language plpgsql immutable strict;

create or replace function mysql.if(boolean, text, text) returns text
as $function$
  begin
    if $1 then
      return $2;
    else
      return $3;
    end if;
  end;
$function$ language plpgsql immutable strict;

create or replace function mysql.ifnull(text, text) returns text
as $function$
    select coalesce($1, $2) as result
$function$ language 'sql';

DPL Patches

DPL uses (at least at version 1.7.5) a LIMIT syntax that is not suitable for PostgreSQL and leads to SQL errors. In the corresponding bug report, a small patch is posted that solves this issue.

DPL uses parentheses around JOIN tables that is not suitable for PostgreSQL and leads to SQL errors. In the corresponding bug report, a small patch is posted that solves this issue.