From 5d3fddf4ce4eb9906cdea4780be5c34fe3cb3260 Mon Sep 17 00:00:00 2001 From: Kamil Kisiela Date: Fri, 9 Aug 2024 12:23:50 +0200 Subject: [PATCH] Optimize get_top_operations_for_types query (#5324) --- .../src/modules/operations/providers/operations-reader.ts | 5 ++--- .../services/api/src/modules/shared/providers/http-client.ts | 3 +-- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/packages/services/api/src/modules/operations/providers/operations-reader.ts b/packages/services/api/src/modules/operations/providers/operations-reader.ts index 3c9b187fe..e88306af1 100644 --- a/packages/services/api/src/modules/operations/providers/operations-reader.ts +++ b/packages/services/api/src/modules/operations/providers/operations-reader.ts @@ -1297,7 +1297,7 @@ export class OperationsReader { > > { const ORs = args.typeNames.map( - typeName => sql`( cd.coordinate = ${typeName} OR cd.coordinate LIKE ${typeName + '.%'} )`, + typeName => sql`( cdi.coordinate = ${typeName} OR cdi.coordinate LIKE ${typeName + '.%'} )`, ); const result = await this.clickHouse.query<{ @@ -1320,14 +1320,13 @@ export class OperationsReader { ${this.createFilter({ target: args.targetId, period: args.period, - extra: [sql`cdi.coordinate NOT LIKE '%.%.%'`], + extra: [sql`cdi.coordinate NOT LIKE '%.%.%'`, sql`(${sql.join(ORs, ' OR ')})`], namespace: 'cdi', })} GROUP BY cdi.hash, cdi.coordinate ORDER by total DESC, cdi.hash ASC LIMIT ${sql.raw( String(args.limit), )} by cdi.coordinate ) as cd - WHERE ${sql.join(ORs, ' OR ')} ) SELECT total, hash, coordinate, ocd.name FROM coordinates as c LEFT JOIN ( diff --git a/packages/services/api/src/modules/shared/providers/http-client.ts b/packages/services/api/src/modules/shared/providers/http-client.ts index 8741a186c..ba993783a 100644 --- a/packages/services/api/src/modules/shared/providers/http-client.ts +++ b/packages/services/api/src/modules/shared/providers/http-client.ts @@ -69,11 +69,10 @@ export class HttpClient { return Promise.resolve(response.body); }, error => { - span.setAttribute('http.response.status_code', error.response.statusCode); - let details: string | null = null; if (error instanceof HTTPError) { + span.setAttribute('http.response.status_code', error.response.statusCode); if (typeof error.response.body === 'string') { details = error.response.body; logger.error(details);