Skip to content

Commit 6c86663

Browse files
Fixed bug resulting in "TypeError" when using "DeqOptions.correlation"
for buffered delivery mode.
1 parent ab4f6e9 commit 6c86663

File tree

4 files changed

+37
-1
lines changed

4 files changed

+37
-1
lines changed

doc/src/release_notes.rst

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,8 @@ Thin Mode Changes
3333
#) Pooled connections that are no longer needed are now closed normally if
3434
possible instead of simply having the socket disconnected
3535
(`issue 393 <https://github.com/oracle/python-oracledb/issues/393>`__).
36+
#) Fixed bug resulting in ``TypeError`` when using
37+
:attr:`DeqOptions.correlation`` for buffered delivery mode.
3638

3739
Thick Mode Changes
3840
++++++++++++++++++

src/oracledb/impl/thin/messages/aq_base.pyx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ cdef class AqBaseMessage(Message):
8888
elif keyword == TNS_AQ_EXT_KEYWORD_AGENT_ADDRESS:
8989
props_impl.sender_agent_address = value
9090
elif keyword == TNS_AQ_EXT_KEYWORD_AGENT_PROTOCOL:
91-
props_impl.sender_agent_protocol = value
91+
props_impl.sender_agent_protocol = value[0]
9292
elif keyword == TNS_AQ_EXT_KEYWORD_ORIGINAL_MSGID:
9393
props_impl.original_msg_id = value
9494

tests/test_7800_aq_raw.py

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -463,6 +463,23 @@ def test_7828(self):
463463
setattr(props, name, None)
464464
self.assertIsNone(getattr(props, name))
465465

466+
def test_7829(self):
467+
"7829 - test deq options correlation with buffered messages"
468+
queue = self.get_and_clear_queue("TEST_RAW_QUEUE")
469+
value = self.raw_data[0]
470+
props = self.conn.msgproperties(payload=value, correlation="sample")
471+
queue.enqoptions.visibility = oracledb.ENQ_IMMEDIATE
472+
queue.enqoptions.deliverymode = oracledb.MSG_BUFFERED
473+
queue.enqone(props)
474+
self.conn.commit()
475+
queue.deqoptions.visibility = oracledb.DEQ_IMMEDIATE
476+
queue.deqoptions.deliverymode = oracledb.MSG_BUFFERED
477+
queue.deqoptions.wait = oracledb.DEQ_NO_WAIT
478+
queue.deqoptions.correlation = "sample"
479+
msg = queue.deqone()
480+
self.conn.commit()
481+
self.assertEqual(msg.payload, value)
482+
466483

467484
if __name__ == "__main__":
468485
test_env.run_test_cases()

tests/test_7900_aq_raw_async.py

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -402,6 +402,23 @@ async def test_7924(self):
402402
with self.assertRaisesFullCode("DPY-2062"):
403403
await queue.enqone(props)
404404

405+
async def test_7925(self):
406+
"7925 - test deq options correlation with buffered messages"
407+
queue = await self.get_and_clear_queue("TEST_RAW_QUEUE")
408+
value = self.raw_data[0]
409+
props = self.conn.msgproperties(payload=value, correlation="sample")
410+
queue.enqoptions.visibility = oracledb.ENQ_IMMEDIATE
411+
queue.enqoptions.deliverymode = oracledb.MSG_BUFFERED
412+
await queue.enqone(props)
413+
await self.conn.commit()
414+
queue.deqoptions.visibility = oracledb.DEQ_IMMEDIATE
415+
queue.deqoptions.deliverymode = oracledb.MSG_BUFFERED
416+
queue.deqoptions.wait = oracledb.DEQ_NO_WAIT
417+
queue.deqoptions.correlation = "sample"
418+
msg = await queue.deqone()
419+
await self.conn.commit()
420+
self.assertEqual(msg.payload, value)
421+
405422

406423
if __name__ == "__main__":
407424
test_env.run_test_cases()

0 commit comments

Comments
 (0)