--- /dev/null
+.. change::
+ :tags: bug, engine, postgresql
+ :tickets: 4955
+
+ Fixed bug in :class:`.Inspector` where the cache key generation did not
+ take into account arguments passed in the form of tuples, such as the tuple
+ of view name styles to return for the PostgreSQL dialect. This would lead
+ the inspector to cache too generally for a more specific set of criteria.
+ The logic has been adjusted to include every keyword element in the cache,
+ as every argument is expected to be appropriate for a cache else the
+ caching decorator should be bypassed by the dialect.
+
key = (
fn.__name__,
tuple(a for a in args if isinstance(a, util.string_types)),
- tuple(
- (k, v)
- for k, v in kw.items()
- if isinstance(v, util.string_types + util.int_types + (float,))
- ),
+ tuple((k, v) for k, v in kw.items() if k != "info_cache"),
)
ret = info_cache.get(key)
if ret is None:
set(["test_mview"]),
)
+ def test_get_view_names_reflection_cache_ok(self):
+ insp = inspect(testing.db)
+ eq_(
+ set(insp.get_view_names(include=("plain",))), set(["test_regview"])
+ )
+ eq_(
+ set(insp.get_view_names(include=("materialized",))),
+ set(["test_mview"]),
+ )
+ eq_(set(insp.get_view_names()), set(["test_regview", "test_mview"]))
+
def test_get_view_names_empty(self):
insp = inspect(testing.db)
assert_raises(ValueError, insp.get_view_names, include=())