diff options
| author | Mike Bayer <mike_mp@zzzcomputing.com> | 2021-03-19 14:52:59 -0400 |
|---|---|---|
| committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2021-03-19 14:52:59 -0400 |
| commit | 028e5e90331ff3d12ad3f241e63ccef56a8fa017 (patch) | |
| tree | a0b2de23808b59ed258c863c87ff504bdc6296b4 | |
| parent | ad4ce4de3f617ae41fd15556d6e749689a501a94 (diff) | |
| download | sqlalchemy-028e5e90331ff3d12ad3f241e63ccef56a8fa017.tar.gz | |
Use tuple for function package names
Fixed issue where using a ``func`` that includes dotted packagenames would
fail to be cacheable by the SQL caching system due to a Python list of
names that needed to be a tuple.
Fixes: #6101
Change-Id: I1d4bb5bf230b83596c59b6a04aa498f18ecd9613
| -rw-r--r-- | doc/build/changelog/unreleased_14/6101.rst | 8 | ||||
| -rw-r--r-- | lib/sqlalchemy/sql/functions.py | 2 | ||||
| -rw-r--r-- | test/sql/test_compare.py | 6 |
3 files changed, 15 insertions, 1 deletions
diff --git a/doc/build/changelog/unreleased_14/6101.rst b/doc/build/changelog/unreleased_14/6101.rst new file mode 100644 index 000000000..131a8e73a --- /dev/null +++ b/doc/build/changelog/unreleased_14/6101.rst @@ -0,0 +1,8 @@ +.. change:: + :tags: bug, sql, regression + :tickets: 6101 + + Fixed issue where using a ``func`` that includes dotted packagenames would + fail to be cacheable by the SQL caching system due to a Python list of + names that needed to be a tuple. + diff --git a/lib/sqlalchemy/sql/functions.py b/lib/sqlalchemy/sql/functions.py index 40af73d7a..d71926a1f 100644 --- a/lib/sqlalchemy/sql/functions.py +++ b/lib/sqlalchemy/sql/functions.py @@ -790,7 +790,7 @@ class _FunctionGenerator(object): return func(*c, **o) return Function( - self.__names[-1], packagenames=self.__names[0:-1], *c, **o + self.__names[-1], packagenames=tuple(self.__names[0:-1]), *c, **o ) diff --git a/test/sql/test_compare.py b/test/sql/test_compare.py index 9a4b8b199..02dd0661a 100644 --- a/test/sql/test_compare.py +++ b/test/sql/test_compare.py @@ -269,6 +269,12 @@ class CoreFixtures(object): ), lambda: (_OffsetLimitParam("x"), _OffsetLimitParam("y")), lambda: (func.foo(), func.foo(5), func.bar()), + lambda: ( + func.package1.foo(5), + func.package2.foo(5), + func.packge1.bar(5), + func.foo(), + ), lambda: (func.current_date(), func.current_time()), lambda: ( func.next_value(Sequence("q")), |
