diff options
| author | mike bayer <mike_mp@zzzcomputing.com> | 2022-01-20 23:04:24 +0000 |
|---|---|---|
| committer | Gerrit Code Review <gerrit@ci3.zzzcomputing.com> | 2022-01-20 23:04:24 +0000 |
| commit | 952f480bfe401ca35ff3ec3d87fa57ad2a87cf37 (patch) | |
| tree | def4b777768a37b88cf027e24c2629d7776002e7 | |
| parent | 297aebf2b686d17ad275d22e2dcacfb5884510ab (diff) | |
| parent | 867235e4902c91531095676e3a413d935181b0bd (diff) | |
| download | sqlalchemy-952f480bfe401ca35ff3ec3d87fa57ad2a87cf37.tar.gz | |
Merge "repair broken truediv test suite; memusage" into main
| -rw-r--r-- | lib/sqlalchemy/sql/compiler.py | 8 | ||||
| -rw-r--r-- | lib/sqlalchemy/testing/suite/test_types.py | 22 | ||||
| -rw-r--r-- | test/aaa_profiling/test_memusage.py | 4 | ||||
| -rw-r--r-- | test/orm/test_deprecations.py | 1 | ||||
| -rw-r--r-- | test/sql/test_compiler.py | 8 |
5 files changed, 33 insertions, 10 deletions
diff --git a/lib/sqlalchemy/sql/compiler.py b/lib/sqlalchemy/sql/compiler.py index af39f0672..8a3f26425 100644 --- a/lib/sqlalchemy/sql/compiler.py +++ b/lib/sqlalchemy/sql/compiler.py @@ -1932,7 +1932,13 @@ class SQLCompiler(Compiled): # TODO: would need a fast cast again here, # unless we want to use an implicit cast like "+ 0.0" + self.process( - elements.Cast(binary.right, sqltypes.Numeric()), **kw + elements.Cast( + binary.right, + binary.right.type + if binary.right.type._type_affinity is sqltypes.Numeric + else sqltypes.Numeric(), + ), + **kw, ) ) else: diff --git a/lib/sqlalchemy/testing/suite/test_types.py b/lib/sqlalchemy/testing/suite/test_types.py index 796de5d93..c51a66690 100644 --- a/lib/sqlalchemy/testing/suite/test_types.py +++ b/lib/sqlalchemy/testing/suite/test_types.py @@ -533,6 +533,8 @@ class CastTypeDecoratorTest(_LiteralRoundTripFixture, fixtures.TestBase): class TrueDivTest(fixtures.TestBase): + __backend__ = True + @testing.combinations( ("15", "10", 1.5), ("-15", "10", -1.5), @@ -576,14 +578,30 @@ class TrueDivTest(fixtures.TestBase): eq_( connection.scalar( select( - literal_column(left, type_=Numeric()) - / literal_column(right, type_=Numeric()) + literal_column(left, type_=Numeric(10, 2)) + / literal_column(right, type_=Numeric(10, 2)) ) ), decimal.Decimal(expected), ) @testing.combinations( + ("5.52", "2.4", 2.3), argnames="left, right, expected" + ) + def test_truediv_float(self, connection, left, right, expected): + """test #4926""" + + eq_( + connection.scalar( + select( + literal_column(left, type_=Float()) + / literal_column(right, type_=Float()) + ) + ), + expected, + ) + + @testing.combinations( ("5.52", "2.4", "2.0"), argnames="left, right, expected" ) def test_floordiv_numeric(self, connection, left, right, expected): diff --git a/test/aaa_profiling/test_memusage.py b/test/aaa_profiling/test_memusage.py index 10ec4d307..2b806baf7 100644 --- a/test/aaa_profiling/test_memusage.py +++ b/test/aaa_profiling/test_memusage.py @@ -458,7 +458,7 @@ class MemUsageWBackendTest(fixtures.MappedTest, EnsureZeroed): @testing.emits_warning("Compiled statement cache for lazy loader.*") @testing.crashes("sqlite", ":memory: connection not suitable here") def test_orm_many_engines(self): - metadata = MetaData(self.engine) + metadata = MetaData() table1 = Table( "mytable", @@ -485,7 +485,7 @@ class MemUsageWBackendTest(fixtures.MappedTest, EnsureZeroed): Column("col3", Integer, ForeignKey("mytable.col1")), ) - metadata.create_all() + metadata.create_all(self.engine) m1 = self.mapper_registry.map_imperatively( A, diff --git a/test/orm/test_deprecations.py b/test/orm/test_deprecations.py index e8d75ac48..97ee97bc0 100644 --- a/test/orm/test_deprecations.py +++ b/test/orm/test_deprecations.py @@ -1843,7 +1843,6 @@ class MixedEntitiesTest(QueryTest, AssertsCompiledSQL): q2 = q.values(func.count(User.name)) assert next(q2) == (4,) - @testing.fails_on("mssql", "FIXME: unknown") def test_values_specific_order_by(self): User = self.classes.User diff --git a/test/sql/test_compiler.py b/test/sql/test_compiler.py index c273dbbf8..d20037e92 100644 --- a/test/sql/test_compiler.py +++ b/test/sql/test_compiler.py @@ -2244,7 +2244,7 @@ class SelectTest(fixtures.TestBase, AssertsCompiledSQL): (value_tbl.c.val2 - value_tbl.c.val1) / value_tbl.c.val1, ), "SELECT values.id, (values.val2 - values.val1) " - "/ CAST(values.val1 AS NUMERIC) AS anon_1 FROM values", + "/ CAST(values.val1 AS FLOAT) AS anon_1 FROM values", ) self.assert_compile( @@ -2253,7 +2253,7 @@ class SelectTest(fixtures.TestBase, AssertsCompiledSQL): ), "SELECT values.id FROM values WHERE " "(values.val2 - values.val1) / " - "CAST(values.val1 AS NUMERIC) > :param_1", + "CAST(values.val1 AS FLOAT) > :param_1", ) self.assert_compile( @@ -2264,8 +2264,8 @@ class SelectTest(fixtures.TestBase, AssertsCompiledSQL): > 2.0, ), "SELECT values.id FROM values WHERE " - "(values.val1 / CAST((values.val2 - values.val1) AS NUMERIC)) " - "/ CAST(values.val1 AS NUMERIC) > :param_1", + "(values.val1 / CAST((values.val2 - values.val1) AS FLOAT)) " + "/ CAST(values.val1 AS FLOAT) > :param_1", ) def test_percent_chars(self): |
