summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYorhel <git@yorhel.nl>2014-03-14 08:47:30 +0100
committerYorhel <git@yorhel.nl>2014-03-14 08:47:30 +0100
commit6a3b9349b19ca53c18a2ce1d7a1478a0f9d74e16 (patch)
tree990631a02b4855edd84cf49d022449a2aad8c5d5
parent00f58fee48952b81722eb03025aa4197ac57ec34 (diff)
DB::Releases: Fix mixing AND/OR expressions in platform/media filters
Fixes http://vndb.org/t5136
-rw-r--r--lib/VNDB/DB/Releases.pm8
1 files changed, 4 insertions, 4 deletions
diff --git a/lib/VNDB/DB/Releases.pm b/lib/VNDB/DB/Releases.pm
index 28edd869..3c19cfb2 100644
--- a/lib/VNDB/DB/Releases.pm
+++ b/lib/VNDB/DB/Releases.pm
@@ -44,14 +44,14 @@ sub dbReleaseGet {
'rr.id IN(SELECT irl.rid FROM releases_lang irl JOIN releases ir ON ir.latest = irl.rid WHERE irl.lang IN(!l))' => [ ref $o{lang} ? $o{lang} : [ $o{lang} ] ] ) : (),
$o{olang} ? (
'rr.id IN(SELECT irv.rid FROM releases_vn irv JOIN releases ir ON ir.latest = irv.rid JOIN vn v ON irv.vid = v.id WHERE v.c_olang && ARRAY[!l]::language[])' => [ ref $o{olang} ? $o{olang} : [ $o{olang} ] ] ) : (),
- $o{plat} ? (join(' OR ',
+ $o{plat} ? ('('.join(' OR ',
grep(/^unk$/, @{$o{plat}}) ? 'NOT EXISTS(SELECT 1 FROM releases_platforms irp WHERE irp.rid = r.latest)' : (),
grep(!/^unk$/, @{$o{plat}}) ? 'rr.id IN(SELECT irp.rid FROM releases_platforms irp JOIN releases ir ON ir.latest = irp.rid WHERE irp.platform IN(!l))' : (),
- ), [ [ grep !/^unk$/, @{$o{plat}} ] ]) : (),
- $o{med} ? (join(' OR ',
+ ).')', [ [ grep !/^unk$/, @{$o{plat}} ] ]) : (),
+ $o{med} ? ('('.join(' OR ',
grep(/^unk$/, @{$o{med}}) ? 'NOT EXISTS(SELECT 1 FROM releases_media irm WHERE irm.rid = r.latest)' : (),
grep(!/^unk$/, @{$o{med}}) ? 'rr.id IN(SELECT irm.rid FROM releases_media irm JOIN releases ir ON ir.latest = irm.rid WHERE irm.medium IN(!l))' : ()
- ), [ [ grep(!/^unk$/, @{$o{med}}) ] ]) : (),
+ ).')', [ [ grep(!/^unk$/, @{$o{med}}) ] ]) : (),
);
if($o{search}) {