[MXS-2263] Maxscale CDC treats unsigned columns as signed Created: 2019-01-15 Updated: 2019-09-30 Resolved: 2019-09-30 |
|
| Status: | Closed |
| Project: | MariaDB MaxScale |
| Component/s: | avrorouter, cdc |
| Affects Version/s: | 2.2.17 |
| Fix Version/s: | 2.4.3 |
| Type: | Bug | Priority: | Major |
| Reporter: | Sergiy Kyrychenko | Assignee: | markus makela |
| Resolution: | Fixed | Votes: | 0 |
| Labels: | None | ||
| Sprint: | MXS-SPRINT-91 |
| Description |
|
Values in unsigned columns come across in JSON as signed. To reproduce: CREATE TABLE `unsigned_test` ( INSERT INTO `unsigned_test` (`unsigned_test_id`) JSON Output: {"namespace": "MaxScaleChangeDataSchema.avro", "type": "record", "name": "ChangeRecord", "fields": [ {"name": "domain", "type": "int"}, {"name": "server_id", "type": "int"}, {"name": "sequence", "type": "int"}, {"name": "event_number", "type": "int"}, {"name": "timestamp", "type": "int"}, {"name": "event_type", "type": {"type": "enum", "name": "EVENT_TYPES", "symbols": ["insert", "update_before", "update_after", "delete"]}}, {"name": "unsigned_test_id", "type": ["null", "int"], "real_type": "mediumint", "length": 8}]} {"domain": 0, "server_id": 11009, "sequence": 9780915, "event_number": 1, "timestamp": 1547529921, "event_type": "insert", "unsigned_test_id": 3} {"domain": 0, "server_id": 11009, "sequence": 9781001, "event_number": 1, "timestamp": 1547529930, "event_type": "insert", "unsigned_test_id": 8000000} {"domain": 0, "server_id": 11009, "sequence": 9781377, "event_number": 1, "timestamp": 1547529978, "event_type": "insert", "unsigned_test_id": -7888328} |
| Comments |
| Comment by Sergiy Kyrychenko [ 2019-02-01 ] |
|
It's been 2 weeks since this issue has been filed. Is it possible to confirm and set proper priority on this? |
| Comment by markus makela [ 2019-09-25 ] |
|
Fixed the unsigned integer handling. Due to limitations in the Avro file format, only integers smaller than 64-bits can be correctly represented in their unsigned form. This means that BIGINT UNSIGNED values that exceed the limits of BIGINT SIGNED will be negative in the Avro files. |