From 3f2d63b79ef2d68b0494091ee55d4ff86393667c Mon Sep 17 00:00:00 2001 From: ktx-vaidehi <134508096+ktx-vaidehi@users.noreply.github.com> Date: Wed, 1 Jan 2025 18:34:07 +0530 Subject: [PATCH] fix: dashboard drilldown support to logs page, getting ` and query of unions not getting passed properly (#5525) ## Summary by CodeRabbit - **Bug Fixes** - Improved SQL query generation logic for drilldown functionality - Enhanced query construction to handle table aliases more effectively - Sanitized query strings by replacing backticks with double quotes --- .../dashboards/PanelSchemaRenderer.vue | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/web/src/components/dashboards/PanelSchemaRenderer.vue b/web/src/components/dashboards/PanelSchemaRenderer.vue index e636495108..05d8865878 100644 --- a/web/src/components/dashboards/PanelSchemaRenderer.vue +++ b/web/src/components/dashboards/PanelSchemaRenderer.vue @@ -837,10 +837,18 @@ export default defineComponent({ if (!parser) { await importSqlParser(); } - + const ast = await parseQuery(originalQuery, parser); if (!ast) return; + + const tableAliases = ast.from + ?.filter((fromEntry: any) => fromEntry.as) + .map((fromEntry: any) => fromEntry.as); + const aliasClause = tableAliases?.length + ? ` AS ${tableAliases.join(", ")}` + : ""; + const breakdownColumn = breakdown[0]?.column; const breakdownValue = drilldownParams[0]?.seriesName; const whereClause = buildWhereClause( @@ -849,11 +857,13 @@ export default defineComponent({ breakdownValue, ); - const modifiedQuery = + let modifiedQuery = drilldownData.data.logsMode === "auto" - ? `SELECT * FROM "${streamName}" ${whereClause}` + ? `SELECT * FROM "${streamName}"${aliasClause} ${whereClause}` : drilldownData.data.logsQuery; + modifiedQuery = modifiedQuery.replace(/`/g, '"'); + const encodedQuery: any = b64EncodeUnicode(modifiedQuery); const pos = window.location.pathname.indexOf("/web/");