]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commitdiff
- add limiting criteria to the JSON tests so that we don't
authorMike Bayer <mike_mp@zzzcomputing.com>
Wed, 6 Jan 2016 22:27:30 +0000 (17:27 -0500)
committerMike Bayer <mike_mp@zzzcomputing.com>
Wed, 6 Jan 2016 22:27:30 +0000 (17:27 -0500)
attempt integer indexed access from a key/value object nor
string access from an integer-indexed array, as earlier Postgresql
versions (prior to 9.4) don't allow this

lib/sqlalchemy/testing/suite/test_types.py

index c6e882fb53506cb2afe8c221e4ac5f70f8b39775..f2103f89abfd6fb11713cee6f691320b41e5543b 100644 (file)
@@ -5,7 +5,7 @@ from ..assertions import eq_
 from ..config import requirements
 from sqlalchemy import Integer, Unicode, UnicodeText, select
 from sqlalchemy import Date, DateTime, Time, MetaData, String, \
-    Text, Numeric, Float, literal, Boolean, cast, null, JSON
+    Text, Numeric, Float, literal, Boolean, cast, null, JSON, and_
 from ..schema import Table, Column
 from ... import testing
 import decimal
@@ -745,16 +745,29 @@ class JSONTest(_LiteralRoundTripFixture, fixtures.TablesTest):
             )
 
     def test_crit_spaces_in_key(self):
+        name = self.tables.data_table.c.name
         col = self.tables.data_table.c['data']
+
+        # limit the rows here to avoid PG error
+        # "cannot extract field from a non-object", which is
+        # fixed in 9.4 but may exist in 9.3
         self._test_index_criteria(
-            cast(col["key two"], String) == '"value2"',
+            and_(
+                name.in_(["r1", "r2", "r3"]),
+                cast(col["key two"], String) == '"value2"'
+            ),
             "r2"
         )
 
     def test_crit_simple_int(self):
+        name = self.tables.data_table.c.name
         col = self.tables.data_table.c['data']
+
+        # limit the rows here to avoid PG error
+        # "cannot extract array element from a non-array", which is
+        # fixed in 9.4 but may exist in 9.3
         self._test_index_criteria(
-            cast(col[1], String) == '"two"',
+            and_(name == 'r4', cast(col[1], String) == '"two"'),
             "r4"
         )