# HG changeset patch # User Sylvain Thénault # Date 1305790844 -7200 # Node ID d11d88bd08e801012a235869efc30ee862baaffa # Parent 7824d61f41a2c29c8dadc2e82268561f0d957ad3 [rql2sql] fix generated sql for eid comparison. closes #1638695 diff -r 7824d61f41a2 -r d11d88bd08e8 server/sources/rql2sql.py --- a/server/sources/rql2sql.py Wed May 18 16:05:11 2011 +0200 +++ b/server/sources/rql2sql.py Thu May 19 09:40:44 2011 +0200 @@ -1023,6 +1023,9 @@ # attribute relation if rtype == 'has_text': sql = self._visit_has_text_relation(relation) + elif rtype == 'eid': + sql = '%s%s' % (relation.children[0].variable.accept(self), + relation.children[1].accept(self)) else: rhs_vars = rhs.get_nodes(VariableRef) if rhs_vars: diff -r 7824d61f41a2 -r d11d88bd08e8 server/test/unittest_querier.py --- a/server/test/unittest_querier.py Wed May 18 16:05:11 2011 +0200 +++ b/server/test/unittest_querier.py Thu May 19 09:40:44 2011 +0200 @@ -1435,6 +1435,13 @@ def test_nonregr_final_norestr(self): self.assertRaises(BadRQLQuery, self.execute, 'Date X') + def test_nonregr_eid_cmp(self): + peid1 = self.execute("INSERT Personne X: X nom 'bidule'")[0][0] + peid2 = self.execute("INSERT Personne X: X nom 'bidule'")[0][0] + rset = self.execute('Any X,Y WHERE X is Personne, Y is Personne, X nom XD, Y nom XD, X eid Z, Y eid > Z') + self.assertEqual(rset.rows, [[peid1, peid2]]) + rset = self.execute('Any X,Y WHERE X nom XD, Y nom XD, X eid Z, Y eid > Z') + self.assertEqual(rset.rows, [[peid1, peid2]]) if __name__ == '__main__': unittest_main()