diff options
| author | Mariusz Felisiak <felisiak.mariusz@gmail.com> | 2017-10-05 18:52:37 +0200 |
|---|---|---|
| committer | Mariusz Felisiak <felisiak.mariusz@gmail.com> | 2017-10-05 18:54:45 +0200 |
| commit | 20d678542645deaac9c4b34eeb352b324a910fe2 (patch) | |
| tree | 4ba9d09d3e2d1824006d434536c2df045d6873a1 /tests | |
| parent | cfde4ac3e7f2595c060be59bddf6daabbbc9e4c3 (diff) | |
[2.0.x] Fixed #28596 -- Fixed QuerySet.bulk_create() and cascade deletion crash on Oracle when using more than 65535 parameters.
Thanks Tim Graham for the review.
Backport of 1b823b8f182e8f31b8c9db281311ef718299eda7 from master
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/backends/oracle/test_operations.py | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/tests/backends/oracle/test_operations.py b/tests/backends/oracle/test_operations.py index d73df9a05c..bcae17cec6 100644 --- a/tests/backends/oracle/test_operations.py +++ b/tests/backends/oracle/test_operations.py @@ -9,3 +9,17 @@ class OperationsTests(unittest.TestCase): def test_sequence_name_truncation(self): seq_name = connection.ops._get_no_autofield_sequence_name('schema_authorwithevenlongee869') self.assertEqual(seq_name, 'SCHEMA_AUTHORWITHEVENLOB0B8_SQ') + + def test_bulk_batch_size(self): + # Oracle restricts the number of parameters in a query. + objects = range(2**16) + self.assertEqual(connection.ops.bulk_batch_size([], objects), len(objects)) + # Each field is a parameter for each object. + self.assertEqual( + connection.ops.bulk_batch_size(['id'], objects), + connection.features.max_query_params, + ) + self.assertEqual( + connection.ops.bulk_batch_size(['id', 'other'], objects), + connection.features.max_query_params // 2, + ) |
