From d4ef0247c621001674ae8c9c9624e86a1a8381a4 Mon Sep 17 00:00:00 2001 From: labkey-matthewb Date: Thu, 2 Jul 2026 14:30:06 -0700 Subject: [PATCH 1/3] fix long standing bug with CASE statements should not need parenthesis when arithmethic or string operates are used in a THEN/ELSE expression. --- query/src/org/labkey/query/sql/SqlBase.g | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/query/src/org/labkey/query/sql/SqlBase.g b/query/src/org/labkey/query/sql/SqlBase.g index 28ad379df35..72c652d9de7 100644 --- a/query/src/org/labkey/query/sql/SqlBase.g +++ b/query/src/org/labkey/query/sql/SqlBase.g @@ -729,15 +729,15 @@ caseExpression ; whenClause - : (WHEN^ logicalExpression THEN! unaryExpression) + : (WHEN^ logicalExpression THEN! valueExpression) ; altWhenClause - : (WHEN^ unaryExpression THEN! unaryExpression) + : (WHEN^ unaryExpression THEN! valueExpression) ; elseClause - : (ELSE^ unaryExpression) + : (ELSE^ valueExpression) ; From dbbaa0ec9be2b85c0cdb291b010a7c05f79328a0 Mon Sep 17 00:00:00 2001 From: labkey-matthewb Date: Thu, 2 Jul 2026 15:01:47 -0700 Subject: [PATCH 2/3] fix long standing bug with CASE statements should not need parenthesis when arithmethic or string operates are used in a THEN/ELSE expression. --- query/src/org/labkey/query/QueryTestCase.jsp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/query/src/org/labkey/query/QueryTestCase.jsp b/query/src/org/labkey/query/QueryTestCase.jsp index a1e2ff0500d..1d856573706 100644 --- a/query/src/org/labkey/query/QueryTestCase.jsp +++ b/query/src/org/labkey/query/QueryTestCase.jsp @@ -911,8 +911,10 @@ d,seven,twelve,day,month,date,duration,guid assertFalse(rs.getColumn(1).isHidden()); assertEquals("0.00", rs.getColumn(1).getFormat()); } - } + }, + // test operators in WHEN expression + new SqlTest("SELECT CASE WHEN 1=1 THEN 'a' || 'b' ELSE CASE WHEN (2=2) THEN 'two' ELSE NULL END END") ); List postgres = List.of( From fbd7979b95089715fdbd34e7bd3b40a5499d26bb Mon Sep 17 00:00:00 2001 From: labkey-matthewb Date: Thu, 2 Jul 2026 15:44:06 -0700 Subject: [PATCH 3/3] fix comment --- query/src/org/labkey/query/QueryTestCase.jsp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/query/src/org/labkey/query/QueryTestCase.jsp b/query/src/org/labkey/query/QueryTestCase.jsp index 1d856573706..684f0569dfd 100644 --- a/query/src/org/labkey/query/QueryTestCase.jsp +++ b/query/src/org/labkey/query/QueryTestCase.jsp @@ -913,8 +913,8 @@ d,seven,twelve,day,month,date,duration,guid } }, - // test operators in WHEN expression - new SqlTest("SELECT CASE WHEN 1=1 THEN 'a' || 'b' ELSE CASE WHEN (2=2) THEN 'two' ELSE NULL END END") + // test operators in THEN expression + new SqlTest("SELECT CASE WHEN 1=1 THEN 'a' || 'b' ELSE 'x' || 'y' END") ); List postgres = List.of(