Skip to content

Commit f17559e

Browse files
authored
Added support for multi-if in TDS context and test (#4321)
1 parent 1ee1896 commit f17559e

File tree

2 files changed

+22
-1
lines changed
  • legend-engine-core/legend-engine-core-pure/legend-engine-pure-code-functions-relation/legend-engine-pure-functions-relation-pure/src/main/resources/core_functions_relation/relation/tests
  • legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-generation/legend-engine-xt-relationalStore-pure/legend-engine-xt-relationalStore-core-pure/src/main/resources/core_relational/relational/pureToSQLQuery

2 files changed

+22
-1
lines changed

legend-engine-core/legend-engine-core-pure/legend-engine-pure-code-functions-relation/legend-engine-pure-functions-relation-pure/src/main/resources/core_functions_relation/relation/tests/composition.pure

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1324,4 +1324,25 @@ function <<PCT.test, PCTRelationQualifier.relation, PCTCoreQualifier.variant>> m
13241324
Class <<access.private>> meta::pure::functions::relation::tests::composition::Person
13251325
{
13261326
<<equality.Key>> name: String[1];
1327+
}
1328+
1329+
function <<PCT.test, PCTRelationQualifier.relation>> meta::pure::functions::relation::tests::composition::testMultiIfTDS<T|m>(f:Function<{Function<{->T[m]}>[1]->T[m]}>[1]):Boolean[1]
1330+
{
1331+
let expr = {
1332+
| #TDS
1333+
id, resA, resB
1334+
1, a, b
1335+
2, aa, bb
1336+
3, aaa, bbb
1337+
#->extend(~val : x | if([pair(|$x.id == 1, |$x.resA), pair(|$x.id == 2, |$x.resB)], |$x.resB));
1338+
};
1339+
1340+
let res = $f->eval($expr);
1341+
1342+
assertEquals('#TDS\n'+
1343+
' id,resA,resB,val\n'+
1344+
' 1,a,b,a\n'+
1345+
' 2,aa,bb,bb\n'+
1346+
' 3,aaa,bbb,bbb\n'+
1347+
'#', $res->sort([~id->ascending()])->toString());
13271348
}

legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-generation/legend-engine-xt-relationalStore-pure/legend-engine-xt-relationalStore-core-pure/src/main/resources/core_relational/relational/pureToSQLQuery/pureToSQLQuery.pure

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6436,7 +6436,7 @@ function <<access.private>> meta::relational::functions::pureToSqlQuery::process
64366436
let paths = $mainQuery.select->cast(@TdsSelectSqlQuery).paths;
64376437

64386438
// todo this should be the behavior, but just scoping variant to reduce scope of change
6439-
let newElement = if($expressionToRoute->isVariantInput($vars, $state),
6439+
let newElement = if($expressionToRoute->isVariantInput($vars, $state) || ($expressionToRoute->instanceOf(FunctionExpression) && $expressionToRoute->cast(@FunctionExpression).func == if_Pair_MANY__Function_1__T_m_),
64406440
|
64416441
let select = $mainQuery.select;
64426442
$expressionToRoute->cast(@FunctionExpression)->processFunctionExpression($currentPropertyMapping, ^$mainQuery(select = ^$select(columns = [], filteringOperation = []), parent = $mainQuery), $vars, $state, $joinType, $nodeId, $aggFromMap, $context->shift(), $extensions)->cast(@OperationWithParentPropertyMapping).element->cast(@SelectWithCursor).select.columns->toOne();,

0 commit comments

Comments
 (0)