Skip to content

Commit a34399f

Browse files
benjamin658sushantdhiman
authored andcommitted
feat(mariadb): support indexHints on mariadb dialect (#11573)
1 parent 2949a63 commit a34399f

File tree

2 files changed

+49
-0
lines changed

2 files changed

+49
-0
lines changed

lib/dialects/mariadb/index.js

+1
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ MariadbDialect.prototype.supports = _.merge(
4343
check: false
4444
},
4545
indexViaAlter: true,
46+
indexHints: true,
4647
NUMERIC: true,
4748
GEOMETRY: true,
4849
JSON: true,

test/unit/dialects/mariadb/query-generator.test.js

+48
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ const chai = require('chai'),
66
dialect = Support.getTestDialect(),
77
_ = require('lodash'),
88
Op = require('../../../../lib/operators'),
9+
IndexHints = require('../../../../lib/index-hints'),
910
QueryGenerator = require('../../../../lib/dialects/mariadb/query-generator');
1011

1112
if (dialect === 'mariadb') {
@@ -764,6 +765,53 @@ if (dialect === 'mariadb') {
764765
arguments: ['User', 'email'],
765766
expectation: "SELECT CONSTRAINT_NAME as constraint_name,CONSTRAINT_NAME as constraintName,CONSTRAINT_SCHEMA as constraintSchema,CONSTRAINT_SCHEMA as constraintCatalog,TABLE_NAME as tableName,TABLE_SCHEMA as tableSchema,TABLE_SCHEMA as tableCatalog,COLUMN_NAME as columnName,REFERENCED_TABLE_SCHEMA as referencedTableSchema,REFERENCED_TABLE_SCHEMA as referencedTableCatalog,REFERENCED_TABLE_NAME as referencedTableName,REFERENCED_COLUMN_NAME as referencedColumnName FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE WHERE (REFERENCED_TABLE_NAME = 'User' AND REFERENCED_COLUMN_NAME = 'email') OR (TABLE_NAME = 'User' AND COLUMN_NAME = 'email' AND REFERENCED_TABLE_NAME IS NOT NULL)"
766767
}
768+
],
769+
770+
selectFromTableFragment: [
771+
{
772+
arguments: [{}, null, ['*'], '`Project`'],
773+
expectation: 'SELECT * FROM `Project`'
774+
}, {
775+
arguments: [
776+
{ indexHints: [{ type: IndexHints.USE, values: ['index_project_on_name'] }] },
777+
null,
778+
['*'],
779+
'`Project`'
780+
],
781+
expectation: 'SELECT * FROM `Project` USE INDEX (`index_project_on_name`)'
782+
}, {
783+
arguments: [
784+
{ indexHints: [{ type: IndexHints.FORCE, values: ['index_project_on_name'] }] },
785+
null,
786+
['*'],
787+
'`Project`'
788+
],
789+
expectation: 'SELECT * FROM `Project` FORCE INDEX (`index_project_on_name`)'
790+
}, {
791+
arguments: [
792+
{ indexHints: [{ type: IndexHints.IGNORE, values: ['index_project_on_name'] }] },
793+
null,
794+
['*'],
795+
'`Project`'
796+
],
797+
expectation: 'SELECT * FROM `Project` IGNORE INDEX (`index_project_on_name`)'
798+
}, {
799+
arguments: [
800+
{ indexHints: [{ type: IndexHints.USE, values: ['index_project_on_name', 'index_project_on_name_and_foo'] }] },
801+
null,
802+
['*'],
803+
'`Project`'
804+
],
805+
expectation: 'SELECT * FROM `Project` USE INDEX (`index_project_on_name`,`index_project_on_name_and_foo`)'
806+
}, {
807+
arguments: [
808+
{ indexHints: [{ type: 'FOO', values: ['index_project_on_name'] }] },
809+
null,
810+
['*'],
811+
'`Project`'
812+
],
813+
expectation: 'SELECT * FROM `Project`'
814+
}
767815
]
768816
};
769817

0 commit comments

Comments
 (0)