Skip to content

Commit 6fe65af

Browse files
committed
Add queries_count property to Protocol
1 parent b6c576e commit 6fe65af

File tree

4 files changed

+13
-0
lines changed

4 files changed

+13
-0
lines changed

asyncpg/protocol/protocol.pxd

+2
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,8 @@ cdef class BaseProtocol(CoreProtocol):
3434
int uid_counter
3535
bint closing
3636

37+
readonly uint64_t queries_count
38+
3739
PreparedStatementState statement
3840

3941
cdef _ensure_clear_state(self)

asyncpg/protocol/protocol.pyx

+5
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,8 @@ cdef class BaseProtocol(CoreProtocol):
9595
self.timeout_callback = self._on_timeout
9696
self.completed_callback = self._on_waiter_completed
9797

98+
self.queries_count = 0
99+
98100
try:
99101
self.create_future = loop.create_future
100102
except AttributeError:
@@ -140,6 +142,7 @@ cdef class BaseProtocol(CoreProtocol):
140142
self.last_query = state.query
141143
self.statement = state
142144
self.return_extra = return_extra
145+
self.queries_count += 1
143146

144147
return await self._new_waiter(timeout)
145148

@@ -177,6 +180,7 @@ cdef class BaseProtocol(CoreProtocol):
177180
self.last_query = state.query
178181
self.statement = state
179182
self.return_extra = return_extra
183+
self.queries_count += 1
180184

181185
return await self._new_waiter(timeout)
182186

@@ -188,6 +192,7 @@ cdef class BaseProtocol(CoreProtocol):
188192

189193
self._simple_query(query)
190194
self.last_query = query
195+
self.queries_count += 1
191196

192197
return await self._new_waiter(timeout)
193198

tests/test_execute.py

+2
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,15 @@
77
class TestExecuteScript(tb.ConnectedTestCase):
88

99
async def test_execute_script_1(self):
10+
self.assertEqual(self.con._protocol.queries_count, 0)
1011
status = await self.con.execute('''
1112
SELECT 1;
1213
1314
SELECT true FROM pg_type WHERE false = true;
1415
1516
SELECT generate_series(0, 9);
1617
''')
18+
self.assertEqual(self.con._protocol.queries_count, 1)
1719
self.assertEqual(status, 'SELECT 10')
1820

1921
async def test_execute_script_check_transactionality(self):

tests/test_prepare.py

+4
Original file line numberDiff line numberDiff line change
@@ -8,14 +8,18 @@
88
class TestPrepare(tb.ConnectedTestCase):
99

1010
async def test_prepare_01(self):
11+
self.assertEqual(self.con._protocol.queries_count, 0)
1112
st = await self.con.prepare('SELECT 1 = $1 AS test')
13+
self.assertEqual(self.con._protocol.queries_count, 0)
1214
self.assertEqual(st.get_query(), 'SELECT 1 = $1 AS test')
1315

1416
rec = await st.fetchrow(1)
17+
self.assertEqual(self.con._protocol.queries_count, 1)
1518
self.assertTrue(rec['test'])
1619
self.assertEqual(len(rec), 1)
1720

1821
self.assertEqual(False, await st.fetchval(10))
22+
self.assertEqual(self.con._protocol.queries_count, 2)
1923

2024
async def test_prepare_02(self):
2125
with self.assertRaisesRegex(Exception, 'column "a" does not exist'):

0 commit comments

Comments
 (0)