Skip to content

Commit f6b87e3

Browse files
perf: improve SapQueryRunner performance (#10198)
Use async API exposed by SAP driver Co-authored-by: Lukasz Otczyk <[email protected]>
1 parent bafcd17 commit f6b87e3

File tree

1 file changed

+17
-8
lines changed

1 file changed

+17
-8
lines changed

src/driver/sap/SapQueryRunner.ts

Lines changed: 17 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -202,15 +202,24 @@ export class SapQueryRunner extends BaseQueryRunner implements QueryRunner {
202202
const queryStartTime = +new Date()
203203
const isInsertQuery = query.substr(0, 11) === "INSERT INTO"
204204

205-
statement = databaseConnection.prepare(query)
205+
if (parameters?.some(Array.isArray)) {
206+
statement = await promisify(
207+
databaseConnection.prepare.bind(databaseConnection),
208+
)(query)
209+
}
206210

207-
const raw = await new Promise<any>((ok, fail) => {
208-
statement.exec(parameters, (err: any, raw: any) =>
209-
err
210-
? fail(new QueryFailedError(query, parameters, err))
211-
: ok(raw),
212-
)
213-
})
211+
let raw: any
212+
try {
213+
raw = statement
214+
? await promisify(statement.exec.bind(statement))(
215+
parameters,
216+
)
217+
: await promisify(
218+
databaseConnection.exec.bind(databaseConnection),
219+
)(query, parameters, {})
220+
} catch (err) {
221+
throw new QueryFailedError(query, parameters, err)
222+
}
214223

215224
// log slow queries if maxQueryExecution time is set
216225
const maxQueryExecutionTime =

0 commit comments

Comments
 (0)