From cf3ad6211af988822e9f6328fb6933ce4b4b887c Mon Sep 17 00:00:00 2001 From: James Ward Date: Wed, 2 Sep 2020 11:46:14 -0400 Subject: [PATCH] fix: pass `ids_` to alias builder to prevent length overflow (#6624) --- src/query-builder/SelectQueryBuilder.ts | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/src/query-builder/SelectQueryBuilder.ts b/src/query-builder/SelectQueryBuilder.ts index c1de0e2f25..9a87ac832a 100644 --- a/src/query-builder/SelectQueryBuilder.ts +++ b/src/query-builder/SelectQueryBuilder.ts @@ -1861,7 +1861,14 @@ export class SelectQueryBuilder extends QueryBuilder implements const columnAlias = this.escape(DriverUtils.buildColumnAlias(this.connection.driver, mainAliasName, primaryColumn.databaseName)); if (!orderBys[columnAlias]) // make sure we aren't overriding user-defined order in inverse direction orderBys[columnAlias] = "ASC"; - return `${distinctAlias}.${columnAlias} as "ids_${DriverUtils.buildColumnAlias(this.connection.driver, mainAliasName, primaryColumn.databaseName)}"`; + + const alias = DriverUtils.buildColumnAlias( + this.connection.driver, + "ids_" + mainAliasName, + primaryColumn.databaseName + ); + + return `${distinctAlias}.${columnAlias} as "${alias}"`; }); rawResults = await new SelectQueryBuilder(this.connection, queryRunner) @@ -1888,7 +1895,13 @@ export class SelectQueryBuilder extends QueryBuilder implements }).join(" AND "); }).join(" OR "); } else { - const ids = rawResults.map(result => result["ids_" + DriverUtils.buildColumnAlias(this.connection.driver, mainAliasName, metadata.primaryColumns[0].databaseName)]); + const alias = DriverUtils.buildColumnAlias( + this.connection.driver, + "ids_" + mainAliasName, + metadata.primaryColumns[0].databaseName + ); + + const ids = rawResults.map(result => result[alias]); const areAllNumbers = ids.every((id: any) => typeof id === "number"); if (areAllNumbers) { // fixes #190. if all numbers then its safe to perform query without parameter