[CONC-240] Bulk Insert (Row-wise Binding) inserts wrong data in db when array_size= 1 Created: 2017-03-06  Updated: 2017-06-14  Resolved: 2017-06-14

Status: Closed
Project: MariaDB Connector/C
Component/s: None
Affects Version/s: 3.0.1
Fix Version/s: 3.0.2

Type: Bug Priority: Critical
Reporter: Egon Andersen Assignee: Georg Richter
Resolution: Fixed Votes: 0
Labels: None
Environment:

Fedora linux
mariadb-connector-c-3.0.1-beta
Server version: 10.2.4-MariaDB MariaDB Server


Issue Links:
Blocks
is blocked by MDEV-12256 Fix BULK INSERT to be able to use it ... Closed
is blocked by MDEV-12471 BULK Command Closed

 Description   

Using the example in:
https://mariadb.com/kb/en/mariadb/bulk-insert-row-wise-binding/

If I change array_size from 3 to 1 I get the following stored in the db:
select * from example_db.bulk_example2;

+----+----------+---------+
| id | forename | surname |
+----+----------+---------+
|  1 |          | Monty   |
+----+----------+---------+

I would have expected:

+----+----------+----------+
| id | forename | surname  |
+----+----------+----------+
|  1 | Monty    | Widenius |
+----+----------+---------+

When array_size=3 I get, as expected, the following stored in the db:

+----+----------+----------+
| id | forename | surname  |
+----+----------+----------+
|  1 | Monty    | Widenius |
|  2 | David    | Axmark   |
|  3 | unknown  | N.N.     |
+----+----------+----------+



 Comments   
Comment by Georg Richter [ 2017-03-06 ]

Client sends the following data packet (execute_generate_request):

0000   40 fe 40 fe 40 01 00 05 4d 6f 6e 74 79 00 08 57  @.@.@...Monty..W
0010   69 64 65 6e 69 75 73                             idenius

According to COM_STMT_EXECUTE documentation the server expects a null bitmap if iteration count is one.

Unfortunately all test cases both in Connector/C and Server are working with larger array sizes.

This needs to be fixed in protocol (affects Connector/C, Connector/J and MariaDB Server 10.2)

Comment by Thomas Pollak [ 2017-06-13 ]

Not directly connected to the connector, but which storage engine do you use for your repro case?

Comment by Thomas Pollak [ 2017-06-14 ]

Never mind, I found out that bulk insert doesn't work in server 10.2.6 and 10.3.

Comment by Georg Richter [ 2017-06-14 ]

Due to this bug we decided to change the protocol - unfortunately it was too late for 10.2.6, so it will be available in 10.2.7 (planned release date will be July).

If you want to test before, the github branches are:
MDEV-12471 (Connector/C)
bb-10.2-MDEV-12471 (Server)

Generated at Thu Feb 08 03:03:53 UTC 2024 using Jira 8.20.16#820016-sha1:9d11dbea5f4be3d4cc21f03a88dd11d8c8687422.