From: Ian Beckwith Date: Thu, 23 Sep 2010 02:40:56 +0000 (+0100) Subject: tags(): self-join: postgres fixes X-Git-Tag: debian/1.0-1~192 X-Git-Url: http://erislabs.net/gitweb/?p=id3fs.git;a=commitdiff_plain;h=47f32b01bd623763dcee9fd92c5c4dbdeb1f13e0 tags(): self-join: postgres fixes --- diff --git a/lib/ID3FS/DB.pm b/lib/ID3FS/DB.pm index d0382e8..ac84aa0 100644 --- a/lib/ID3FS/DB.pm +++ b/lib/ID3FS/DB.pm @@ -115,15 +115,17 @@ sub tags " INNER JOIN tags ON tags.id=fxt2.tags_id\n" . " WHERE fxt1.tags_id IN \n\t("); my $main_sql_mid=")\n\tAND fxt2.tags_id NOT IN \n\t("; - my $main_sql_end=")\n GROUP BY fxt2.tags_id;"; + my $main_sql_end=")\n GROUP BY tags.name;"; while(my $constraint=shift @constraints) { print "CONSTRAINT: $constraint->{name}\n"; my $cid=$constraint->{id}; push(@tag_ids, $cid); } - my $sql = ($main_sql_start . join(", ", map { "\"$_\""; } @tag_ids) . - $main_sql_mid . join(", ", map { "\"$_\""; } @tag_ids) . + @tag_ids = map( { "\"$_\""; } @tag_ids) unless($self->{postgres}); + my $tagstr=join(", ", @tag_ids); + my $sql = ($main_sql_start . $tagstr . + $main_sql_mid . $tagstr . $main_sql_end); print "SQL: $sql\n"; my $result=$self->cmd_rows($sql);