]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commitdiff
(no commit message)
authorMike Bayer <mike_mp@zzzcomputing.com>
Thu, 4 Aug 2005 04:52:42 +0000 (04:52 +0000)
committerMike Bayer <mike_mp@zzzcomputing.com>
Thu, 4 Aug 2005 04:52:42 +0000 (04:52 +0000)
lib/sqlalchemy/sql.py
test/select.py

index 035d402aa18aecbafccd50cd6f076c56b20e1f4c..062ae00149df28bf50362f75f874f321dac5f2a6 100644 (file)
@@ -190,7 +190,7 @@ class FromClause(ClauseElement):
         return None
     
     def hash_key(self):
-        return "FromClause(%s, %s)" % (self.id, self.from_name)
+        return "FromClause(%s, %s)" % (repr(self.id), repr(self.from_name))
             
     def accept_visitor(self, visitor): 
         visitor.visit_fromclause(self)
@@ -208,7 +208,7 @@ class BindParamClause(ClauseElement):
         return []
      
     def hash_key(self):
-        return "BindParam(%s, %s)" % (self.key, self.value)
+        return "BindParam(%s, %s, %s)" % (repr(self.key), repr(self.value), repr(self.shortname))
         
 class TextClause(ClauseElement):
     """represents any plain text WHERE clause or full SQL statement"""
@@ -220,7 +220,7 @@ class TextClause(ClauseElement):
     def accept_visitor(self, visitor): visitor.visit_textclause(self)
 
     def hash_key(self):
-        return "TextClause(%s)" % self.text
+        return "TextClause(%s)" % repr(self.text)
         
     def _get_from_objects(self):
         return []
@@ -257,6 +257,9 @@ class CompoundClause(ClauseElement):
     def _get_from_objects(self):
         return self.fromobj
         
+    def hash_key(self):
+        return string.join(self.clauses.hash_key(), self.operator)
+        
 class ClauseList(ClauseElement):
     def __init__(self, *clauses):
         self.clauses = clauses
@@ -282,6 +285,9 @@ class BinaryClause(ClauseElement):
     def _get_from_objects(self):
         return self.left._get_from_objects() + self.right._get_from_objects()
 
+    def hash_key(self):
+        return self.left.hash_key() + self.operator + self.right.hash_key()
+        
     def accept_visitor(self, visitor):
         self.left.accept_visitor(visitor)
         self.right.accept_visitor(visitor)
@@ -306,6 +312,7 @@ class Join(Selectable):
         self.left = left
         self.right = right
         self.id = self.left.id + "_" + self.right.id
+        self.allcols = allcols
         if allcols:
             self.columns = [c for c in self.left.columns] + [c for c in self.right.columns]
         else:
@@ -314,7 +321,10 @@ class Join(Selectable):
         # TODO: if no onclause, do NATURAL JOIN
         self.onclause = onclause
         self.isouter = isouter
-    
+
+    def hash_key(self):
+        return "Join(%s, %s, %s, %s)" % (repr(self.left.hash_key()), repr(self.right.hash_key()), repr(self.onclause.hash_key()), repr(self.isouter))
+        
     def add_join(self, join):
         pass
         
index c883e254f170fb8ecbe8524de3904155cecfdc82..b1e2ed13caeaf2eea7293738076c295f4ddce953 100644 (file)
@@ -9,7 +9,7 @@ from sqlalchemy.sql import *
 from sqlalchemy.schema import *
 
 from testbase import PersistTest
-import unittest
+import unittest, re
 
 class SelectTest(PersistTest):
     
@@ -46,7 +46,7 @@ class SelectTest(PersistTest):
 
     def testtext(self):
         self.runtest(
-            textclause("select * from foo where lala = bar", {}) ,
+            textclause("select * from foo where lala = bar") ,
             "select * from foo where lala = bar",
             engine = db
         )
@@ -330,7 +330,8 @@ FROM mytable, myothertable WHERE mytable.myid = myothertable.otherid AND mytable
     def runtest(self, clause, result, engine = None, params = None):
         c = clause.compile(engine, params)
         print "\n" + str(c) + repr(c.get_params())
-        self.assert_(str(c) == result)
+        cc = re.sub(r'\n', '', str(c))
+        self.assert_(cc == result)
 
 if __name__ == "__main__":
     unittest.main()