Bug #8624 myisam_data_pointer_size ignored for tables with dynamic row sizes
Submitted: 19 Feb 2005 7:30 Modified: 30 Jun 2005 17:54
Reporter: Dean Ellis Email Updates:
Status: Closed Impact on me:
None 
Category:MySQL Server: MyISAM storage engine Severity:S3 (Non-critical)
Version:4.1.11 OS:
Assigned to: Dean Ellis CPU Architecture:Any

[19 Feb 2005 7:30] Dean Ellis
Description:
myisam_data_pointer_size is ignored (overruled) for tables with dynamic row sizes.

mi_get_pointer_length() (myisam/mi_create.c) returns a value calculated from file_length rather than the potentially larger def (from myisam_data_pointer_size).

How to repeat:
SET GLOBAL myisam_data_pointer_size=8;
DROP TABLE IF EXISTS t1;
CREATE TABLE t1 ( a VARCHAR(10) PRIMARY KEY );
SHOW TABLE STATUS LIKE 't1';

(or use myisamchk -dv)

Suggested fix:
Pass file_length of 0 when creating a new table with dynamic row sizes, or perhaps have the function return the larger of def and the length calculated from file_length.
[30 Jun 2005 17:54] Dean Ellis
Fixed in 4.1.13 while correcting bug #11226.