This project is archived and is in readonly mode.
mysql adapter with mediumt support
Reported by Rasmus | June 16th, 2008 @ 09:38 PM
First of all: this is my first time ever contributing to an open source project, so please let me know if I've done something wrong.
As of rails 2.1 the mysql adapter of activerecord, is able to use more appropriate data types for integers instead of just the standard INT data type in mysql. However, the MEDIUMINT data type seem to have been left out for some reason. Integer with a length of 5 or 6 should be stored as an mediumt in order to obtain optimal performance from mysql. With this patch, mediumint is now supported.
Also, the lengths have been corrected so that they know fit more appropriately. For instance SMALLINT is now used for integers with length 0-4 instead of 0-3.
I hope this patch is useful. If not, excuse me for my newbie-ism.
Comments and changes to this ticket
Thank you for your reply.
Jeremy Kemper added mediumint here:
However, I'm personally not sure he has done everything correct.
Example (taken from jeremy's commit):
when 1; 'tinyint'
when 2; 'smallint'
when 3; 'mediumint'
For instance, doesn't this mean that rails will choose mediumint as data type for storing integers with a length of 3? That should be smallint! Smallint holds (if signed) -32768 to 32767 so it would easy hold an integer with length of 3 and even 4. Using mediumint here just wastes disk space and increase mysql memory consumption without any reason.
As I understand rails and mysql data types, it should rather be something like:
when 0..2; 'tinyint'
when 2..4; 'smallint'
when 5..6; 'mediumint'
when 7..9; 'int'
when 9..20; 'bigint'
Or am I missing something here?
Create your profile
Help contribute to this project by taking a few moments to create your personal profile. Create your profile »
Tickets have moved to Github
The new ticket tracker is available at https://github.com/rails/rails/issues