Skip to content

Commit c5292a8

Browse files
author
pr-relay
committed
fix: keep explicit prepares named when statement cache is disabled
1 parent db8ecc2 commit c5292a8

2 files changed

Lines changed: 37 additions & 1 deletion

File tree

‎asyncpg/connection.py‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -653,7 +653,7 @@ async def _prepare(
653653
):
654654
self._check_open()
655655
if name is None:
656-
name = self._stmt_cache_enabled
656+
name = True
657657
stmt = await self._get_statement(
658658
query,
659659
timeout,

‎tests/test_prepare_naming.py‎

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
import unittest
2+
from unittest import mock
3+
4+
from asyncpg import connection as connection_mod
5+
6+
7+
class DummyConnection:
8+
_stmt_cache_enabled = False
9+
10+
def _check_open(self):
11+
pass
12+
13+
async def _get_statement(self, query, timeout, **kwargs):
14+
self.query = query
15+
self.named = kwargs["named"]
16+
return object()
17+
18+
19+
class TestExplicitPrepareNaming(unittest.IsolatedAsyncioTestCase):
20+
async def test_prepare_without_name_stays_named_when_cache_disabled(self):
21+
connection = DummyConnection()
22+
prepared = object()
23+
24+
with mock.patch.object(
25+
connection_mod.prepared_stmt,
26+
"PreparedStatement",
27+
return_value=prepared,
28+
):
29+
result = await connection_mod.Connection._prepare(
30+
connection,
31+
"select 1",
32+
)
33+
34+
self.assertIs(result, prepared)
35+
self.assertEqual(connection.query, "select 1")
36+
self.assertIs(connection.named, True)

0 commit comments

Comments
 (0)