Browse Source

feat(nocodb): handle case sensitive case for mysql

pull/5106/head
Wing-Kam Wong 2 years ago
parent
commit
f2b224b964
  1. 26
      packages/nocodb/src/lib/db/sql-data-mapper/lib/sql/conditionV2.ts

26
packages/nocodb/src/lib/db/sql-data-mapper/lib/sql/conditionV2.ts

@ -273,15 +273,29 @@ const parseConditionV2 = async (
let [field, val] = [_field, _val]; let [field, val] = [_field, _val];
switch (filter.comparison_op) { switch (filter.comparison_op) {
case 'eq': case 'eq':
qb = qb.where(field, val); if (qb?.client?.config?.client === 'mysql2') {
// mysql is case-insensitive, turn to case-sensitive
qb = qb.whereRaw('BINARY ?? = ?', [field, val]);
} else {
qb = qb.where(field, val);
}
break; break;
case 'neq': case 'neq':
case 'not': case 'not':
qb = qb.where((nestedQb) => { if (qb?.client?.config?.client === 'mysql2') {
nestedQb // mysql is case-insensitive, turn to case-sensitive
.whereNot(field, val) qb = qb.where((nestedQb) => {
.orWhereNull(customWhereClause ? _val : _field); nestedQb
}); .whereRaw('BINARY ?? != ?', [field, val])
.orWhereNull(customWhereClause ? _val : _field);
});
} else {
qb = qb.where((nestedQb) => {
nestedQb
.whereNot(field, val)
.orWhereNull(customWhereClause ? _val : _field);
});
}
break; break;
case 'like': case 'like':
if (!val) { if (!val) {

Loading…
Cancel
Save