Skip to content

Commit 352dd99

Browse files
author
James William Pye
committed
Use an LC filter to validate the appropriate message type.
If the processed messages are less than the given messages, then there are asyncs that need to be processed by the general mechanism.
1 parent 0997ab6 commit 352dd99

1 file changed

Lines changed: 9 additions & 19 deletions

File tree

postgresql/protocol/xact3.py

Lines changed: 9 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -606,18 +606,11 @@ def put_copydata(self, messages):
606606
self.state = (Receiving, self.standard_put)
607607
return self.standard_put(messages)
608608

609-
# Build a sequence of raw copy data.
610-
lines = []
611-
for x in messages:
612-
# XXX: Optimize this out using a C function.
613-
if x[0] is not element.CopyData.type:
614-
# This is extremely unlikely to happen as the
615-
# last message in the list was copydata.
616-
# However, if something did manage to sneak in,
617-
# handle it properly.
618-
self.state = (Receiving, self.standard_put)
619-
return self.standard_put(messages)
620-
lines.append(x[1])
609+
cdt = element.CopyData.type
610+
lines = [x[1] for x in messages if x[0] is cdt]
611+
if len(lines) != len(messages):
612+
self.state = (Receiving, self.standard_put)
613+
return self.standard_put(messages)
621614

622615
if not self.completed or self.completed[-1][0] != id(messages):
623616
self.completed.append((id(messages), lines))
@@ -637,13 +630,10 @@ def put_tupledata(self, messages):
637630

638631
p = element.Tuple.parse
639632
t = element.Tuple.type
640-
tuplemessages = []
641-
a = tuplemessages.append
642-
for (TYP,DATA) in messages:
643-
if TYP is not t:
644-
self.state = (Receiving, self.standard_put)
645-
return self.standard_put(messages)
646-
a(p(DATA))
633+
tuplemessages = [p(x[1]) for x in messages if x[0] is t]
634+
if len(tuplemessages) != len(messages):
635+
self.state = (Receiving, self.standard_put)
636+
return self.standard_put(messages)
647637

648638
if not self.completed or self.completed[-1][0] != id(messages):
649639
self.completed.append(((id(messages), tuplemessages)))

0 commit comments

Comments
 (0)