Skip to content

Commit c04ffcc

Browse files
Merge pull request #307 from martin-neotech/1.7-summary-bug-fix
[1.7] Fixed summary metadata consumption
2 parents 3489a23 + 2ccbd45 commit c04ffcc

File tree

2 files changed

+21
-12
lines changed

2 files changed

+21
-12
lines changed

neo4j/__init__.py

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,10 @@
4747
"kerberos_auth",
4848
]
4949

50+
BOLT_VERSION_1 = 1
51+
BOLT_VERSION_2 = 2
52+
BOLT_VERSION_3 = 3
53+
5054
try:
5155
from neobolt.exceptions import (
5256
ConnectionExpired,
@@ -1077,10 +1081,10 @@ class BoltStatementResultSummary(object):
10771081
#: A :class:`.ProfiledPlan` instance
10781082
profile = None
10791083

1080-
#: The time it took for the server to have the result available.
1084+
#: The time it took for the server to have the result available. (milliseconds)
10811085
result_available_after = None
10821086

1083-
#: The time it took for the server to consume the result.
1087+
#: The time it took for the server to consume the result. (milliseconds)
10841088
result_consumed_after = None
10851089

10861090
#: Notifications provide extra information for a user executing a statement.
@@ -1097,10 +1101,12 @@ def __init__(self, **metadata):
10971101
self.parameters = metadata.get("parameters")
10981102
self.statement_type = metadata.get("type")
10991103
self.counters = SummaryCounters(metadata.get("stats", {}))
1100-
self.result_available_after = metadata.get("result_available_after")
1101-
self.result_consumed_after = metadata.get("result_consumed_after")
1102-
self.t_first = metadata.get("t_first")
1103-
self.t_last = metadata.get("t_last")
1104+
if self.protocol_version < BOLT_VERSION_3:
1105+
self.result_available_after = metadata.get("result_available_after")
1106+
self.result_consumed_after = metadata.get("result_consumed_after")
1107+
else:
1108+
self.result_available_after = metadata.get("t_first")
1109+
self.result_consumed_after = metadata.get("t_last")
11041110
if "plan" in metadata:
11051111
self.plan = _make_plan(metadata["plan"])
11061112
if "profile" in metadata:

test/integration/test_session.py

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -277,12 +277,15 @@ def test_contains_time_information(self):
277277
raise SkipTest("Execution times are not supported before server 3.1")
278278
with self.driver.session() as session:
279279
summary = session.run("UNWIND range(1,1000) AS n RETURN n AS number").consume()
280-
if self.protocol_version() >= 3:
281-
self.assertIsInstance(summary.t_first, int)
282-
self.assertIsInstance(summary.t_last, int)
283-
else:
284-
self.assertIsInstance(summary.result_available_after, int)
285-
self.assertIsInstance(summary.result_consumed_after, int)
280+
281+
self.assertIsInstance(summary.result_available_after, int)
282+
self.assertIsInstance(summary.result_consumed_after, int)
283+
284+
with self.assertRaises(AttributeError) as ex:
285+
summary.t_first
286+
287+
with self.assertRaises(AttributeError) as ex:
288+
summary.t_last
286289

287290

288291
class ResetTestCase(DirectIntegrationTestCase):

0 commit comments

Comments
 (0)