From 37f0d8f7938ee5dbcf899a7f2855ea6dc6dc604e Mon Sep 17 00:00:00 2001 From: Leonardo Falk Date: Wed, 21 Oct 2020 02:18:23 -0300 Subject: [PATCH] fix: ILike operator generally available for any driver (#6945) --- src/query-builder/QueryBuilder.ts | 10 +++++++++- .../repository-find-operators.ts | 6 ------ 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/src/query-builder/QueryBuilder.ts b/src/query-builder/QueryBuilder.ts index 17e4cd3793..6482b6de28 100644 --- a/src/query-builder/QueryBuilder.ts +++ b/src/query-builder/QueryBuilder.ts @@ -15,6 +15,8 @@ import {QueryDeepPartialEntity} from "./QueryPartialEntity"; import {EntityMetadata} from "../metadata/EntityMetadata"; import {ColumnMetadata} from "../metadata/ColumnMetadata"; import {SqljsDriver} from "../driver/sqljs/SqljsDriver"; +import {PostgresDriver} from "../driver/postgres/PostgresDriver"; +import {CockroachDriver} from "../driver/cockroachdb/CockroachDriver"; import {SqlServerDriver} from "../driver/sqlserver/SqlServerDriver"; import {OracleDriver} from "../driver/oracle/OracleDriver"; import {EntitySchema} from "../"; @@ -914,6 +916,8 @@ export abstract class QueryBuilder { * Gets SQL needs to be inserted into final query. */ protected computeFindOperatorExpression(operator: FindOperator, aliasPath: string, parameters: any[]): string { + const { driver } = this.connection; + switch (operator.type) { case "not": if (operator.child) { @@ -932,7 +936,11 @@ export abstract class QueryBuilder { case "equal": return `${aliasPath} = ${parameters[0]}`; case "ilike": - return `${aliasPath} ILIKE ${parameters[0]}`; + if (driver instanceof PostgresDriver || driver instanceof CockroachDriver) { + return `${aliasPath} ILIKE ${parameters[0]}`; + } + + return `UPPER(${aliasPath}) LIKE UPPER(${parameters[0]})`; case "like": return `${aliasPath} LIKE ${parameters[0]}`; case "between": diff --git a/test/functional/repository/find-options-operators/repository-find-operators.ts b/test/functional/repository/find-options-operators/repository-find-operators.ts index 249f2bedd0..b41b1352d6 100644 --- a/test/functional/repository/find-options-operators/repository-find-operators.ts +++ b/test/functional/repository/find-options-operators/repository-find-operators.ts @@ -273,9 +273,6 @@ describe("repository > find options > operators", () => { }))); it("ilike", () => Promise.all(connections.map(async connection => { - if (!(connection.driver instanceof PostgresDriver)) - return; - // insert some fake data const post1 = new Post(); post1.title = "about #1"; @@ -295,9 +292,6 @@ describe("repository > find options > operators", () => { }))); it("not(ilike)", () => Promise.all(connections.map(async connection => { - if (!(connection.driver instanceof PostgresDriver)) - return; - // insert some fake data const post1 = new Post(); post1.title = "about #1";