From 0ed766d9a19761f403b11dbb1edc22be5e2e50b4 Mon Sep 17 00:00:00 2001 From: "grafana-delivery-bot[bot]" <132647405+grafana-delivery-bot[bot]@users.noreply.github.com> Date: Fri, 19 Apr 2024 09:41:40 -0500 Subject: [PATCH] [v10.4.x] Prometheus: Do not throw error for label_join function (#86609) --- .../src/querybuilder/operations.ts | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/packages/grafana-prometheus/src/querybuilder/operations.ts b/packages/grafana-prometheus/src/querybuilder/operations.ts index 3b445efa37e..752bd564eda 100644 --- a/packages/grafana-prometheus/src/querybuilder/operations.ts +++ b/packages/grafana-prometheus/src/querybuilder/operations.ts @@ -201,6 +201,7 @@ export function getOperationDefinitions(): QueryBuilderOperationDef[] { ], defaultParams: ['', ',', ''], renderer: labelJoinRenderer, + explainHandler: labelJoinExplainHandler, addOperationHandler: labelJoinAddOperationHandler, }), createFunction({ id: PromOperationId.Log10 }), @@ -356,11 +357,21 @@ function addNestedQueryHandler(def: QueryBuilderOperationDef, query: PromVisualQ } function labelJoinRenderer(model: QueryBuilderOperation, def: QueryBuilderOperationDef, innerExpr: string) { - if (typeof model.params[1] !== 'string') { - throw 'The separator must be a string'; + const paramZero = model.params[0] ?? ''; + const paramOne = model.params[1] ?? ''; + + const separator = `"${paramOne}"`; + return `${model.id}(${innerExpr}, "${paramZero}", ${separator}, "${model.params.slice(2).join(separator)}")`; +} + +function labelJoinExplainHandler(op: QueryBuilderOperation, def?: QueryBuilderOperationDef): string { + let explainMessage = def?.documentation ?? 'no docs'; + + if (typeof op.params[1] !== 'string') { + explainMessage += ' 🚨🚨🚨 The `separator` must be a string.'; } - const separator = `"${model.params[1]}"`; - return `${model.id}(${innerExpr}, "${model.params[0]}", ${separator}, "${model.params.slice(2).join(separator)}")`; + + return explainMessage; } function labelJoinAddOperationHandler(def: QueryBuilderOperationDef, query: T) {