Skip to content

Commit 7c51c67

Browse files
Fixed crash when using the deprecated parameter name keywordParameters
with Cursor.callproc(); added to test suite to verify deprecations.
1 parent acd1709 commit 7c51c67

File tree

6 files changed

+75
-1
lines changed

6 files changed

+75
-1
lines changed

doc/src/release_notes.rst

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,9 @@ Version 8.2.1 (June 2021)
1313
#) Updated embedded ODPI-C to `version 4.2.1
1414
<https://oracle.github.io/odpi/doc/releasenotes.html#
1515
version-4-2-1-tbd>`__.
16+
#) Fixed crash when using the deprecated parameter name `keywordParameters`
17+
with :meth:`Cursor.callproc()`.
18+
#) Improved test suite.
1619

1720

1821
Version 8.2 (May 2021)

src/cxoCursor.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1263,7 +1263,8 @@ static PyObject *cxoCursor_callProc(cxoCursor *cursor, PyObject *args,
12631263
// parse arguments
12641264
listOfArguments = keywordArguments = keywordArgumentsDeprecated = NULL;
12651265
if (!PyArg_ParseTupleAndKeywords(args, keywordArgs, "O|OOO", keywordList,
1266-
&name, &listOfArguments, &keywordArguments))
1266+
&name, &listOfArguments, &keywordArguments,
1267+
&keywordArgumentsDeprecated))
12671268
return NULL;
12681269
if (keywordArgumentsDeprecated) {
12691270
if (keywordArguments) {

test/test_1200_cursor.py

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1001,5 +1001,35 @@ def test_1284_parse_dml(self):
10011001
self.assertEqual(self.cursor.statement, sql)
10021002
self.assertEqual(self.cursor.description, None)
10031003

1004+
def test_1285_executemany_with_plsql_binds(self):
1005+
"1285 - test executing plsql statements multiple times (with binds)"
1006+
var = self.cursor.var(int, arraysize=5)
1007+
self.cursor.setinputsizes(var)
1008+
data = [[25], [30], [None], [35], [None]]
1009+
exepected_data = [25, 30, None, 35, None]
1010+
self.cursor.executemany("declare t number; begin t := :1; end;", data)
1011+
self.assertEqual(var.values, exepected_data)
1012+
1013+
def test_1286_encodingErrors_deprecation(self):
1014+
"1286 - test to verify encodingErrors is deprecated"
1015+
errors = 'strict'
1016+
self.assertRaises(oracledb.ProgrammingError, self.cursor.var,
1017+
oracledb.NUMBER, encoding_errors=errors,
1018+
encodingErrors=errors)
1019+
1020+
def test_1287_keywordParameters_deprecation(self):
1021+
"1287 - test to verify keywordParameters is deprecated"
1022+
out_value = self.cursor.var(oracledb.NUMBER)
1023+
kwargs = dict(a_OutValue=out_value)
1024+
self.assertRaises(oracledb.ProgrammingError, self.cursor.callproc,
1025+
"proc_Test", ("hi", 5), kwargs,
1026+
keywordParameters=kwargs)
1027+
extra_amount = self.cursor.var(oracledb.NUMBER)
1028+
extra_amount.setvalue(0, 5)
1029+
kwargs = dict(a_ExtraAmount=extra_amount, a_String="hi")
1030+
self.assertRaises(oracledb.ProgrammingError, self.cursor.callfunc,
1031+
"func_Test", oracledb.NUMBER, [], kwargs,
1032+
keywordParameters=kwargs)
1033+
10041034
if __name__ == "__main__":
10051035
test_env.run_test_cases()

test/test_2400_session_pool.py

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -441,5 +441,22 @@ def test_2417_setting_each_pool_param(self):
441441
self.assertEqual(pool.stmtcachesize, 25, "stmtcachesize (25)")
442442
self.assertEqual(pool.ping_interval, 25, "ping_interval (25)")
443443

444+
def test_2418_deprecations(self):
445+
"2418 - test to verify deprecations"
446+
callback = "pkg_SessionCallback.TheCallback"
447+
self.assertRaises(oracledb.ProgrammingError, test_env.get_pool,
448+
min=1, max=2, increment=1, wait_timeout=10,
449+
waitTimeout=10)
450+
self.assertRaises(oracledb.ProgrammingError, test_env.get_pool,
451+
min=1, max=2, increment=1, max_lifetime_session=20,
452+
maxLifetimeSession=20)
453+
self.assertRaises(oracledb.ProgrammingError, test_env.get_pool,
454+
min=1, max=2, increment=1, max_sessions_per_shard=1,
455+
maxSessionsPerShard=1)
456+
self.assertRaises(oracledb.ProgrammingError, test_env.get_pool,
457+
min=2, max=8, increment=3,
458+
getmode=oracledb.SPOOL_ATTRVAL_NOWAIT,
459+
session_callback=callback, sessionCallback=callback)
460+
444461
if __name__ == "__main__":
445462
test_env.run_test_cases()

test/test_2700_aq.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -371,5 +371,13 @@ def test_2715_enqueue_transformation(self):
371371
otherPrice = book.PRICE
372372
self.assertEqual(otherPrice, expectedPrice)
373373

374+
def test_2716_payloadType_deprecation(self):
375+
"2716 - test to verify payloadType is deprecated"
376+
self.__clear_books_queue()
377+
books_type = self.connection.gettype(self.book_type_name)
378+
self.assertRaises(oracledb.ProgrammingError, self.connection.queue,
379+
self.book_queue_name, books_type,
380+
payloadType=books_type)
381+
374382
if __name__ == "__main__":
375383
test_env.run_test_cases()

test/test_3000_subscription.py

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -119,5 +119,20 @@ def test_3000_subscription(self):
119119
(test_env.get_main_user(), test_env.get_connect_string())
120120
self.assertEqual(str(sub), expected)
121121

122+
def test_3001_deprecations(self):
123+
"3001 - test to verify deprecations"
124+
connection = test_env.get_connection(threaded=True, events=True)
125+
self.assertRaises(oracledb.ProgrammingError, connection.subscribe,
126+
ip_address='www.oracle.in',
127+
ipAddress='www.oracle.in')
128+
self.assertRaises(oracledb.ProgrammingError, connection.subscribe,
129+
grouping_class=1, groupingClass=1)
130+
self.assertRaises(oracledb.ProgrammingError, connection.subscribe,
131+
grouping_value=3, groupingValue=3)
132+
self.assertRaises(oracledb.ProgrammingError, connection.subscribe,
133+
grouping_type=2, groupingType=2)
134+
self.assertRaises(oracledb.ProgrammingError, connection.subscribe,
135+
client_initiated=True, clientInitiated=True)
136+
122137
if __name__ == "__main__":
123138
test_env.run_test_cases()

0 commit comments

Comments
 (0)