# HG changeset patch # User Sylvain Thénault # Date 1287058202 -7200 # Node ID 019ab5eb37ea6c7fefdddee90bafc40ffc2bd80c # Parent 47a284c0d012d75b32c6f9946e1ea9ef0d261c1b [rql2sql] properly compute has_text relation table scope diff -r 47a284c0d012 -r 019ab5eb37ea server/sources/rql2sql.py --- a/server/sources/rql2sql.py Thu Oct 14 10:15:56 2010 +0200 +++ b/server/sources/rql2sql.py Thu Oct 14 14:10:02 2010 +0200 @@ -1337,10 +1337,10 @@ # tables handling ######################################################### - def alias_and_add_table(self, tablename): + def alias_and_add_table(self, tablename, scope=-1): alias = '%s%s' % (tablename, self._state.count) self._state.count += 1 - self.add_table('%s AS %s' % (tablename, alias), alias) + self.add_table('%s AS %s' % (tablename, alias), alias, scope) return alias def add_table(self, table, key=None, scope=-1): @@ -1437,6 +1437,7 @@ except AttributeError: pass self._state.done.add(relation) - alias = self.alias_and_add_table(self.dbhelper.fti_table) + scope = self._state.scopes[relation.scope] + alias = self.alias_and_add_table(self.dbhelper.fti_table, scope=scope) relation._q_sqltable = alias return alias diff -r 47a284c0d012 -r 019ab5eb37ea server/test/unittest_rql2sql.py --- a/server/test/unittest_rql2sql.py Thu Oct 14 10:15:56 2010 +0200 +++ b/server/test/unittest_rql2sql.py Thu Oct 14 14:10:02 2010 +0200 @@ -570,8 +570,6 @@ ('Any 1 WHERE X in_group G, X is CWUser', '''SELECT 1 FROM in_group_relation AS rel_in_group0'''), - - ] @@ -1415,6 +1413,13 @@ FROM appears AS appears0 WHERE appears0.words @@ to_tsquery('default', 'toto&tata')"""), + + ('Any X WHERE NOT A tags X, X has_text "pouet"', + '''SELECT appears1.uid +FROM appears AS appears1 +WHERE NOT (EXISTS(SELECT 1 FROM tags_relation AS rel_tags0 WHERE appears1.uid=rel_tags0.eid_to)) AND appears1.words @@ to_tsquery('default', 'pouet') +'''), + )): yield t