]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commitdiff
Fixed postgres array concatenation
authorAnts Aasma <ants.aasma@gmail.com>
Thu, 12 Jul 2007 01:00:46 +0000 (01:00 +0000)
committerAnts Aasma <ants.aasma@gmail.com>
Thu, 12 Jul 2007 01:00:46 +0000 (01:00 +0000)
lib/sqlalchemy/databases/postgres.py
test/dialect/postgres.py

index 717eacd942a89a025b958010388e909e7d9b05f0..20088045e98bef4c8303fe411e30f6c667afb655 100644 (file)
@@ -538,7 +538,7 @@ class PGCompiler(ansisql.ANSICompiler):
             return super(PGCompiler, self).for_update_clause(select)
 
     def binary_operator_string(self, binary):
-        if isinstance(binary.type, sqltypes.String) and binary.operator == '+':
+        if isinstance(binary.type, (sqltypes.String, PGArray)) and binary.operator == '+':
             return '||'
         elif binary.operator == '%':
             return '%%'
index c9376d97d4d05968360bce81992a6905c5339bc1..f5bd4a55faec4b7ebcdd76de3cdf8612f2aa12fa 100644 (file)
@@ -277,6 +277,14 @@ class ArrayTest(AssertMixin):
         self.assertEquals(len(results), 1)
         self.assertEquals(results[0]['intarr'], [1,2,3])
         arrtable.delete().execute()
+    
+    @testbase.supported('postgres')
+    def test_array_concat(self):
+        arrtable.insert().execute(intarr=[1,2,3], strarr=['abc', 'def'])
+        results = select([arrtable.c.intarr + [4,5,6]]).execute().fetchall()
+        self.assertEquals(len(results), 1)
+        self.assertEquals(results[0][0], [1,2,3,4,5,6])
+        arrtable.delete().execute()
 
 if __name__ == "__main__":
     testbase.main()