diff --git a/frontend/src/components/QueryBuilderV2/utils.ts b/frontend/src/components/QueryBuilderV2/utils.ts index 30d89cfc6a8c..fea21be02bff 100644 --- a/frontend/src/components/QueryBuilderV2/utils.ts +++ b/frontend/src/components/QueryBuilderV2/utils.ts @@ -1,6 +1,6 @@ /* eslint-disable sonarjs/cognitive-complexity */ import { createAggregation } from 'api/v5/queryRange/prepareQueryRangePayloadV5'; -import { OPERATORS } from 'constants/antlrQueryConstants'; +import { NON_VALUE_OPERATORS, OPERATORS } from 'constants/antlrQueryConstants'; import { getOperatorValue } from 'container/QueryBuilder/filters/QueryBuilderSearch/utils'; import { cloneDeep, isEqual, sortBy } from 'lodash-es'; import { IQueryPair } from 'types/antlrQueryTypes'; @@ -87,10 +87,15 @@ export const convertFiltersToExpression = ( return ''; } + const sanitizedOperator = op.trim().toUpperCase(); if (isFunctionOperator(op)) { return `${op}(${key.key}, ${value})`; } + if (NON_VALUE_OPERATORS.includes(sanitizedOperator)) { + return `${key.key} ${op}`; + } + const formattedValue = formatValueForExpression(value, op); return `${key.key} ${op} ${formattedValue}`; }) diff --git a/frontend/src/utils/tokenUtils.ts b/frontend/src/utils/tokenUtils.ts index 3f1eea4c7eea..639d0a2cb4ca 100644 --- a/frontend/src/utils/tokenUtils.ts +++ b/frontend/src/utils/tokenUtils.ts @@ -99,7 +99,7 @@ export function isQueryPairComplete(queryPair: Partial): boolean { export function isFunctionOperator(operator: string): boolean { const functionOperators = Object.values(QUERY_BUILDER_FUNCTIONS); - const sanitizedOperator = operator.trim(); + const sanitizedOperator = operator.trim().toLowerCase(); // Check if it's a direct function operator if (functionOperators.includes(sanitizedOperator)) { return true;