Details
-
Bug
-
Status: Closed (View Workflow)
-
Major
-
Resolution: Fixed
-
5.5(EOL), 10.0(EOL), 10.1(EOL), 10.2(EOL)
Description
DROP TABLE IF EXISTS t1;
|
CREATE TABLE t1 (a BLOB) ENGINE=MyISAM;
|
INSERT INTO t1 VALUES (REPEAT(0x61,65000));
|
SELECT LENGTH(a) FROM t1;
|
ALTER TABLE t1 MODIFY a TINYBLOB;
|
SELECT LENGTH(a) FROM t1;
|
returns 65000 before ALTER:
+-----------+
|
| LENGTH(a) |
|
+-----------+
|
| 65000 |
|
+-----------+
|
and returns 232 after ALTER:
+-----------+
|
| LENGTH(a) |
|
+-----------+
|
| 232 |
|
+-----------+
|
This looks wrong. The expected length after ALTER is 255.
It also does not produce any warnings on truncation. Probably it should.
Attachments
Issue Links
- blocks
-
MDEV-4912 Data type plugin API version 1
-
- Closed
-
- relates to
-
MDEV-13530 VARBINARY doesn't convert to to BLOB for sizes 65533, 65534 and 65535
-
- Closed
-
Activity
Field | Original Value | New Value |
---|---|---|
Summary | ALTER for a bigger to a smaller blob type truncates too much data | ALTER from a bigger to a smaller blob type truncates too much data |
Description |
{code} DROP TABLE IF EXISTS t1; CREATE TABLE t1 (a BLOB) ENGINE=MyISAM; INSERT INTO t1 VALUES (REPEAT(0x61,65000)); SELECT LENGTH(a) FROM t1; ALTER TABLE t1 MODIFY a TINYBLOB; SELECT LENGTH(a) FROM t1; {code} returns 65000 before ALTER: {code} +-----------+ | LENGTH(a) | +-----------+ | 65000 | +-----------+ {code} and returns 232 after ALTER: {code} +-----------+ | LENGTH(a) | +-----------+ | 232 | +-----------+ {code} This looks wrong. The expected length is 255. |
{code} DROP TABLE IF EXISTS t1; CREATE TABLE t1 (a BLOB) ENGINE=MyISAM; INSERT INTO t1 VALUES (REPEAT(0x61,65000)); SELECT LENGTH(a) FROM t1; ALTER TABLE t1 MODIFY a TINYBLOB; SELECT LENGTH(a) FROM t1; {code} returns 65000 before ALTER: {code} +-----------+ | LENGTH(a) | +-----------+ | 65000 | +-----------+ {code} and returns 232 after ALTER: {code} +-----------+ | LENGTH(a) | +-----------+ | 232 | +-----------+ {code} This looks wrong. The expected length after ALTER is 255. |
Description |
{code} DROP TABLE IF EXISTS t1; CREATE TABLE t1 (a BLOB) ENGINE=MyISAM; INSERT INTO t1 VALUES (REPEAT(0x61,65000)); SELECT LENGTH(a) FROM t1; ALTER TABLE t1 MODIFY a TINYBLOB; SELECT LENGTH(a) FROM t1; {code} returns 65000 before ALTER: {code} +-----------+ | LENGTH(a) | +-----------+ | 65000 | +-----------+ {code} and returns 232 after ALTER: {code} +-----------+ | LENGTH(a) | +-----------+ | 232 | +-----------+ {code} This looks wrong. The expected length after ALTER is 255. |
{code} DROP TABLE IF EXISTS t1; CREATE TABLE t1 (a BLOB) ENGINE=MyISAM; INSERT INTO t1 VALUES (REPEAT(0x61,65000)); SELECT LENGTH(a) FROM t1; ALTER TABLE t1 MODIFY a TINYBLOB; SELECT LENGTH(a) FROM t1; {code} returns 65000 before ALTER: {code} +-----------+ | LENGTH(a) | +-----------+ | 65000 | +-----------+ {code} and returns 232 after ALTER: {code} +-----------+ | LENGTH(a) | +-----------+ | 232 | +-----------+ {code} This looks wrong. The expected length after ALTER is 255. It also does not produce any warnings on truncation. Probably it should. |
Labels | upstream upstream-5.5 |
Fix Version/s | 5.5 [ 15800 ] | |
Fix Version/s | 10.2 [ 14601 ] |
Fix Version/s | 10.0 [ 16000 ] | |
Fix Version/s | 10.1 [ 16100 ] |
Component/s | Data Definition - Alter Table [ 10114 ] | |
Component/s | OTHER [ 10125 ] |
Fix Version/s | 5.5.48 [ 21000 ] | |
Fix Version/s | 10.0.24 [ 21101 ] | |
Fix Version/s | 10.1.11 [ 21202 ] | |
Fix Version/s | 10.0 [ 16000 ] | |
Fix Version/s | 5.5 [ 15800 ] | |
Fix Version/s | 10.1 [ 16100 ] | |
Resolution | Fixed [ 1 ] | |
Status | Open [ 1 ] | Closed [ 6 ] |
Link |
This issue relates to |
Workflow | MariaDB v3 [ 73316 ] | MariaDB v4 [ 149935 ] |