-
-
Notifications
You must be signed in to change notification settings - Fork 213
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
MariaDB index parser (db_verify::getIndex()
) doesn't detect optional parts of index_col_name
in index_definition
#5054
Labels
type: bug
A problem that should not be happening
Comments
Deltik
added a commit
to Deltik/e107
that referenced
this issue
Aug 2, 2023
In the MariaDB `CREATE TABLE` [`index_definition`](https://mariadb.com/kb/en/create-table/#index-definitions), the `index_col_name` could have an optional length and a sort order: ``` index_definition: {INDEX|KEY} [index_name] [index_type] (index_col_name,...) [index_option] ... {{{|}}} {FULLTEXT|SPATIAL} [INDEX|KEY] [index_name] (index_col_name,...) [index_option] ... {{{|}}} [CONSTRAINT [symbol]] PRIMARY KEY [index_type] (index_col_name,...) [index_option] ... {{{|}}} [CONSTRAINT [symbol]] UNIQUE [INDEX|KEY] [index_name] [index_type] (index_col_name,...) [index_option] ... {{{|}}} [CONSTRAINT [symbol]] FOREIGN KEY [index_name] (index_col_name,...) reference_definition index_col_name: col_name [(length)] [ASC | DESC] index_type: USING {BTREE | HASH | RTREE} index_option: [ KEY_BLOCK_SIZE [=] value {{{|}}} index_type {{{|}}} WITH PARSER parser_name {{{|}}} COMMENT 'string' {{{|}}} CLUSTERING={YES| NO} ] [ IGNORED | NOT IGNORED ] reference_definition: REFERENCES tbl_name (index_col_name,...) [MATCH FULL | MATCH PARTIAL | MATCH SIMPLE] [ON DELETE reference_option] [ON UPDATE reference_option] reference_option: RESTRICT | CASCADE | SET NULL | NO ACTION ``` `db_verify::getIndex()` didn't handle this possibility, leading to a database validity check failure despite the index actually existing. Fixes: e107inc#5054
10 tasks
Jimmi08
pushed a commit
to hpkizi/e107
that referenced
this issue
Aug 6, 2023
In the MariaDB `CREATE TABLE` [`index_definition`](https://mariadb.com/kb/en/create-table/#index-definitions), the `index_col_name` could have an optional length and a sort order: ``` index_definition: {INDEX|KEY} [index_name] [index_type] (index_col_name,...) [index_option] ... {{{|}}} {FULLTEXT|SPATIAL} [INDEX|KEY] [index_name] (index_col_name,...) [index_option] ... {{{|}}} [CONSTRAINT [symbol]] PRIMARY KEY [index_type] (index_col_name,...) [index_option] ... {{{|}}} [CONSTRAINT [symbol]] UNIQUE [INDEX|KEY] [index_name] [index_type] (index_col_name,...) [index_option] ... {{{|}}} [CONSTRAINT [symbol]] FOREIGN KEY [index_name] (index_col_name,...) reference_definition index_col_name: col_name [(length)] [ASC | DESC] index_type: USING {BTREE | HASH | RTREE} index_option: [ KEY_BLOCK_SIZE [=] value {{{|}}} index_type {{{|}}} WITH PARSER parser_name {{{|}}} COMMENT 'string' {{{|}}} CLUSTERING={YES| NO} ] [ IGNORED | NOT IGNORED ] reference_definition: REFERENCES tbl_name (index_col_name,...) [MATCH FULL | MATCH PARTIAL | MATCH SIMPLE] [ON DELETE reference_option] [ON UPDATE reference_option] reference_option: RESTRICT | CASCADE | SET NULL | NO ACTION ``` `db_verify::getIndex()` didn't handle this possibility, leading to a database validity check failure despite the index actually existing. Fixes: e107inc/e107#5054
Deltik
added a commit
to Deltik/e107
that referenced
this issue
Aug 17, 2023
In the MariaDB `CREATE TABLE` [`index_definition`](https://mariadb.com/kb/en/create-table/#index-definitions), the `index_col_name` could have an optional length and a sort order: ``` index_definition: {INDEX|KEY} [index_name] [index_type] (index_col_name,...) [index_option] ... {{{|}}} {FULLTEXT|SPATIAL} [INDEX|KEY] [index_name] (index_col_name,...) [index_option] ... {{{|}}} [CONSTRAINT [symbol]] PRIMARY KEY [index_type] (index_col_name,...) [index_option] ... {{{|}}} [CONSTRAINT [symbol]] UNIQUE [INDEX|KEY] [index_name] [index_type] (index_col_name,...) [index_option] ... {{{|}}} [CONSTRAINT [symbol]] FOREIGN KEY [index_name] (index_col_name,...) reference_definition index_col_name: col_name [(length)] [ASC | DESC] index_type: USING {BTREE | HASH | RTREE} index_option: [ KEY_BLOCK_SIZE [=] value {{{|}}} index_type {{{|}}} WITH PARSER parser_name {{{|}}} COMMENT 'string' {{{|}}} CLUSTERING={YES| NO} ] [ IGNORED | NOT IGNORED ] reference_definition: REFERENCES tbl_name (index_col_name,...) [MATCH FULL | MATCH PARTIAL | MATCH SIMPLE] [ON DELETE reference_option] [ON UPDATE reference_option] reference_option: RESTRICT | CASCADE | SET NULL | NO ACTION ``` `db_verify::getIndex()` didn't handle this possibility, leading to a database validity check failure despite the index actually existing. Fixes: e107inc#5054
Deltik
added a commit
to Deltik/e107
that referenced
this issue
Aug 17, 2023
In the MariaDB `CREATE TABLE` [`index_definition`](https://mariadb.com/kb/en/create-table/#index-definitions), the `index_col_name` could have an optional length and a sort order: ``` index_definition: {INDEX|KEY} [index_name] [index_type] (index_col_name,...) [index_option] ... {{{|}}} {FULLTEXT|SPATIAL} [INDEX|KEY] [index_name] (index_col_name,...) [index_option] ... {{{|}}} [CONSTRAINT [symbol]] PRIMARY KEY [index_type] (index_col_name,...) [index_option] ... {{{|}}} [CONSTRAINT [symbol]] UNIQUE [INDEX|KEY] [index_name] [index_type] (index_col_name,...) [index_option] ... {{{|}}} [CONSTRAINT [symbol]] FOREIGN KEY [index_name] (index_col_name,...) reference_definition index_col_name: col_name [(length)] [ASC | DESC] index_type: USING {BTREE | HASH | RTREE} index_option: [ KEY_BLOCK_SIZE [=] value {{{|}}} index_type {{{|}}} WITH PARSER parser_name {{{|}}} COMMENT 'string' {{{|}}} CLUSTERING={YES| NO} ] [ IGNORED | NOT IGNORED ] reference_definition: REFERENCES tbl_name (index_col_name,...) [MATCH FULL | MATCH PARTIAL | MATCH SIMPLE] [ON DELETE reference_option] [ON UPDATE reference_option] reference_option: RESTRICT | CASCADE | SET NULL | NO ACTION ``` `db_verify::getIndex()` didn't handle this possibility, leading to a database validity check failure despite the index actually existing. Fixes: e107inc#5054
CaMer0n
added a commit
that referenced
this issue
Aug 17, 2023
Fixes #5054 db_verify::getIndex(): Support index_col_name optional parts
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Bug Description
In the MariaDB
CREATE TABLE
index_definition
, theindex_col_name
could have an optional length and a sort order:db_verify::getIndex()
doesn't handle this possibility, leading to a database validity check failure despite the index actually existing.How to Reproduce
/e107_admin/db.php?mode=verify_sql
with MariaDB 10.6.14?Expected Behavior
No check failure after auto-fixing all the failures
The text was updated successfully, but these errors were encountered: