db: Force use of TimeTrackingCursor to work around Django 4.2 bug.

Effectively revert commit b4cf9ad777 to
work around https://code.djangoproject.com/ticket/34466.

Signed-off-by: Anders Kaseorg <anders@zulip.com>
This commit is contained in:
Anders Kaseorg 2023-04-06 11:58:14 -07:00 committed by Tim Abbott
parent e55f5a1b59
commit f1925487e8
3 changed files with 50 additions and 5 deletions

View File

@ -1,5 +1,17 @@
import time
from typing import Any, Callable, Dict, Iterable, List, Mapping, Sequence, TypeVar, Union
from typing import (
Any,
Callable,
Dict,
Iterable,
List,
Mapping,
Optional,
Sequence,
TypeVar,
Union,
overload,
)
from psycopg2.extensions import connection, cursor
from psycopg2.sql import Composable
@ -48,6 +60,41 @@ class TimeTrackingConnection(connection):
self.queries: List[Dict[str, str]] = []
super().__init__(*args, **kwargs)
@overload
def cursor(
self,
name: Union[str, bytes, None] = ...,
*,
withhold: bool = ...,
scrollable: Optional[bool] = ...,
) -> TimeTrackingCursor:
...
@overload
def cursor(
self,
name: Union[str, bytes, None] = ...,
*,
cursor_factory: Callable[..., CursorT] = ...,
withhold: bool = ...,
scrollable: Optional[bool] = ...,
) -> CursorT:
...
@overload
def cursor(
self,
name: Union[str, bytes, None],
cursor_factory: Callable[..., CursorT] = ...,
withhold: bool = ...,
scrollable: Optional[bool] = ...,
) -> CursorT:
...
def cursor(self, *args: Any, **kwargs: Any) -> cursor:
kwargs["cursor_factory"] = TimeTrackingCursor
return super().cursor(*args, **kwargs)
def reset_queries() -> None:
from django.db import connections

View File

@ -7,7 +7,7 @@ from typing import Any, Dict, Final, List, Tuple, Union
from urllib.parse import urljoin
from scripts.lib.zulip_tools import get_tornado_ports
from zerver.lib.db import TimeTrackingConnection, TimeTrackingCursor
from zerver.lib.db import TimeTrackingConnection
from .config import (
DEPLOY_ROOT,
@ -282,7 +282,6 @@ DATABASES: Dict[str, Dict[str, Any]] = {
"CONN_MAX_AGE": 600,
"OPTIONS": {
"connection_factory": TimeTrackingConnection,
"cursor_factory": TimeTrackingCursor,
},
}
}

View File

@ -4,7 +4,7 @@ from typing import Dict, List, Optional, Tuple
import ldap
from django_auth_ldap.config import LDAPSearch
from zerver.lib.db import TimeTrackingConnection, TimeTrackingCursor
from zerver.lib.db import TimeTrackingConnection
from zproject.settings_types import OIDCIdPConfigDict, SAMLIdPConfigDict, SCIMConfigDict
from .config import DEPLOY_ROOT, get_from_file_if_exists
@ -36,7 +36,6 @@ DATABASES["default"] = {
"TEST_NAME": "django_zulip_tests",
"OPTIONS": {
"connection_factory": TimeTrackingConnection,
"cursor_factory": TimeTrackingCursor,
},
}