Fixed crash when using the deprecated parameter name keywordParameters
with Cursor.callproc(); add test cases to cover this and other similar situations.
This commit is contained in:
parent
ce4713c6f7
commit
d585cf06df
@ -10,6 +10,10 @@ For any deprecations, see :ref:`Deprecations <deprecations>`.
|
|||||||
Version 8.3 (TBD)
|
Version 8.3 (TBD)
|
||||||
-----------------
|
-----------------
|
||||||
|
|
||||||
|
#) Fixed crash when using the deprecated parameter name `keywordParameters`
|
||||||
|
with :meth:`Cursor.callproc()`.
|
||||||
|
#) Improved the test suite.
|
||||||
|
|
||||||
|
|
||||||
Version 8.2 (May 2021)
|
Version 8.2 (May 2021)
|
||||||
----------------------
|
----------------------
|
||||||
|
|||||||
@ -1263,7 +1263,8 @@ static PyObject *cxoCursor_callProc(cxoCursor *cursor, PyObject *args,
|
|||||||
// parse arguments
|
// parse arguments
|
||||||
listOfArguments = keywordArguments = keywordArgumentsDeprecated = NULL;
|
listOfArguments = keywordArguments = keywordArgumentsDeprecated = NULL;
|
||||||
if (!PyArg_ParseTupleAndKeywords(args, keywordArgs, "O|OOO", keywordList,
|
if (!PyArg_ParseTupleAndKeywords(args, keywordArgs, "O|OOO", keywordList,
|
||||||
&name, &listOfArguments, &keywordArguments))
|
&name, &listOfArguments, &keywordArguments,
|
||||||
|
&keywordArgumentsDeprecated))
|
||||||
return NULL;
|
return NULL;
|
||||||
if (keywordArgumentsDeprecated) {
|
if (keywordArgumentsDeprecated) {
|
||||||
if (keywordArguments) {
|
if (keywordArguments) {
|
||||||
|
|||||||
@ -1001,5 +1001,35 @@ class TestCase(test_env.BaseTestCase):
|
|||||||
self.assertEqual(self.cursor.statement, sql)
|
self.assertEqual(self.cursor.statement, sql)
|
||||||
self.assertEqual(self.cursor.description, None)
|
self.assertEqual(self.cursor.description, None)
|
||||||
|
|
||||||
|
def test_1285_executemany_with_plsql_binds(self):
|
||||||
|
"1285 - test executing plsql statements multiple times (with binds)"
|
||||||
|
var = self.cursor.var(int, arraysize=5)
|
||||||
|
self.cursor.setinputsizes(var)
|
||||||
|
data = [[25], [30], [None], [35], [None]]
|
||||||
|
exepected_data = [25, 30, None, 35, None]
|
||||||
|
self.cursor.executemany("declare t number; begin t := :1; end;", data)
|
||||||
|
self.assertEqual(var.values, exepected_data)
|
||||||
|
|
||||||
|
def test_1286_encodingErrors_deprecation(self):
|
||||||
|
"1286 - test to verify encodingErrors is deprecated"
|
||||||
|
errors = 'strict'
|
||||||
|
self.assertRaises(oracledb.ProgrammingError, self.cursor.var,
|
||||||
|
oracledb.NUMBER, encoding_errors=errors,
|
||||||
|
encodingErrors=errors)
|
||||||
|
|
||||||
|
def test_1287_keywordParameters_deprecation(self):
|
||||||
|
"1287 - test to verify keywordParameters is deprecated"
|
||||||
|
out_value = self.cursor.var(oracledb.NUMBER)
|
||||||
|
kwargs = dict(a_OutValue=out_value)
|
||||||
|
self.assertRaises(oracledb.ProgrammingError, self.cursor.callproc,
|
||||||
|
"proc_Test", ("hi", 5), kwargs,
|
||||||
|
keywordParameters=kwargs)
|
||||||
|
extra_amount = self.cursor.var(oracledb.NUMBER)
|
||||||
|
extra_amount.setvalue(0, 5)
|
||||||
|
kwargs = dict(a_ExtraAmount=extra_amount, a_String="hi")
|
||||||
|
self.assertRaises(oracledb.ProgrammingError, self.cursor.callfunc,
|
||||||
|
"func_Test", oracledb.NUMBER, [], kwargs,
|
||||||
|
keywordParameters=kwargs)
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
test_env.run_test_cases()
|
test_env.run_test_cases()
|
||||||
|
|||||||
@ -441,5 +441,22 @@ class TestCase(test_env.BaseTestCase):
|
|||||||
self.assertEqual(pool.stmtcachesize, 25, "stmtcachesize (25)")
|
self.assertEqual(pool.stmtcachesize, 25, "stmtcachesize (25)")
|
||||||
self.assertEqual(pool.ping_interval, 25, "ping_interval (25)")
|
self.assertEqual(pool.ping_interval, 25, "ping_interval (25)")
|
||||||
|
|
||||||
|
def test_2418_deprecations(self):
|
||||||
|
"2418 - test to verify deprecations"
|
||||||
|
callback = "pkg_SessionCallback.TheCallback"
|
||||||
|
self.assertRaises(oracledb.ProgrammingError, test_env.get_pool,
|
||||||
|
min=1, max=2, increment=1, wait_timeout=10,
|
||||||
|
waitTimeout=10)
|
||||||
|
self.assertRaises(oracledb.ProgrammingError, test_env.get_pool,
|
||||||
|
min=1, max=2, increment=1, max_lifetime_session=20,
|
||||||
|
maxLifetimeSession=20)
|
||||||
|
self.assertRaises(oracledb.ProgrammingError, test_env.get_pool,
|
||||||
|
min=1, max=2, increment=1, max_sessions_per_shard=1,
|
||||||
|
maxSessionsPerShard=1)
|
||||||
|
self.assertRaises(oracledb.ProgrammingError, test_env.get_pool,
|
||||||
|
min=2, max=8, increment=3,
|
||||||
|
getmode=oracledb.SPOOL_ATTRVAL_NOWAIT,
|
||||||
|
session_callback=callback, sessionCallback=callback)
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
test_env.run_test_cases()
|
test_env.run_test_cases()
|
||||||
|
|||||||
@ -371,5 +371,13 @@ class TestCase(test_env.BaseTestCase):
|
|||||||
otherPrice = book.PRICE
|
otherPrice = book.PRICE
|
||||||
self.assertEqual(otherPrice, expectedPrice)
|
self.assertEqual(otherPrice, expectedPrice)
|
||||||
|
|
||||||
|
def test_2716_payloadType_deprecation(self):
|
||||||
|
"2716 - test to verify payloadType is deprecated"
|
||||||
|
self.__clear_books_queue()
|
||||||
|
books_type = self.connection.gettype(self.book_type_name)
|
||||||
|
self.assertRaises(oracledb.ProgrammingError, self.connection.queue,
|
||||||
|
self.book_queue_name, books_type,
|
||||||
|
payloadType=books_type)
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
test_env.run_test_cases()
|
test_env.run_test_cases()
|
||||||
|
|||||||
@ -119,5 +119,20 @@ class TestCase(test_env.BaseTestCase):
|
|||||||
(test_env.get_main_user(), test_env.get_connect_string())
|
(test_env.get_main_user(), test_env.get_connect_string())
|
||||||
self.assertEqual(str(sub), expected)
|
self.assertEqual(str(sub), expected)
|
||||||
|
|
||||||
|
def test_3001_deprecations(self):
|
||||||
|
"3001 - test to verify deprecations"
|
||||||
|
connection = test_env.get_connection(threaded=True, events=True)
|
||||||
|
self.assertRaises(oracledb.ProgrammingError, connection.subscribe,
|
||||||
|
ip_address='www.oracle.in',
|
||||||
|
ipAddress='www.oracle.in')
|
||||||
|
self.assertRaises(oracledb.ProgrammingError, connection.subscribe,
|
||||||
|
grouping_class=1, groupingClass=1)
|
||||||
|
self.assertRaises(oracledb.ProgrammingError, connection.subscribe,
|
||||||
|
grouping_value=3, groupingValue=3)
|
||||||
|
self.assertRaises(oracledb.ProgrammingError, connection.subscribe,
|
||||||
|
grouping_type=2, groupingType=2)
|
||||||
|
self.assertRaises(oracledb.ProgrammingError, connection.subscribe,
|
||||||
|
client_initiated=True, clientInitiated=True)
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
test_env.run_test_cases()
|
test_env.run_test_cases()
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user