diff --git a/doc/src/release_notes.rst b/doc/src/release_notes.rst index df61f8f..75c7df0 100644 --- a/doc/src/release_notes.rst +++ b/doc/src/release_notes.rst @@ -10,6 +10,10 @@ For any deprecations, see :ref:`Deprecations `. 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) ---------------------- diff --git a/src/cxoCursor.c b/src/cxoCursor.c index 170b224..e3a02a0 100644 --- a/src/cxoCursor.c +++ b/src/cxoCursor.c @@ -1263,7 +1263,8 @@ static PyObject *cxoCursor_callProc(cxoCursor *cursor, PyObject *args, // parse arguments listOfArguments = keywordArguments = keywordArgumentsDeprecated = NULL; if (!PyArg_ParseTupleAndKeywords(args, keywordArgs, "O|OOO", keywordList, - &name, &listOfArguments, &keywordArguments)) + &name, &listOfArguments, &keywordArguments, + &keywordArgumentsDeprecated)) return NULL; if (keywordArgumentsDeprecated) { if (keywordArguments) { diff --git a/test/test_1200_cursor.py b/test/test_1200_cursor.py index c663345..b28733f 100644 --- a/test/test_1200_cursor.py +++ b/test/test_1200_cursor.py @@ -1001,5 +1001,35 @@ class TestCase(test_env.BaseTestCase): self.assertEqual(self.cursor.statement, sql) 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__": test_env.run_test_cases() diff --git a/test/test_2400_session_pool.py b/test/test_2400_session_pool.py index 0344b7f..c674a45 100644 --- a/test/test_2400_session_pool.py +++ b/test/test_2400_session_pool.py @@ -441,5 +441,22 @@ class TestCase(test_env.BaseTestCase): self.assertEqual(pool.stmtcachesize, 25, "stmtcachesize (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__": test_env.run_test_cases() diff --git a/test/test_2700_aq.py b/test/test_2700_aq.py index b01f428..54741e4 100644 --- a/test/test_2700_aq.py +++ b/test/test_2700_aq.py @@ -371,5 +371,13 @@ class TestCase(test_env.BaseTestCase): otherPrice = book.PRICE 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__": test_env.run_test_cases() diff --git a/test/test_3000_subscription.py b/test/test_3000_subscription.py index 7eb5e4c..8f8592e 100644 --- a/test/test_3000_subscription.py +++ b/test/test_3000_subscription.py @@ -119,5 +119,20 @@ class TestCase(test_env.BaseTestCase): (test_env.get_main_user(), test_env.get_connect_string()) 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__": test_env.run_test_cases()