diff --git a/packages/cubejs-athena-driver/driver/AthenaDriver.js b/packages/cubejs-athena-driver/driver/AthenaDriver.js index 4c5d7f6b12f76..ac35b20fa4301 100644 --- a/packages/cubejs-athena-driver/driver/AthenaDriver.js +++ b/packages/cubejs-athena-driver/driver/AthenaDriver.js @@ -2,7 +2,6 @@ const AWS = require('aws-sdk'); const { promisify } = require('util'); const BaseDriver = require('@cubejs-backend/query-orchestrator/driver/BaseDriver'); const SqlString = require('sqlstring'); -const crypto = require('crypto'); const applyParams = (query, params) => { return SqlString.format(query, params); @@ -32,11 +31,17 @@ class AthenaDriver extends BaseDriver { sleep(ms) { return new Promise((resolve) => { setTimeout(() => resolve(), ms); - }) + }); } async query(query, values) { - const queryString = applyParams(query, values); + const queryString = applyParams( + query, + values.map(s => (typeof s === 'string' ? { + toSqlString: () => SqlString.escape(s).replace(/\\\\([_%])/g, '\\$1') + } : s)) + ); + console.log(queryString); const { QueryExecutionId } = await this.athena.startQueryExecutionAsync({ QueryString: queryString, ResultConfiguration: { @@ -84,4 +89,4 @@ class AthenaDriver extends BaseDriver { } } -module.exports = AthenaDriver; \ No newline at end of file +module.exports = AthenaDriver; diff --git a/packages/cubejs-schema-compiler/adapter/PrestodbQuery.js b/packages/cubejs-schema-compiler/adapter/PrestodbQuery.js index 09fb45a652ff2..438f14813656a 100644 --- a/packages/cubejs-schema-compiler/adapter/PrestodbQuery.js +++ b/packages/cubejs-schema-compiler/adapter/PrestodbQuery.js @@ -11,7 +11,7 @@ const GRANULARITY_TO_INTERVAL = { class PrestodbFilter extends BaseFilter { likeIgnoreCase(column, not) { - return `LOWER(${column})${not ? ' NOT' : ''} LIKE CONCAT('%', LOWER(?) ,'%')`; + return `LOWER(${column})${not ? ' NOT' : ''} LIKE CONCAT('%', LOWER(?) ,'%') ESCAPE '\\'`; } castParameter() {