lucabecchetti / laravel-mysql-partition

Useful Laravel package to easily work with MySQL Partition
Other
139 stars 26 forks source link

havePartitioning check fails on MySQL 8 #2

Closed swichers closed 4 years ago

swichers commented 4 years ago

On MySQL 8 partition functionality is built in when using the InnoDB engine. There may be no partition plugin listed when running SHOW PLUGINS but something like:

CREATE TABLE table1 ( id INT NOT NULL PRIMARY KEY, 
fname  VARCHAR(25), lname VARCHAR(25)) 
PARTITION BY KEY() 
PARTITIONS 2;

will execute without issue. The checking for partition functionality needs to be updated to work with MySQL 8. I don't know if there is some other way to just check for a feature flag, but it also may be safe to assume that if it is MySQL 8 then it has partitions.

https://dev.mysql.com/doc/refman/8.0/en/partitioning.html

In MySQL 8.0, partitioning support is provided by the InnoDB and NDB storage engines.

MySQL 8.0 Community binaries provided by Oracle include partitioning support provided by the InnoDB and NDB storage engines. For information about partitioning support offered in MySQL Enterprise Edition binaries, see Chapter 29, MySQL Enterprise Edition.

If you are compiling MySQL 8.0 from source, configuring the build with InnoDB support is sufficient to produce binaries with partition support for InnoDB tables. For more information, see Section 2.9, “Installing MySQL from Source”.

The only unknown here is the Enterprise binary.