From 7d4c5300a58c0afd81e6be947122e72a0c1a6ab0 Mon Sep 17 00:00:00 2001 From: Sam <3115209+saemideluxe@users.noreply.github.com> Date: Fri, 4 Jun 2021 16:37:36 +0700 Subject: [PATCH 1/3] Fixes #1239 This is just PoC. I wouldn't know how to test this properly. --- debug_toolbar/panels/sql/tracking.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/debug_toolbar/panels/sql/tracking.py b/debug_toolbar/panels/sql/tracking.py index 75366802c..3dcaa9863 100644 --- a/debug_toolbar/panels/sql/tracking.py +++ b/debug_toolbar/panels/sql/tracking.py @@ -55,6 +55,10 @@ def cursor(*args, **kwargs): ) def chunked_cursor(*args, **kwargs): + # prevent double wrapping + # solves https://github.com/jazzband/django-debug-toolbar/issues/1239 + if hasattr(connection._djdt_cursor, "__wrapped__"): + return connection._djdt_cursor(*args, **kwargs) return state.Wrapper( connection._djdt_chunked_cursor(*args, **kwargs), connection, panel ) From d0f7cfab5e0077c0eba81944f00a7c13dd452f33 Mon Sep 17 00:00:00 2001 From: Sam Date: Mon, 7 Jun 2021 11:57:50 +0700 Subject: [PATCH 2/3] fix: failing postgresql tests --- debug_toolbar/panels/sql/tracking.py | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/debug_toolbar/panels/sql/tracking.py b/debug_toolbar/panels/sql/tracking.py index 3dcaa9863..3be525118 100644 --- a/debug_toolbar/panels/sql/tracking.py +++ b/debug_toolbar/panels/sql/tracking.py @@ -57,11 +57,10 @@ def cursor(*args, **kwargs): def chunked_cursor(*args, **kwargs): # prevent double wrapping # solves https://github.com/jazzband/django-debug-toolbar/issues/1239 - if hasattr(connection._djdt_cursor, "__wrapped__"): - return connection._djdt_cursor(*args, **kwargs) - return state.Wrapper( - connection._djdt_chunked_cursor(*args, **kwargs), connection, panel - ) + cursor = connection._djdt_chunked_cursor(*args, **kwargs) + if not isinstance(cursor, NormalCursorWrapper): + return state.Wrapper(cursor, connection, panel) + return cursor connection.cursor = cursor connection.chunked_cursor = chunked_cursor From 7e2c161badf2b2c34ae2991aeaca977231e8e75c Mon Sep 17 00:00:00 2001 From: Sam Date: Thu, 10 Jun 2021 15:44:40 +0700 Subject: [PATCH 3/3] fix: make sure to check against correct wrapper class --- debug_toolbar/panels/sql/tracking.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debug_toolbar/panels/sql/tracking.py b/debug_toolbar/panels/sql/tracking.py index 3be525118..e7da994d9 100644 --- a/debug_toolbar/panels/sql/tracking.py +++ b/debug_toolbar/panels/sql/tracking.py @@ -58,7 +58,7 @@ def chunked_cursor(*args, **kwargs): # prevent double wrapping # solves https://github.com/jazzband/django-debug-toolbar/issues/1239 cursor = connection._djdt_chunked_cursor(*args, **kwargs) - if not isinstance(cursor, NormalCursorWrapper): + if not isinstance(cursor, state.Wrapper): return state.Wrapper(cursor, connection, panel) return cursor