[MDEV-5271] Support engine-defined attributes per partition Created: 2013-11-10 Updated: 2024-01-04 Resolved: 2022-01-24 |
|
| Status: | Closed |
| Project: | MariaDB Server |
| Component/s: | Partitioning |
| Fix Version/s: | 10.8.1 |
| Type: | Task | Priority: | Blocker |
| Reporter: | Sergei Golubchik | Assignee: | Nayuta Yanagisawa (Inactive) |
| Resolution: | Done | Votes: | 6 |
| Labels: | None | ||
| Issue Links: |
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Description |
OverviewMariaDB allows storage engines to define additional attributes per index, field, or table. However, per-table attributes cannot be specified per partition. We should support per-partition attributes for more flexible configurations. Also, this functionality is necessary for other important features (see the issue links below). https://mariadb.com/kb/en/engine-defined-new-tablefieldindex-attributes/ Syntax
https://mariadb.com/kb/en/create-table/#partitions ExampleHere is a possible use case of the per-partition attributes support. By the use of per-partition attributes, the Spider storage engine (and other federated engines) can provide users with a cleaner way to specify where to connect.
Note that the example above doesn't work with the current server implementation. Description
TODO
|
| Comments |
| Comment by Olivier Bertrand [ 2014-06-10 ] | |||||
|
There are more problems withe the PARTITION engine, for instances: If the original table has a CONNECTION string, it is lost when calling the partition tables Query pruning can loose existing data ( These issues need to be handled. | |||||
| Comment by Sergei Golubchik [ 2020-04-17 ] | |||||
|
frm does not store attributes per partition and in memory data structures have only one list of attributes per table. | |||||
| Comment by Olivier Bertrand [ 2020-05-27 ] | |||||
|
Why only version 10.6? | |||||
| Comment by Sergei Golubchik [ 2020-05-27 ] | |||||
|
it's expected to be a pretty intrusive internal refactoring. If it'll turn out to be something smaller and safer we can backport it to earlier versions. | |||||
| Comment by Nayuta Yanagisawa (Inactive) [ 2021-11-05 ] | |||||
|
ralf.gebhardt@mariadb.com and serg. In MariaDB, there seem to be two types of table options, one is engine-specific and the other is non-engine-specific. And, they seemed to be treated differently. For example, PAGE_COMPRESSED is an InnoDB specific option and STATS_AUTO_RECALC is a non-engine specific option (while STATS_AUTO_RECALC seems to be used only by InnoDB). Can I limit the scope of the issue to the engine-specific options? Of course, we may need to make similar enhancements to the non-engine-specific options, but I would like to make it by a separate task. | |||||
| Comment by Sergei Golubchik [ 2021-11-05 ] | |||||
|
Yes, this is only about engine-defined attributes, those that are not hard-coded in the server, but declared by the engine using the dedicated API | |||||
| Comment by Max Mether [ 2021-11-05 ] | |||||
|
Just note that we also want to implement MDEV-22168 and that whatever is done in this MDEV should of course support what will be done in that MDEV. | |||||
| Comment by Nayuta Yanagisawa (Inactive) [ 2021-11-05 ] | |||||
|
I understand. Thank you very much! | |||||
| Comment by Nayuta Yanagisawa (Inactive) [ 2021-11-09 ] | |||||
|
serg, ralf.gebhardt@mariadb.com I wrote out some details of the per-partition attribute. Please comment if you have any concerns or if there is anything that needs to be fixed. | |||||
| Comment by Nayuta Yanagisawa (Inactive) [ 2021-11-18 ] | |||||
|
holyfoot Please review: https://github.com/MariaDB/server/commit/473ece969dbba474d2aa146466e66238bb373d28 | |||||
| Comment by Nayuta Yanagisawa (Inactive) [ 2021-11-19 ] | |||||
|
holyfoot I slightly updated my patch: https://github.com/MariaDB/server/commit/53fb89c94154ff8879af7a0c1dc8e41bb98164a3 | |||||
| Comment by Nayuta Yanagisawa (Inactive) [ 2021-11-24 ] | |||||
|
holyfoot Thank you for your review. I update my patch according to your comments. Please review the updated version: https://github.com/MariaDB/server/commit/88e445850b90db963704076b750bea0b26e555c8 Summary of the changes:
What has not yet been fixed:
The diff above seems to be due to the extension of the syntax. An engine-defined option name can be an arbitrary identity and thus the parser is not able to determine that it is a syntax error until it reads a later token. The function parse_error() just print the last token parsed. So, "t1" is dropped from the error message. IMHO, the error message looks still informative.
| |||||
| Comment by Nayuta Yanagisawa (Inactive) [ 2021-12-01 ] | |||||
|
According to the private communication with holyfoot, I slightly fix my patch (redundant err variable in add_engine_part_options() is removed): https://github.com/MariaDB/server/commit/afb81948ac34f37469d43154892cd3b8753bace6 | |||||
| Comment by Alexey Botchkov [ 2021-12-01 ] | |||||
|
Ok to push as discussed on Slack. | |||||
| Comment by Roel Van de Paar [ 2022-01-18 ] | |||||
|
Note that mixing of SE's is not implemented yet (planned in MDEV-22168):
| |||||
| Comment by Roel Van de Paar [ 2022-01-19 ] | |||||
|
Logged MDEV-27545 Feature request: migrate server attributes applicable to engines to the storage engine(s) | |||||
| Comment by Roel Van de Paar [ 2022-01-21 ] | |||||
|
Logged MDEV-27564 Clearly specify/indicate in the partitioning manual which per-partition options are available | |||||
| Comment by Roel Van de Paar [ 2022-01-22 ] | |||||
|
OK to push. However, I am still running a generic crash test against the feature branch. Results from that will be available around next week Wednesday. |