From 0df2b836b15436a2397d6a2202bd049b5cd53de4 Mon Sep 17 00:00:00 2001 From: Fabio Di Stasio Date: Mon, 28 Dec 2020 17:46:23 +0100 Subject: [PATCH] fix: wrong or duplicate fields in some queries --- src/main/libs/clients/MySQLClient.js | 27 ++++++++++++++++++--------- 1 file changed, 18 insertions(+), 9 deletions(-) diff --git a/src/main/libs/clients/MySQLClient.js b/src/main/libs/clients/MySQLClient.js index ccdd1cf5..e4ef0d6a 100644 --- a/src/main/libs/clients/MySQLClient.js +++ b/src/main/libs/clients/MySQLClient.js @@ -145,6 +145,9 @@ export class MySQLClient extends AntaresCore { }; }); + // USERS + // TODO: SELECT `user`, `host`, IF(LENGTH(password)>0, password, authentication_string) AS `password` FROM `mysql`.`user`; + return { name: db.Database, tables: remappedTables, @@ -662,7 +665,7 @@ export class MySQLClient extends AntaresCore { schema: field.db, table: field.table, orgTable: field.orgTable, - type: 'varchar' + type: 'VARCHAR' }; }) : []; @@ -692,13 +695,13 @@ export class MySQLClient extends AntaresCore { let detailedFields = response.length ? selectedFields.map(selField => { - return response.find(field => field.name === selField.name && field.table === selField.table); + return response.find(field => field.name.toLowerCase() === selField.name.toLowerCase() && field.table === selField.table); }).filter(el => !!el) : []; if (selectedFields.length) { detailedFields = detailedFields.map(field => { - const aliasObj = remappedFields.find(resField => resField.orgName === field.name); + const aliasObj = remappedFields.find(resField => resField.orgName === field.name && resField.orgTable === field.table); return { ...field, alias: aliasObj.name || field.name, @@ -709,12 +712,18 @@ export class MySQLClient extends AntaresCore { if (!detailedFields.length) { detailedFields = remappedFields.map(field => { - return { - ...field, - alias: field.name, - tableAlias: field.table - }; - }); + const isInFields = fieldsArr.some(f => field.name.toLowerCase() === f.name.toLowerCase() && field.table === f.table); + + if (!isInFields) { + return { + ...field, + alias: field.name, + tableAlias: field.table + }; + } + else + return false; + }).filter(Boolean); } fieldsArr = fieldsArr ? [...fieldsArr, ...detailedFields] : detailedFields;