diff --git a/legend-engine-core/legend-engine-core-pure/legend-engine-pure-code-compiled-core/src/main/resources/core/pure/binding/protocols/pure/vX_X_X/extension/extension.pure b/legend-engine-core/legend-engine-core-pure/legend-engine-pure-code-compiled-core/src/main/resources/core/pure/binding/protocols/pure/vX_X_X/extension/extension.pure index 18df907e5dd..3eed5e02508 100644 --- a/legend-engine-core/legend-engine-core-pure/legend-engine-pure-code-compiled-core/src/main/resources/core/pure/binding/protocols/pure/vX_X_X/extension/extension.pure +++ b/legend-engine-core/legend-engine-core-pure/legend-engine-pure-code-compiled-core/src/main/resources/core/pure/binding/protocols/pure/vX_X_X/extension/extension.pure @@ -21,11 +21,11 @@ function meta::protocols::pure::vX_X_X::external::shared::format::serializerExte { ^meta::protocols::pure::vX_X_X::extension::SerializerExtension_vX_X_X( transfers_executionPlan_transformNode = - {mapping:Mapping[1], extensions:Extension[*] | + {extensions:Extension[*] | [ - d:meta::external::format::shared::executionPlan::ExternalFormatExternalizeExecutionNode[1] | transformExternalFormatExternalizeExecutionNode($d, $mapping, $extensions), - s:meta::external::format::shared::executionPlan::ExternalFormatInternalizeExecutionNode[1] | transformExternalFormatInternalizeExecutionNode($s, $mapping, $extensions), - t:meta::external::format::shared::executionPlan::ExternalFormatExternalizeTDSExecutionNode[1] | transformExternalFormatExternalizeTDSExecutionNode($t, $mapping, $extensions) + d:meta::external::format::shared::executionPlan::ExternalFormatExternalizeExecutionNode[1] | transformExternalFormatExternalizeExecutionNode($d, $extensions), + s:meta::external::format::shared::executionPlan::ExternalFormatInternalizeExecutionNode[1] | transformExternalFormatInternalizeExecutionNode($s, $extensions), + t:meta::external::format::shared::executionPlan::ExternalFormatExternalizeTDSExecutionNode[1] | transformExternalFormatExternalizeTDSExecutionNode($t, $extensions) ] } diff --git a/legend-engine-core/legend-engine-core-pure/legend-engine-pure-code-compiled-core/src/main/resources/core/pure/binding/protocols/pure/vX_X_X/transfers/executionPlan.pure b/legend-engine-core/legend-engine-core-pure/legend-engine-pure-code-compiled-core/src/main/resources/core/pure/binding/protocols/pure/vX_X_X/transfers/executionPlan.pure index 006ad0a71dc..7ef53fe7c7c 100644 --- a/legend-engine-core/legend-engine-core-pure/legend-engine-pure-code-compiled-core/src/main/resources/core/pure/binding/protocols/pure/vX_X_X/transfers/executionPlan.pure +++ b/legend-engine-core/legend-engine-core-pure/legend-engine-pure-code-compiled-core/src/main/resources/core/pure/binding/protocols/pure/vX_X_X/transfers/executionPlan.pure @@ -12,16 +12,17 @@ // See the License for the specific language governing permissions and // limitations under the License. +import meta::protocols::pure::vX_X_X::transformation::fromPureGraph::executionPlan::*; import meta::protocols::pure::vX_X_X::metamodel::executionPlan::*; import meta::protocols::pure::vX_X_X::transformation::fromPureGraph::external::shared::format::*; import meta::pure::mapping::*; import meta::pure::extension::*; -function meta::protocols::pure::vX_X_X::transformation::fromPureGraph::external::shared::format::transformExternalFormatExternalizeExecutionNode(node:meta::external::format::shared::executionPlan::ExternalFormatExternalizeExecutionNode[1], mapping:meta::pure::mapping::Mapping[1], extensions:Extension[*]): ExecutionNode[1] +function meta::protocols::pure::vX_X_X::transformation::fromPureGraph::external::shared::format::transformExternalFormatExternalizeExecutionNode(node:meta::external::format::shared::executionPlan::ExternalFormatExternalizeExecutionNode[1], extensions:Extension[*]): ExecutionNode[1] { ^meta::protocols::pure::vX_X_X::metamodel::external::shared::format::executionPlan::ExternalFormatExternalizeExecutionNode( _type = 'externalFormatExternalize', - resultType = $node.resultType->meta::protocols::pure::vX_X_X::transformation::fromPureGraph::executionPlan::transformResultType($mapping, $extensions), + resultType = $node.resultType->meta::protocols::pure::vX_X_X::transformation::fromPureGraph::executionPlan::transformResultType($extensions), resultSizeRange = $node.resultSizeRange->map(s| $s->meta::protocols::pure::vX_X_X::transformation::fromPureGraph::domain::transformMultiplicity()), checked = $node.checked, binding = $node.binding->elementToPath(), @@ -29,21 +30,21 @@ function meta::protocols::pure::vX_X_X::transformation::fromPureGraph::external: ); } -function meta::protocols::pure::vX_X_X::transformation::fromPureGraph::external::shared::format::transformExternalFormatExternalizeTDSExecutionNode(node:meta::external::format::shared::executionPlan::ExternalFormatExternalizeTDSExecutionNode[1], mapping:meta::pure::mapping::Mapping[1], extensions:Extension[*]): ExecutionNode[1] +function meta::protocols::pure::vX_X_X::transformation::fromPureGraph::external::shared::format::transformExternalFormatExternalizeTDSExecutionNode(node:meta::external::format::shared::executionPlan::ExternalFormatExternalizeTDSExecutionNode[1], extensions:Extension[*]): ExecutionNode[1] { ^meta::protocols::pure::vX_X_X::metamodel::external::shared::format::executionPlan::ExternalFormatExternalizeTDSExecutionNode( _type = 'externalFormatExternalizeTDS', - resultType = $node.resultType->meta::protocols::pure::vX_X_X::transformation::fromPureGraph::executionPlan::transformResultType($mapping, $extensions), + resultType = $node.resultType->meta::protocols::pure::vX_X_X::transformation::fromPureGraph::executionPlan::transformResultType($extensions), resultSizeRange = $node.resultSizeRange->map(s| $s->meta::protocols::pure::vX_X_X::transformation::fromPureGraph::domain::transformMultiplicity()), contentType = $node.contentType ); } -function meta::protocols::pure::vX_X_X::transformation::fromPureGraph::external::shared::format::transformExternalFormatInternalizeExecutionNode(node:meta::external::format::shared::executionPlan::ExternalFormatInternalizeExecutionNode[1], mapping:meta::pure::mapping::Mapping[1], extensions:Extension[*]): ExecutionNode[1] +function meta::protocols::pure::vX_X_X::transformation::fromPureGraph::external::shared::format::transformExternalFormatInternalizeExecutionNode(node:meta::external::format::shared::executionPlan::ExternalFormatInternalizeExecutionNode[1], extensions:Extension[*]): ExecutionNode[1] { ^meta::protocols::pure::vX_X_X::metamodel::external::shared::format::executionPlan::ExternalFormatInternalizeExecutionNode( _type = 'externalFormatInternalize', - resultType = $node.resultType->meta::protocols::pure::vX_X_X::transformation::fromPureGraph::executionPlan::transformResultType($mapping, $extensions), + resultType = $node.resultType->meta::protocols::pure::vX_X_X::transformation::fromPureGraph::executionPlan::transformResultType($extensions), resultSizeRange = $node.resultSizeRange->map(s| $s->meta::protocols::pure::vX_X_X::transformation::fromPureGraph::domain::transformMultiplicity()), tree = $node.tree->map(t| $t->meta::protocols::pure::vX_X_X::transformation::fromPureGraph::valueSpecification::transformGraphFetchTree([], ^Map>(), $extensions))->cast(@meta::protocols::pure::vX_X_X::metamodel::valueSpecification::raw::RootGraphFetchTree), binding = $node.binding->elementToPath(), diff --git a/legend-engine-core/legend-engine-core-pure/legend-engine-pure-code-compiled-core/src/main/resources/core/pure/protocol/vX_X_X/extension/extension.pure b/legend-engine-core/legend-engine-core-pure/legend-engine-pure-code-compiled-core/src/main/resources/core/pure/protocol/vX_X_X/extension/extension.pure index 8233013c718..e1649e27804 100644 --- a/legend-engine-core/legend-engine-core-pure/legend-engine-pure-code-compiled-core/src/main/resources/core/pure/protocol/vX_X_X/extension/extension.pure +++ b/legend-engine-core/legend-engine-core-pure/legend-engine-pure-code-compiled-core/src/main/resources/core/pure/protocol/vX_X_X/extension/extension.pure @@ -37,10 +37,10 @@ Class meta::protocols::pure::vX_X_X::extension::SerializerExtension_vX_X_X exten transfers_valueSpecification_transformAny : Function<{String[*],Map>[1], Multiplicity[1], FunctionExpression[0..1], Boolean[1], meta::pure::extension::Extension[*]->Function<{Nil[1]->meta::protocols::pure::vX_X_X::metamodel::valueSpecification::ValueSpecification[1]}>[*]}>[0..1]; - transfers_executionPlan_transformNode : Function<{Mapping[1], meta::pure::extension::Extension[*] -> Function<{Nil[1]->meta::protocols::pure::vX_X_X::metamodel::executionPlan::ExecutionNode[1]}>[*]}>[0..1]; + transfers_executionPlan_transformNode : Function<{meta::pure::extension::Extension[*] -> Function<{Nil[1]->meta::protocols::pure::vX_X_X::metamodel::executionPlan::ExecutionNode[1]}>[*]}>[0..1]; transfers_executionPlan_transformNode_GraphFetchM2MExecutionNode : Function<{Nil[1]->meta::protocols::pure::vX_X_X::metamodel::store::Store[1]}>[*]; transfers_executionPlan_transformNode_StoreStreamReadingExecutionNode : Function<{Nil[1]->meta::protocols::pure::vX_X_X::metamodel::store::Store[1]}>[*]; - transfers_executionPlan_transformResultType : Function<{Mapping[1], meta::pure::extension::Extension[*] -> Function<{Nil[1]->meta::protocols::pure::vX_X_X::metamodel::executionPlan::ResultType[1]}>[*]}>[0..1]; + transfers_executionPlan_transformResultType : Function<{meta::pure::extension::Extension[*] -> Function<{Nil[1]->meta::protocols::pure::vX_X_X::metamodel::executionPlan::ResultType[1]}>[*]}>[0..1]; transfers_executionPlan_transformSetImplementation : PairBoolean[1]}>, Function<{PropertyMapping[1]->Map>[1]}>>[0..1]; transfers_store_transformStore : Function<{Nil[1]->meta::protocols::pure::vX_X_X::metamodel::store::Store[1]}>[*]; diff --git a/legend-engine-core/legend-engine-core-pure/legend-engine-pure-code-compiled-core/src/main/resources/core/pure/protocol/vX_X_X/transfers/executionPlan.pure b/legend-engine-core/legend-engine-core-pure/legend-engine-pure-code-compiled-core/src/main/resources/core/pure/protocol/vX_X_X/transfers/executionPlan.pure index 7f3deca94a3..6ae68ebd2ba 100644 --- a/legend-engine-core/legend-engine-core-pure/legend-engine-pure-code-compiled-core/src/main/resources/core/pure/protocol/vX_X_X/transfers/executionPlan.pure +++ b/legend-engine-core/legend-engine-core-pure/legend-engine-pure-code-compiled-core/src/main/resources/core/pure/protocol/vX_X_X/transfers/executionPlan.pure @@ -13,6 +13,7 @@ // limitations under the License. ###Pure +import meta::protocols::pure::vX_X_X::transformation::fromPureGraph::mapping::xStore::*; import meta::pure::executionPlan::*; import meta::protocols::pure::vX_X_X::transformation::fromPureGraph::runtime::*; import meta::protocols::*; @@ -27,20 +28,20 @@ function meta::protocols::pure::vX_X_X::transformation::fromPureGraph::execution serializer = ^Protocol(name='pure', version='vX_X_X'), templateFunctions = $sourcePlan.processingTemplateFunctions, kerberos = $sourcePlan.kerberos, - rootExecutionNode = $sourcePlan.rootExecutionNode->transformNode($sourcePlan.mapping, $extensions), + rootExecutionNode = $sourcePlan.rootExecutionNode->transformNode($extensions), globalImplementationSupport = $sourcePlan.globalImplementationSupport->map(impl | $impl->transformPlatformGlobalImplementation()) ) } -function meta::protocols::pure::vX_X_X::transformation::fromPureGraph::executionPlan::transformNode(node:meta::pure::executionPlan::ExecutionNode[1], mapping:meta::pure::mapping::Mapping[1], extensions:meta::pure::extension::Extension[*]):meta::protocols::pure::vX_X_X::metamodel::executionPlan::ExecutionNode[1] +function meta::protocols::pure::vX_X_X::transformation::fromPureGraph::executionPlan::transformNode(node:meta::pure::executionPlan::ExecutionNode[1], extensions:meta::pure::extension::Extension[*]):meta::protocols::pure::vX_X_X::metamodel::executionPlan::ExecutionNode[1] { - let n = $node->match($extensions.serializerExtension('vX_X_X')->cast(@meta::protocols::pure::vX_X_X::extension::SerializerExtension_vX_X_X).transfers_executionPlan_transformNode->map(f|$f->eval($mapping, $extensions))->concatenate( + let n = $node->match($extensions.serializerExtension('vX_X_X')->cast(@meta::protocols::pure::vX_X_X::extension::SerializerExtension_vX_X_X).transfers_executionPlan_transformNode->map(f|$f->eval($extensions))->concatenate( [ rel:meta::external::store::model::ModelToModelExecutionNode[1]| ^meta::protocols::pure::vX_X_X::metamodel::executionPlan::ModelToModelExecutionNode( _type = 'm2m', - resultType = $rel.resultType->meta::protocols::pure::vX_X_X::transformation::fromPureGraph::executionPlan::transformResultType($mapping, $extensions), + resultType = $rel.resultType->meta::protocols::pure::vX_X_X::transformation::fromPureGraph::executionPlan::transformResultType($extensions), resultSizeRange = $rel.resultSizeRange->isEmpty()->if(|[],|$rel.resultSizeRange->toOne()->meta::protocols::pure::vX_X_X::transformation::fromPureGraph::domain::transformMultiplicity()), func = $rel.fd->meta::protocols::pure::vX_X_X::transformation::fromPureGraph::transformLambda($extensions), jsonPropertyPaths = $rel.jsonPropertyPaths->map(j|$j->meta::protocols::pure::vX_X_X::transformation::fromPureGraph::transformLambda($extensions)), @@ -52,48 +53,48 @@ function meta::protocols::pure::vX_X_X::transformation::fromPureGraph::execution platform:meta::pure::executionPlan::PureExpressionPlatformExecutionNode[1]| ^meta::protocols::pure::vX_X_X::metamodel::executionPlan::PureExpressionPlatformExecutionNode( _type='pureExp', - resultType=$platform.resultType->transformResultType($mapping, $extensions), + resultType=$platform.resultType->transformResultType($extensions), pure = $platform.expression->meta::protocols::pure::vX_X_X::transformation::fromPureGraph::valueSpecification::transformValueSpecification([], newMap([]->cast(@Pair>)), $extensions) ), platform:meta::pure::executionPlan::PlatformUnionExecutionNode[1]| ^meta::protocols::pure::vX_X_X::metamodel::executionPlan::PlatformUnionExecutionNode( _type='platformUnion', isChildrenExecutionParallelizable = $platform.isChildrenExecutionParallelizable, - resultType=$platform.resultType->transformResultType($mapping, $extensions) + resultType=$platform.resultType->transformResultType($extensions) ), platform:meta::pure::executionPlan::PlatformMergeExecutionNode[1]| ^meta::protocols::pure::vX_X_X::metamodel::executionPlan::PlatformMergeExecutionNode( _type='platformMerge', - resultType=$platform.resultType->transformResultType($mapping, $extensions) + resultType=$platform.resultType->transformResultType($extensions) ), cons:meta::pure::executionPlan::ConstantExecutionNode[1]| ^meta::protocols::pure::vX_X_X::metamodel::executionPlan::ConstantExecutionNode( _type='constant', - resultType=$cons.resultType->transformResultType($mapping, $extensions), + resultType=$cons.resultType->transformResultType($extensions), values=$cons.values->map(v | $v->meta::protocols::pure::vX_X_X::transformation::fromPureGraph::valueSpecification::transformAny([], newMap([]->cast(@Pair>)), PureOne, $extensions)) ), seq:meta::pure::executionPlan::SequenceExecutionNode[1]| ^meta::protocols::pure::vX_X_X::metamodel::executionPlan::SequenceExecutionNode( _type = 'sequence', - resultType = $seq.resultType->transformResultType($mapping, $extensions), + resultType = $seq.resultType->transformResultType($extensions), resultSizeRange = $seq.resultSizeRange->isEmpty()->if(|[],|$seq.resultSizeRange->toOne()->meta::protocols::pure::vX_X_X::transformation::fromPureGraph::domain::transformMultiplicity()) ), seq:meta::pure::executionPlan::MultiResultSequenceExecutionNode[1]| ^meta::protocols::pure::vX_X_X::metamodel::executionPlan::MultiResultSequenceExecutionNode( _type = 'multiResultSequence', - resultType = $seq.resultType->transformResultType($mapping, $extensions), + resultType = $seq.resultType->transformResultType($extensions), resultSizeRange = $seq.resultSizeRange->isEmpty()->if(|[],|$seq.resultSizeRange->toOne()->meta::protocols::pure::vX_X_X::transformation::fromPureGraph::domain::transformMultiplicity()) ), agg:meta::pure::mapping::aggregationAware::AggregationAwareExecutionNode[1]| ^meta::protocols::pure::vX_X_X::metamodel::executionPlan::AggregationAwareExecutionNode( _type = 'aggregationAware', - resultType = $agg.resultType->transformResultType($mapping, $extensions), + resultType = $agg.resultType->transformResultType($extensions), aggregationAwareActivity = $agg.aggregationAwareActivity ), alloc:meta::pure::executionPlan::AllocationExecutionNode[1]| ^meta::protocols::pure::vX_X_X::metamodel::executionPlan::AllocationExecutionNode( _type = 'allocation', - resultType = $alloc.resultType->transformResultType($mapping, $extensions), + resultType = $alloc.resultType->transformResultType($extensions), resultSizeRange = $alloc.resultSizeRange->isEmpty()->if(|[],|$alloc.resultSizeRange->toOne()->meta::protocols::pure::vX_X_X::transformation::fromPureGraph::domain::transformMultiplicity()), varName = $alloc.varName, realizeInMemory = $alloc.realizeInMemory @@ -101,7 +102,7 @@ function meta::protocols::pure::vX_X_X::transformation::fromPureGraph::execution exp:meta::pure::executionPlan::FunctionParametersValidationNode[1]| ^meta::protocols::pure::vX_X_X::metamodel::executionPlan::FunctionParametersValidationNode( _type = 'function-parameters-validation', - resultType = $exp.resultType->transformResultType($mapping, $extensions), + resultType = $exp.resultType->transformResultType($extensions), functionParameters = $exp.functionParameters->map(p | ^meta::protocols::pure::vX_X_X::metamodel::valueSpecification::Variable(_type='var', name=$p.name, supportsStream=$p.supportsStream, class=$p.type->elementToPath(), multiplicity=$p.multiplicity->isEmpty()->if(| [],| $p.multiplicity->toOne()->meta::protocols::pure::vX_X_X::transformation::fromPureGraph::domain::transformMultiplicity()))), parameterValidationContext = $exp.parameterValidationContext->map(p | $p->match([ e:meta::pure::executionPlan::EnumValidationContext[1] | ^meta::protocols::pure::vX_X_X::metamodel::executionPlan::EnumValidationContext(varName = $e.varName, validEnumValues = $e.validEnumValues, _type = 'enumValidationContext') @@ -112,14 +113,14 @@ function meta::protocols::pure::vX_X_X::transformation::fromPureGraph::execution ^meta::protocols::pure::vX_X_X::metamodel::executionPlan::graphFetch::StoreMappingGlobalGraphFetchExecutionNode ( _type = 'storeMappingGlobalGraphFetchExecutionNode', - resultType = $g.resultType->transformResultType($mapping, $extensions), + resultType = $g.resultType->transformResultType($extensions), resultSizeRange = $g.resultSizeRange->isEmpty()->if(|[],|$g.resultSizeRange->toOne()->meta::protocols::pure::vX_X_X::transformation::fromPureGraph::domain::transformMultiplicity()), graphFetchTree = $g.graphFetchTree->meta::protocols::pure::vX_X_X::transformation::fromPureGraph::valueSpecification::transformGraphFetchTree([], newMap([]->cast(@Pair>)), $extensions), store = $g.store->elementToPath(), - children = $g.children->map(s | $s->transformNode($mapping, $extensions))->cast(@meta::protocols::pure::vX_X_X::metamodel::executionPlan::graphFetch::GlobalGraphFetchExecutionNode), - localGraphFetchExecutionNode = $g.localGraphFetchExecutionNode->transformNode($mapping, $extensions)->cast(@meta::protocols::pure::vX_X_X::metamodel::executionPlan::graphFetch::LocalGraphFetchExecutionNode), + children = $g.children->map(s | $s->transformNode($extensions))->cast(@meta::protocols::pure::vX_X_X::metamodel::executionPlan::graphFetch::GlobalGraphFetchExecutionNode), + localGraphFetchExecutionNode = $g.localGraphFetchExecutionNode->transformNode($extensions)->cast(@meta::protocols::pure::vX_X_X::metamodel::executionPlan::graphFetch::LocalGraphFetchExecutionNode), parentIndex = $g.parentIndex, - xStorePropertyMapping = $g.xStorePropertyMapping->map(x | $x->meta::protocols::pure::vX_X_X::transformation::fromPureGraph::mapping::xStore::transformXStorePropertyMapping($mapping, $extensions)), + xStorePropertyMapping = $g.xStorePropertyMapping->map(x | $x->meta::protocols::pure::vX_X_X::transformation::fromPureGraph::mapping::xStore::transformXStorePropertyMapping($extensions)), enableConstraints = $g.enableConstraints, checked = $g.checked, xStorePropertyFetchDetails = $g.xStorePropertyFetchDetails->map(x | @@ -142,11 +143,11 @@ function meta::protocols::pure::vX_X_X::transformation::fromPureGraph::execution ^meta::protocols::pure::vX_X_X::metamodel::executionPlan::graphFetch::PlatformGlobalGraphFetchExecutionNode ( _type = 'platformGlobalGraphFetchExecutionNode', - resultType = $g.resultType->transformResultType($mapping, $extensions), + resultType = $g.resultType->transformResultType($extensions), resultSizeRange = $g.resultSizeRange->isEmpty()->if(|[],|$g.resultSizeRange->toOne()->meta::protocols::pure::vX_X_X::transformation::fromPureGraph::domain::transformMultiplicity()), graphFetchTree = $g.graphFetchTree->meta::protocols::pure::vX_X_X::transformation::fromPureGraph::valueSpecification::transformGraphFetchTree([], newMap([]->cast(@Pair>)), $extensions), - children = $g.children->map(s | $s->transformNode($mapping, $extensions))->cast(@meta::protocols::pure::vX_X_X::metamodel::executionPlan::graphFetch::GlobalGraphFetchExecutionNode), - localGraphFetchExecutionNode = $g.localGraphFetchExecutionNode->transformNode($mapping, $extensions)->cast(@meta::protocols::pure::vX_X_X::metamodel::executionPlan::graphFetch::LocalGraphFetchExecutionNode), + children = $g.children->map(s | $s->transformNode($extensions))->cast(@meta::protocols::pure::vX_X_X::metamodel::executionPlan::graphFetch::GlobalGraphFetchExecutionNode), + localGraphFetchExecutionNode = $g.localGraphFetchExecutionNode->transformNode($extensions)->cast(@meta::protocols::pure::vX_X_X::metamodel::executionPlan::graphFetch::LocalGraphFetchExecutionNode), parentIndex = $g.parentIndex, enableConstraints = $g.enableConstraints, checked = $g.checked, @@ -157,7 +158,7 @@ function meta::protocols::pure::vX_X_X::transformation::fromPureGraph::execution ^meta::protocols::pure::vX_X_X::metamodel::executionPlan::graphFetch::PlatformPrimitiveQualifierLocalGraphFetchExecutionNode ( _type = 'platformPrimitiveQualifierLocalGraphFetchExecutionNode', - resultType = $l.resultType->transformResultType($mapping, $extensions), + resultType = $l.resultType->transformResultType($extensions), resultSizeRange = $l.resultSizeRange->isEmpty()->if(|[],|$l.resultSizeRange->toOne()->meta::protocols::pure::vX_X_X::transformation::fromPureGraph::domain::transformMultiplicity()), nodeIndex = $l.nodeIndex, parentIndex = $l.parentIndex, @@ -168,28 +169,28 @@ function meta::protocols::pure::vX_X_X::transformation::fromPureGraph::execution ( _type = 'error', message = $e.message, - resultType = $e.resultType->transformResultType($mapping, $extensions), + resultType = $e.resultType->transformResultType($extensions), resultSizeRange = $e.resultSizeRange->isEmpty()->if(|[],|$e.resultSizeRange->toOne()->meta::protocols::pure::vX_X_X::transformation::fromPureGraph::domain::transformMultiplicity()) ), f:meta::pure::executionPlan::FreeMarkerConditionalExecutionNode[1]| ^meta::protocols::pure::vX_X_X::metamodel::executionPlan::FreeMarkerConditionalExecutionNode( freeMarkerBooleanExpression = $f.freeMarkerBooleanExpression, - trueBlock = $f.trueBlock->transformNode($mapping, $extensions), - falseBlock = if($f.falseBlock->isEmpty(),|[],|$f.falseBlock->toOne()->transformNode($mapping, $extensions)), + trueBlock = $f.trueBlock->transformNode($extensions), + falseBlock = if($f.falseBlock->isEmpty(),|[],|$f.falseBlock->toOne()->transformNode($extensions)), _type = 'freeMarkerConditionalExecutionNode', - resultType = $f.resultType->transformResultType($mapping, $extensions), + resultType = $f.resultType->transformResultType($extensions), resultSizeRange = $f.resultSizeRange->isEmpty()->if(|[],|$f.resultSizeRange->toOne()->meta::protocols::pure::vX_X_X::transformation::fromPureGraph::domain::transformMultiplicity()) ), v:meta::pure::executionPlan::VariableResolutionExecutionNode[1]| ^meta::protocols::pure::vX_X_X::metamodel::executionPlan::VariableResolutionExecutionNode( _type = 'varResolution', - resultType = $v.resultType->meta::protocols::pure::vX_X_X::transformation::fromPureGraph::executionPlan::transformResultType($mapping, $extensions), + resultType = $v.resultType->meta::protocols::pure::vX_X_X::transformation::fromPureGraph::executionPlan::transformResultType($extensions), varName = $v.varName ), f:meta::pure::mapping::modelToModel::graphFetch::executionPlan::StoreStreamReadingExecutionNode[1]| ^meta::protocols::pure::vX_X_X::metamodel::executionPlan::graphFetch::store::inMemory::StoreStreamReadingExecutionNode( _type = 'storeStreamReading', - resultType = $f.resultType->transformResultType($mapping, $extensions), + resultType = $f.resultType->transformResultType($extensions), resultSizeRange = $f.resultSizeRange->isEmpty()->if(|[],|$f.resultSizeRange->toOne()->meta::protocols::pure::vX_X_X::transformation::fromPureGraph::domain::transformMultiplicity()), graphFetchTree = $f.graphFetchTree->meta::protocols::pure::vX_X_X::transformation::fromPureGraph::valueSpecification::transformGraphFetchTree([], newMap([]->cast(@Pair>)), $extensions)->cast(@meta::protocols::pure::vX_X_X::metamodel::valueSpecification::raw::RootGraphFetchTree), store = $f.store->match($extensions.serializerExtension('vX_X_X')->cast(@meta::protocols::pure::vX_X_X::extension::SerializerExtension_vX_X_X).transfers_executionPlan_transformNode_StoreStreamReadingExecutionNode->concatenate([ @@ -202,46 +203,46 @@ function meta::protocols::pure::vX_X_X::transformation::fromPureGraph::execution f:meta::pure::mapping::modelToModel::graphFetch::executionPlan::InMemoryCrossStoreGraphFetchExecutionNode[1]| ^meta::protocols::pure::vX_X_X::metamodel::executionPlan::graphFetch::store::inMemory::InMemoryCrossStoreGraphFetchExecutionNode( _type = 'inMemoryCrossStoreGraphFetch', - resultType = $f.resultType->transformResultType($mapping, $extensions), + resultType = $f.resultType->transformResultType($extensions), resultSizeRange = $f.resultSizeRange->isEmpty()->if(|[],|$f.resultSizeRange->toOne()->meta::protocols::pure::vX_X_X::transformation::fromPureGraph::domain::transformMultiplicity()), nodeIndex = $f.nodeIndex, parentIndex = $f.parentIndex, graphFetchTree = $f.graphFetchTree->meta::protocols::pure::vX_X_X::transformation::fromPureGraph::valueSpecification::transformGraphFetchTree([], newMap([]->cast(@Pair>)), $extensions), batchSize = $f.batchSize, checked = $f.checked, - xStorePropertyMapping = $f.xStorePropertyMapping->meta::protocols::pure::vX_X_X::transformation::fromPureGraph::mapping::xStore::transformXStorePropertyMapping($mapping, $extensions), + xStorePropertyMapping = $f.xStorePropertyMapping->meta::protocols::pure::vX_X_X::transformation::fromPureGraph::mapping::xStore::transformXStorePropertyMapping($extensions), supportsBatching = $f.supportsBatching, - children = $f.children->map(x | $x->transformNode($mapping, $extensions))->cast(@meta::protocols::pure::vX_X_X::metamodel::executionPlan::graphFetch::store::inMemory::InMemoryGraphFetchExecutionNode) + children = $f.children->map(x | $x->transformNode($extensions))->cast(@meta::protocols::pure::vX_X_X::metamodel::executionPlan::graphFetch::store::inMemory::InMemoryGraphFetchExecutionNode) ), f:meta::pure::mapping::modelToModel::graphFetch::executionPlan::InMemoryRootGraphFetchExecutionNode[1]| ^meta::protocols::pure::vX_X_X::metamodel::executionPlan::graphFetch::store::inMemory::InMemoryRootGraphFetchExecutionNode( _type = 'inMemoryRootGraphFetch', - resultType = $f.resultType->transformResultType($mapping, $extensions), + resultType = $f.resultType->transformResultType($extensions), resultSizeRange = $f.resultSizeRange->isEmpty()->if(|[],|$f.resultSizeRange->toOne()->meta::protocols::pure::vX_X_X::transformation::fromPureGraph::domain::transformMultiplicity()), nodeIndex = $f.nodeIndex, parentIndex = $f.parentIndex, graphFetchTree = $f.graphFetchTree->meta::protocols::pure::vX_X_X::transformation::fromPureGraph::valueSpecification::transformGraphFetchTree([], newMap([]->cast(@Pair>)), $extensions), batchSize = $f.batchSize, checked = $f.checked, - children = $f.children->map(x | $x->transformNode($mapping, $extensions))->cast(@meta::protocols::pure::vX_X_X::metamodel::executionPlan::graphFetch::store::inMemory::InMemoryGraphFetchExecutionNode), + children = $f.children->map(x | $x->transformNode($extensions))->cast(@meta::protocols::pure::vX_X_X::metamodel::executionPlan::graphFetch::store::inMemory::InMemoryGraphFetchExecutionNode), filter = $f.filter->isNotEmpty() ), f:meta::pure::mapping::modelToModel::graphFetch::executionPlan::InMemoryPropertyGraphFetchExecutionNode[1]| ^meta::protocols::pure::vX_X_X::metamodel::executionPlan::graphFetch::store::inMemory::InMemoryPropertyGraphFetchExecutionNode( _type = 'inMemoryPropertyGraphFetch', - resultType = $f.resultType->transformResultType($mapping, $extensions), + resultType = $f.resultType->transformResultType($extensions), resultSizeRange = $f.resultSizeRange->isEmpty()->if(|[],|$f.resultSizeRange->toOne()->meta::protocols::pure::vX_X_X::transformation::fromPureGraph::domain::transformMultiplicity()), nodeIndex = $f.nodeIndex, parentIndex = $f.parentIndex, graphFetchTree = $f.graphFetchTree->meta::protocols::pure::vX_X_X::transformation::fromPureGraph::valueSpecification::transformGraphFetchTree([], newMap([]->cast(@Pair>)), $extensions), - children = $f.children->map(x | $x->transformNode($mapping, $extensions))->cast(@meta::protocols::pure::vX_X_X::metamodel::executionPlan::graphFetch::store::inMemory::InMemoryGraphFetchExecutionNode) + children = $f.children->map(x | $x->transformNode($extensions))->cast(@meta::protocols::pure::vX_X_X::metamodel::executionPlan::graphFetch::store::inMemory::InMemoryGraphFetchExecutionNode) ) ])->toOneMany() ); ^$n( requiredVariableInputs = $node.requiredVariableInputs->map(s | $s->transformSource()), - executionNodes = $node.executionNodes->map(s|$s->transformNode($mapping, $extensions)), + executionNodes = $node.executionNodes->map(s|$s->transformNode($extensions)), implementation = $node.implementation->map(impl | $impl->transformPlatformNodeImplementation()), authDependent = $node.authDependent ); @@ -310,10 +311,10 @@ function meta::protocols::pure::vX_X_X::transformation::fromPureGraph::execution } -function meta::protocols::pure::vX_X_X::transformation::fromPureGraph::executionPlan::transformResultType(rType:meta::pure::executionPlan::ResultType[1], mapping:meta::pure::mapping::Mapping[1], extensions:meta::pure::extension::Extension[*]):meta::protocols::pure::vX_X_X::metamodel::executionPlan::ResultType[1] +function meta::protocols::pure::vX_X_X::transformation::fromPureGraph::executionPlan::transformResultType(rType:meta::pure::executionPlan::ResultType[1], extensions:meta::pure::extension::Extension[*]):meta::protocols::pure::vX_X_X::metamodel::executionPlan::ResultType[1] { $rType->match( - $extensions.serializerExtension('vX_X_X')->cast(@meta::protocols::pure::vX_X_X::extension::SerializerExtension_vX_X_X).transfers_executionPlan_transformResultType->map(f|$f->eval($mapping, $extensions))->concatenate([ + $extensions.serializerExtension('vX_X_X')->cast(@meta::protocols::pure::vX_X_X::extension::SerializerExtension_vX_X_X).transfers_executionPlan_transformResultType->map(f|$f->eval($extensions))->concatenate([ partialClass:meta::pure::executionPlan::PartialClassResultType[1]|^meta::protocols::pure::vX_X_X::metamodel::executionPlan::PartialClassResultType ( _type = 'partialClass', @@ -344,7 +345,7 @@ function meta::protocols::pure::vX_X_X::transformation::fromPureGraph::execution name = $c.name, doc = $c.documentation, type = $c.type->toOne()->elementToPath(), - enumMapping = if($c.enumMappingId->isEmpty(),|[],|meta::protocols::pure::vX_X_X::transformation::fromPureGraph::executionPlan::transformEnumMapping($mapping->enumerationMappingByName($c.enumMappingId->toOne())->toOne())) + enumMapping = if($c.enumMapping->isEmpty(),|[],|meta::protocols::pure::vX_X_X::transformation::fromPureGraph::executionPlan::transformEnumMapping($c.enumMapping->toOne())) ) ) ), diff --git a/legend-engine-core/legend-engine-core-pure/legend-engine-pure-code-compiled-core/src/main/resources/core/pure/protocol/vX_X_X/transfers/mapping.pure b/legend-engine-core/legend-engine-core-pure/legend-engine-pure-code-compiled-core/src/main/resources/core/pure/protocol/vX_X_X/transfers/mapping.pure index 41cd78bdec6..404d99b3902 100644 --- a/legend-engine-core/legend-engine-core-pure/legend-engine-pure-code-compiled-core/src/main/resources/core/pure/protocol/vX_X_X/transfers/mapping.pure +++ b/legend-engine-core/legend-engine-core-pure/legend-engine-pure-code-compiled-core/src/main/resources/core/pure/protocol/vX_X_X/transfers/mapping.pure @@ -208,6 +208,19 @@ function <> meta::protocols::pure::vX_X_X::transformation::fromPu ]); } +function meta::protocols::pure::vX_X_X::transformation::fromPureGraph::mapping::xStore::transformXStorePropertyMapping(pm:PropertyMapping[1], extensions:meta::pure::extension::Extension[*]):meta::protocols::pure::vX_X_X::metamodel::mapping::xStore::XStorePropertyMapping[1] +{ + $pm->match([p:meta::pure::mapping::xStore::XStorePropertyMapping[1]| + ^meta::protocols::pure::vX_X_X::metamodel::mapping::xStore::XStorePropertyMapping + ( + _type = 'xStorePropertyMapping', + property = ^meta::protocols::pure::vX_X_X::metamodel::domain::PropertyPtr(class=$pm.property->genericType().typeArguments->filter(l| $l->isNotEmpty())->at(0).rawType->toOne()->elementToPath(), property=$pm.property.name->toOne()), + source = $p.sourceSetImplementationId, + target = $p.targetSetImplementationId, + crossExpression = meta::protocols::pure::vX_X_X::transformation::fromPureGraph::transformLambda($p.crossExpression, $extensions) + ) + ]); +} function meta::protocols::pure::vX_X_X::transformation::fromPureGraph::mapping::xStore::transformXStorePropertyMapping(pm:PropertyMapping[1], mapping : Mapping[1], extensions:meta::pure::extension::Extension[*]):meta::protocols::pure::vX_X_X::metamodel::mapping::xStore::XStorePropertyMapping[1] { diff --git a/legend-engine-core/legend-engine-core-pure/legend-engine-pure-code-compiled-core/src/main/resources/core/pure/tds/tds.pure b/legend-engine-core/legend-engine-core-pure/legend-engine-pure-code-compiled-core/src/main/resources/core/pure/tds/tds.pure index e72ec006ef3..4bb5f6f7374 100644 --- a/legend-engine-core/legend-engine-core-pure/legend-engine-pure-code-compiled-core/src/main/resources/core/pure/tds/tds.pure +++ b/legend-engine-core/legend-engine-core-pure/legend-engine-pure-code-compiled-core/src/main/resources/core/pure/tds/tds.pure @@ -35,6 +35,9 @@ Class meta::pure::tds::TDSColumn <> enumMappingId : String[0..1]; + + <> + enumMapping: meta::pure::mapping::EnumerationMapping[0..1]; <> documentation : String[0..1]; diff --git a/legend-engine-xts-elasticsearch/legend-engine-xt-elasticsearch-V7-pure-metamodel/src/main/resources/core_elasticsearch_seven_metamodel/protocol/vX_X_X/serialization.pure b/legend-engine-xts-elasticsearch/legend-engine-xt-elasticsearch-V7-pure-metamodel/src/main/resources/core_elasticsearch_seven_metamodel/protocol/vX_X_X/serialization.pure index a0cc1390048..b27d1f15947 100644 --- a/legend-engine-xts-elasticsearch/legend-engine-xt-elasticsearch-V7-pure-metamodel/src/main/resources/core_elasticsearch_seven_metamodel/protocol/vX_X_X/serialization.pure +++ b/legend-engine-xts-elasticsearch/legend-engine-xt-elasticsearch-V7-pure-metamodel/src/main/resources/core_elasticsearch_seven_metamodel/protocol/vX_X_X/serialization.pure @@ -68,11 +68,11 @@ function meta::external::store::elasticsearch::v7::protocol::vX_X_X::elasticsear conn: Elasticsearch7StoreConnection[1] | $conn->meta::external::store::elasticsearch::v7::protocol::vX_X_X::runtime::transformConnection($extensions) ], - transfers_executionPlan_transformNode = {mapping:Mapping[1], extensions:Extension[*] | + transfers_executionPlan_transformNode = {extensions:Extension[*] | [ esNode: Elasticsearch7RequestExecutionNode[1] | ^meta::external::store::elasticsearch::v7::protocol::vX_X_X::executionPlan::Elasticsearch7RequestExecutionNode( _type = 'elasticsearch7RequestExecutionNode', - resultType = $esNode.resultType->meta::protocols::pure::vX_X_X::transformation::fromPureGraph::executionPlan::transformResultType($mapping, $extensions), + resultType = $esNode.resultType->meta::protocols::pure::vX_X_X::transformation::fromPureGraph::executionPlan::transformResultType($extensions), connection = $esNode.connection->meta::external::store::elasticsearch::v7::protocol::vX_X_X::runtime::transformConnection($extensions), request = $esNode.request, metadata = $esNode.metadata->match([ diff --git a/legend-engine-xts-mongodb/legend-engine-xt-nonrelationalStore-mongodb-pure/src/main/resources/core_nonrelational_mongodb/protocols/pure/v_X_X_X/extensions/extension_mongodb.pure b/legend-engine-xts-mongodb/legend-engine-xt-nonrelationalStore-mongodb-pure/src/main/resources/core_nonrelational_mongodb/protocols/pure/v_X_X_X/extensions/extension_mongodb.pure index c03f3bfb545..1da0d419303 100644 --- a/legend-engine-xts-mongodb/legend-engine-xt-nonrelationalStore-mongodb-pure/src/main/resources/core_nonrelational_mongodb/protocols/pure/v_X_X_X/extensions/extension_mongodb.pure +++ b/legend-engine-xts-mongodb/legend-engine-xt-nonrelationalStore-mongodb-pure/src/main/resources/core_nonrelational_mongodb/protocols/pure/v_X_X_X/extensions/extension_mongodb.pure @@ -43,13 +43,13 @@ function meta::protocols::pure::vX_X_X::extension::store::mongodb::getMongoDBSto ( moduleSerializerExtensions = meta::protocols::pure::vX_X_X::extension::store::mongodb::mongoDBModuleSerializerExtension(), - transfers_executionPlan_transformNode = {mapping:Mapping[1], extensions:meta::pure::extension::Extension[*] | + transfers_executionPlan_transformNode = {extensions:meta::pure::extension::Extension[*] | [ men:meta::external::store::mongodb::metamodel::pure::MongoDBExecutionNode[1] | ^meta::protocols::pure::vX_X_X::metamodel::executionPlan::store::mongodb::MongoDBExecutionNode( _type = 'MongoDBExecutionNode', - resultType = $men.resultType->meta::protocols::pure::vX_X_X::transformation::fromPureGraph::executionPlan::transformResultType($mapping, $extensions), + resultType = $men.resultType->meta::protocols::pure::vX_X_X::transformation::fromPureGraph::executionPlan::transformResultType($extensions), databaseCommand = $men.databaseCommand->getDatabaseCommandJSON(), connection = $men.connection->meta::protocols::pure::vX_X_X::transformation::fromPureGraph::connection::store::mongodb::transformDatabaseConnection($extensions) ), @@ -61,13 +61,13 @@ function meta::protocols::pure::vX_X_X::extension::store::mongodb::getMongoDBSto binding = $mdIntern.binding->elementToPath(), contentType = $mdIntern.binding.contentType, tree = $mdIntern.tree->map(t| $t->meta::protocols::pure::vX_X_X::transformation::fromPureGraph::valueSpecification::transformGraphFetchTree([], ^Map>(), $extensions))->cast(@meta::protocols::pure::vX_X_X::metamodel::valueSpecification::raw::RootGraphFetchTree), - resultType = $mdIntern.resultType->meta::protocols::pure::vX_X_X::transformation::fromPureGraph::executionPlan::transformResultType($mapping, $extensions), + resultType = $mdIntern.resultType->meta::protocols::pure::vX_X_X::transformation::fromPureGraph::executionPlan::transformResultType($extensions), resultSizeRange = $mdIntern.resultSizeRange->map(s| $s->meta::protocols::pure::vX_X_X::transformation::fromPureGraph::domain::transformMultiplicity()) ), exfin: meta::external::format::shared::executionPlan::ExternalFormatInternalizeExecutionNode[1] | ^meta::protocols::pure::vX_X_X::metamodel::external::shared::format::executionPlan::ExternalFormatInternalizeExecutionNode( _type = 'externalFormatInternalize', - resultType = $exfin.resultType->meta::protocols::pure::vX_X_X::transformation::fromPureGraph::executionPlan::transformResultType($mapping, $extensions), + resultType = $exfin.resultType->meta::protocols::pure::vX_X_X::transformation::fromPureGraph::executionPlan::transformResultType($extensions), resultSizeRange = $exfin.resultSizeRange->map(s| $s->meta::protocols::pure::vX_X_X::transformation::fromPureGraph::domain::transformMultiplicity()), tree = $exfin.tree->map(t| $t->meta::protocols::pure::vX_X_X::transformation::fromPureGraph::valueSpecification::transformGraphFetchTree([], ^Map>(), $extensions))->cast(@meta::protocols::pure::vX_X_X::metamodel::valueSpecification::raw::RootGraphFetchTree), binding = $exfin.binding->elementToPath(), diff --git a/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-generation/legend-engine-xt-relationalStore-pure/src/main/resources/core_relational/relational/functions/tests/testFrom.pure b/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-generation/legend-engine-xt-relationalStore-pure/src/main/resources/core_relational/relational/functions/tests/testFrom.pure index 19901cdbde1..4d552276526 100644 --- a/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-generation/legend-engine-xt-relationalStore-pure/src/main/resources/core_relational/relational/functions/tests/testFrom.pure +++ b/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-generation/legend-engine-xt-relationalStore-pure/src/main/resources/core_relational/relational/functions/tests/testFrom.pure @@ -59,6 +59,16 @@ function <> meta::relational::tests::fromMapping::testClassMappingsWi assertEquals('select "unionBase"."personTableFIRSTNAME_personTableFIRSTNAME" as "FirstName" from (select "root".ID as "pk_0_0", null as "pk_0_1", "root".FIRSTNAME as "personTableFIRSTNAME_personTableFIRSTNAME" from personTable as "root" UNION ALL select null as "pk_0_0", "root".ID as "pk_0_1", "root".FIRSTNAME as "personTableFIRSTNAME_personTableFIRSTNAME" from personTable as "root") as "unionBase"', $result->sqlRemoveFormatting()); } +function <> meta::relational::tests::fromMapping::testEnumProjection():Boolean[1] +{ + + let runtime = meta::external::store::relational::tests::testRuntime(); + + let result = execute({|Firm.all()->project([f|$f.legalName, f|$f.address.type],['legalName', 'address type'])->from(meta::relational::tests::fromMapping::MappingWithClasses, $runtime)}, ^Mapping(name = ''), ^meta::core::runtime::Runtime(), meta::relational::extension::relationalExtensions()); + + assertSameElements(['Firm A', 'Firm B', 'Firm C', 'Firm X', 'No Employees', GeographicEntityType.CITY, GeographicEntityType.CITY, GeographicEntityType.CITY, GeographicEntityType.CITY, GeographicEntityType.CITY], $result.values.rows.values); +} + ###Relational Database meta::relational::tests::fromMapping::mdb @@ -85,7 +95,20 @@ Mapping meta::relational::tests::fromMapping::MappingWithClasses Firm : Relational { - legalName : [mdb]firmTable.LEGALNAME + legalName : [mdb]firmTable.LEGALNAME, + address: [mdb]@Address_Firm + } + + Address : Relational + { + name : [mdb]addressTable.NAME, + street : [mdb]addressTable.STREET, + type : EnumerationMapping GE : [mdb]addressTable.TYPE + } + + GeographicEntityType: EnumerationMapping GE + { + CITY: 1 } ) diff --git a/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-generation/legend-engine-xt-relationalStore-pure/src/main/resources/core_relational/relational/protocols/pure/v1_33_0/extension/extension_relational.pure b/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-generation/legend-engine-xt-relationalStore-pure/src/main/resources/core_relational/relational/protocols/pure/v1_33_0/extension/extension_relational.pure index d8f7fab01b3..a6348f60a20 100644 --- a/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-generation/legend-engine-xt-relationalStore-pure/src/main/resources/core_relational/relational/protocols/pure/v1_33_0/extension/extension_relational.pure +++ b/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-generation/legend-engine-xt-relationalStore-pure/src/main/resources/core_relational/relational/protocols/pure/v1_33_0/extension/extension_relational.pure @@ -238,7 +238,9 @@ function meta::protocols::pure::v1_33_0::extension::getRelationalExtension():met tds:meta::pure::executionPlan::TDSResultType[1]|^meta::protocols::pure::v1_33_0::metamodel::executionPlan::TDSResultType ( _type='tds', - tdsColumns=$tds.tdsColumns->map(c|^meta::protocols::pure::v1_33_0::metamodel::invocation::execution::execute::TDSColumn + tdsColumns=$tds.tdsColumns->map(c| + let enumMappingTransformed = if($c.enumMapping->isEmpty(), | [], | meta::protocols::pure::vX_X_X::transformation::fromPureGraph::executionPlan::transformEnumMapping($c.enumMapping->toOne())); + ^meta::protocols::pure::v1_33_0::metamodel::invocation::execution::execute::TDSColumn ( name = $c.name, doc = $c.documentation, @@ -250,7 +252,7 @@ function meta::protocols::pure::v1_33_0::extension::getRelationalExtension():met d:meta::relational::metamodel::datatype::DataType[1]|$d->meta::protocols::pure::v1_33_0::transformation::fromPureGraph::store::relational::alloyTypeToString() ] ) - ) + ); ) ), rel:meta::pure::executionPlan::RelationResultType[1]|^meta::protocols::pure::v1_33_0::metamodel::executionPlan::RelationResultType diff --git a/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-generation/legend-engine-xt-relationalStore-pure/src/main/resources/core_relational/relational/protocols/pure/vX_X_X/extension/extension_relational.pure b/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-generation/legend-engine-xt-relationalStore-pure/src/main/resources/core_relational/relational/protocols/pure/vX_X_X/extension/extension_relational.pure index 3b5f11bb859..69390cbcd88 100644 --- a/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-generation/legend-engine-xt-relationalStore-pure/src/main/resources/core_relational/relational/protocols/pure/vX_X_X/extension/extension_relational.pure +++ b/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-generation/legend-engine-xt-relationalStore-pure/src/main/resources/core_relational/relational/protocols/pure/vX_X_X/extension/extension_relational.pure @@ -36,29 +36,29 @@ function meta::protocols::pure::vX_X_X::extension::getRelationalExtension(type:S } -function meta::protocols::pure::vX_X_X::extension::transformTempTableStrategy(tempTableStrategy:meta::relational::graphFetch::executionPlan::TempTableStrategy[1], mapping:Mapping[1], extensions:meta::pure::extension::Extension[*]):meta::protocols::pure::vX_X_X::metamodel::executionPlan::TempTableStrategy[1] +function meta::protocols::pure::vX_X_X::extension::transformTempTableStrategy(tempTableStrategy:meta::relational::graphFetch::executionPlan::TempTableStrategy[1], extensions:meta::pure::extension::Extension[*]):meta::protocols::pure::vX_X_X::metamodel::executionPlan::TempTableStrategy[1] { $tempTableStrategy->match([ t : LoadFromSubQueryTempTableStrategy[1] | ^meta::protocols::pure::vX_X_X::metamodel::executionPlan::LoadFromSubQueryTempTableStrategy( _type = 'subQuery', - createTempTableNode = if($t.createTempTableNode->isNotEmpty(),|$t.createTempTableNode->toOne()->meta::protocols::pure::vX_X_X::transformation::fromPureGraph::executionPlan::transformNode($mapping, $extensions),|[]), - loadTempTableNode = if($t.loadTempTableNode->isNotEmpty(),|$t.loadTempTableNode->toOne()->meta::protocols::pure::vX_X_X::transformation::fromPureGraph::executionPlan::transformNode($mapping, $extensions),|[]), - dropTempTableNode = if($t.dropTempTableNode->isNotEmpty(),|$t.dropTempTableNode->toOne()->meta::protocols::pure::vX_X_X::transformation::fromPureGraph::executionPlan::transformNode($mapping, $extensions),|[]) + createTempTableNode = if($t.createTempTableNode->isNotEmpty(),|$t.createTempTableNode->toOne()->meta::protocols::pure::vX_X_X::transformation::fromPureGraph::executionPlan::transformNode($extensions),|[]), + loadTempTableNode = if($t.loadTempTableNode->isNotEmpty(),|$t.loadTempTableNode->toOne()->meta::protocols::pure::vX_X_X::transformation::fromPureGraph::executionPlan::transformNode($extensions),|[]), + dropTempTableNode = if($t.dropTempTableNode->isNotEmpty(),|$t.dropTempTableNode->toOne()->meta::protocols::pure::vX_X_X::transformation::fromPureGraph::executionPlan::transformNode($extensions),|[]) );, t : LoadFromTempFileTempTableStrategy[1] | ^meta::protocols::pure::vX_X_X::metamodel::executionPlan::LoadFromTempFileTempTableStrategy( _type = 'tempFile', - createTempTableNode = if($t.createTempTableNode->isNotEmpty(),|$t.createTempTableNode->toOne()->meta::protocols::pure::vX_X_X::transformation::fromPureGraph::executionPlan::transformNode($mapping, $extensions),|[]), - loadTempTableNode = if($t.loadTempTableNode->isNotEmpty(),|$t.loadTempTableNode->toOne()->meta::protocols::pure::vX_X_X::transformation::fromPureGraph::executionPlan::transformNode($mapping, $extensions),|[]), - dropTempTableNode = if($t.dropTempTableNode->isNotEmpty(),|$t.dropTempTableNode->toOne()->meta::protocols::pure::vX_X_X::transformation::fromPureGraph::executionPlan::transformNode($mapping, $extensions),|[]) + createTempTableNode = if($t.createTempTableNode->isNotEmpty(),|$t.createTempTableNode->toOne()->meta::protocols::pure::vX_X_X::transformation::fromPureGraph::executionPlan::transformNode($extensions),|[]), + loadTempTableNode = if($t.loadTempTableNode->isNotEmpty(),|$t.loadTempTableNode->toOne()->meta::protocols::pure::vX_X_X::transformation::fromPureGraph::executionPlan::transformNode($extensions),|[]), + dropTempTableNode = if($t.dropTempTableNode->isNotEmpty(),|$t.dropTempTableNode->toOne()->meta::protocols::pure::vX_X_X::transformation::fromPureGraph::executionPlan::transformNode($extensions),|[]) );, t : LoadFromResultSetAsValueTuplesTempTableStrategy[1] | ^meta::protocols::pure::vX_X_X::metamodel::executionPlan::LoadFromResultSetAsValueTuplesTempTableStrategy( _type = 'resultSet', - createTempTableNode = if($t.createTempTableNode->isNotEmpty(),|$t.createTempTableNode->toOne()->meta::protocols::pure::vX_X_X::transformation::fromPureGraph::executionPlan::transformNode($mapping, $extensions),|[]), - loadTempTableNode = if($t.loadTempTableNode->isNotEmpty(),|$t.loadTempTableNode->toOne()->meta::protocols::pure::vX_X_X::transformation::fromPureGraph::executionPlan::transformNode($mapping, $extensions),|[]), - dropTempTableNode = if($t.dropTempTableNode->isNotEmpty(),|$t.dropTempTableNode->toOne()->meta::protocols::pure::vX_X_X::transformation::fromPureGraph::executionPlan::transformNode($mapping, $extensions),|[]), + createTempTableNode = if($t.createTempTableNode->isNotEmpty(),|$t.createTempTableNode->toOne()->meta::protocols::pure::vX_X_X::transformation::fromPureGraph::executionPlan::transformNode($extensions),|[]), + loadTempTableNode = if($t.loadTempTableNode->isNotEmpty(),|$t.loadTempTableNode->toOne()->meta::protocols::pure::vX_X_X::transformation::fromPureGraph::executionPlan::transformNode($extensions),|[]), + dropTempTableNode = if($t.dropTempTableNode->isNotEmpty(),|$t.dropTempTableNode->toOne()->meta::protocols::pure::vX_X_X::transformation::fromPureGraph::executionPlan::transformNode($extensions),|[]), tupleBatchSize = $t.tupleBatchSize, quoteCharacterReplacement = $t.quoteCharacterReplacement ); @@ -108,16 +108,16 @@ function meta::protocols::pure::vX_X_X::extension::getRelationalExtension():meta ) ] }, - transfers_executionPlan_transformNode = {mapping:Mapping[1], extensions:meta::pure::extension::Extension[*] | + transfers_executionPlan_transformNode = {extensions:meta::pure::extension::Extension[*] | [ rb:meta::pure::executionPlan::RelationalBlockExecutionNode[1]| ^meta::protocols::pure::vX_X_X::metamodel::executionPlan::RelationalBlockExecutionNode( _type = 'relationalBlock', - resultType = $rb.resultType->meta::protocols::pure::vX_X_X::transformation::fromPureGraph::executionPlan::transformResultType($mapping, $extensions), - finallyExecutionNodes = $rb.finallyExecutionNodes->map(n|$n->meta::protocols::pure::vX_X_X::transformation::fromPureGraph::executionPlan::transformNode($mapping, $extensions)));, + resultType = $rb.resultType->meta::protocols::pure::vX_X_X::transformation::fromPureGraph::executionPlan::transformResultType($extensions), + finallyExecutionNodes = $rb.finallyExecutionNodes->map(n|$n->meta::protocols::pure::vX_X_X::transformation::fromPureGraph::executionPlan::transformNode($extensions)));, rel:meta::relational::mapping::SQLExecutionNode[1]| ^meta::protocols::pure::vX_X_X::metamodel::executionPlan::SQLExecutionNode( _type = 'sql', - resultType = $rel.resultType->meta::protocols::pure::vX_X_X::transformation::fromPureGraph::executionPlan::transformResultType($mapping, $extensions), + resultType = $rel.resultType->meta::protocols::pure::vX_X_X::transformation::fromPureGraph::executionPlan::transformResultType($extensions), resultSizeRange = $rel.resultSizeRange->isEmpty()->if(|[],|$rel.resultSizeRange->toOne()->meta::protocols::pure::vX_X_X::transformation::fromPureGraph::domain::transformMultiplicity()), resultColumns = $rel.resultColumns->map(c | $c->meta::protocols::pure::vX_X_X::transformation::fromPureGraph::executionPlan::transformResultColumn()), sqlComment = $rel.sqlComment, @@ -129,12 +129,12 @@ function meta::protocols::pure::vX_X_X::extension::getRelationalExtension():meta rel:meta::relational::mapping::RelationalSaveNode[1]| ^meta::protocols::pure::vX_X_X::metamodel::executionPlan::RelationalSaveNode( _type = 'relationalSave', - resultType = $rel.resultType->meta::protocols::pure::vX_X_X::transformation::fromPureGraph::executionPlan::transformResultType($mapping, $extensions), + resultType = $rel.resultType->meta::protocols::pure::vX_X_X::transformation::fromPureGraph::executionPlan::transformResultType($extensions), resultSizeRange = $rel.resultSizeRange->isEmpty()->if(|[],|$rel.resultSizeRange->toOne()->meta::protocols::pure::vX_X_X::transformation::fromPureGraph::domain::transformMultiplicity()), sqlComment = $rel.sqlComment, sqlQuery = $rel.sqlQuery, generatedVariableName = $rel.generatedVariableName, - columnValueGenerators = $rel.columnValueGenerators->keyValues()->map(cvg | pair($cvg.first, $cvg.second->meta::protocols::pure::vX_X_X::transformation::fromPureGraph::executionPlan::transformNode($mapping, $extensions)))->newMap(), + columnValueGenerators = $rel.columnValueGenerators->keyValues()->map(cvg | pair($cvg.first, $cvg.second->meta::protocols::pure::vX_X_X::transformation::fromPureGraph::executionPlan::transformNode($extensions)))->newMap(), onConnectionCloseCommitQuery = $rel.onConnectionCloseCommitQuery, onConnectionCloseRollbackQuery = $rel.onConnectionCloseRollbackQuery, connection = $rel.connection->meta::protocols::pure::vX_X_X::transformation::fromPureGraph::connection::transformDatabaseConnection($extensions) @@ -142,25 +142,25 @@ function meta::protocols::pure::vX_X_X::extension::getRelationalExtension():meta rel:meta::relational::mapping::RelationalTdsInstantiationExecutionNode[1]| ^meta::protocols::pure::vX_X_X::metamodel::executionPlan::RelationalTdsInstantiationExecutionNode( _type = 'relationalTdsInstantiation', - resultType = $rel.resultType->meta::protocols::pure::vX_X_X::transformation::fromPureGraph::executionPlan::transformResultType($mapping, $extensions), + resultType = $rel.resultType->meta::protocols::pure::vX_X_X::transformation::fromPureGraph::executionPlan::transformResultType($extensions), resultSizeRange = $rel.resultSizeRange->isEmpty()->if(|[],|$rel.resultSizeRange->toOne()->meta::protocols::pure::vX_X_X::transformation::fromPureGraph::domain::transformMultiplicity()) ), rel:meta::relational::mapping::RelationalClassInstantiationExecutionNode[1]| ^meta::protocols::pure::vX_X_X::metamodel::executionPlan::RelationalClassInstantiationExecutionNode( _type = 'relationalClassInstantiation', - resultType = $rel.resultType->meta::protocols::pure::vX_X_X::transformation::fromPureGraph::executionPlan::transformResultType($mapping, $extensions), + resultType = $rel.resultType->meta::protocols::pure::vX_X_X::transformation::fromPureGraph::executionPlan::transformResultType($extensions), resultSizeRange = $rel.resultSizeRange->isEmpty()->if(|[],|$rel.resultSizeRange->toOne()->meta::protocols::pure::vX_X_X::transformation::fromPureGraph::domain::transformMultiplicity()) ), rel:meta::relational::mapping::RelationalRelationDataInstantiationExecutionNode[1]| ^meta::protocols::pure::vX_X_X::metamodel::executionPlan::RelationalRelationDataInstantiationExecutionNode( _type = 'relationalRelationDataInstantiation', - resultType = $rel.resultType->meta::protocols::pure::vX_X_X::transformation::fromPureGraph::executionPlan::transformResultType($mapping, $extensions), + resultType = $rel.resultType->meta::protocols::pure::vX_X_X::transformation::fromPureGraph::executionPlan::transformResultType($extensions), resultSizeRange = $rel.resultSizeRange->isEmpty()->if(|[],|$rel.resultSizeRange->toOne()->meta::protocols::pure::vX_X_X::transformation::fromPureGraph::domain::transformMultiplicity()) ), rel:meta::relational::mapping::RelationalDataTypeInstantiationExecutionNode[1]| ^meta::protocols::pure::vX_X_X::metamodel::executionPlan::RelationalDataTypeInstantiationExecutionNode( _type = 'relationalDataTypeInstantiation', - resultType = $rel.resultType->meta::protocols::pure::vX_X_X::transformation::fromPureGraph::executionPlan::transformResultType($mapping, $extensions), + resultType = $rel.resultType->meta::protocols::pure::vX_X_X::transformation::fromPureGraph::executionPlan::transformResultType($extensions), resultSizeRange = $rel.resultSizeRange->isEmpty()->if(|[],|$rel.resultSizeRange->toOne()->meta::protocols::pure::vX_X_X::transformation::fromPureGraph::domain::transformMultiplicity()) ), cpt:meta::relational::mapping::CreateAndPopulateTempTableExecutionNode[1]| @@ -169,7 +169,7 @@ function meta::protocols::pure::vX_X_X::extension::getRelationalExtension():meta _type = 'createAndPopulateTempTable', inputVarNames = $cpt.inputVarNames, tempTableName = $cpt.tempTableName, - resultType = $cpt.resultType->meta::protocols::pure::vX_X_X::transformation::fromPureGraph::executionPlan::transformResultType($mapping, $extensions), + resultType = $cpt.resultType->meta::protocols::pure::vX_X_X::transformation::fromPureGraph::executionPlan::transformResultType($extensions), resultSizeRange = $cpt.resultSizeRange->isEmpty()->if(|[],|$cpt.resultSizeRange->toOne()->meta::protocols::pure::vX_X_X::transformation::fromPureGraph::domain::transformMultiplicity()), tempTableColumnMetaData = $cpt.tempTableColumnMetaData->map(col | $col->meta::protocols::pure::vX_X_X::transformation::fromPureGraph::executionPlan::transformTempTableColumnMetaData()), connection = $cpt.connection->meta::protocols::pure::vX_X_X::transformation::fromPureGraph::connection::transformDatabaseConnection($extensions) @@ -177,14 +177,14 @@ function meta::protocols::pure::vX_X_X::extension::getRelationalExtension():meta rel:meta::relational::graphFetch::executionPlan::RelationalRootQueryTempTableGraphFetchExecutionNode[1]| ^meta::protocols::pure::vX_X_X::metamodel::executionPlan::RelationalRootQueryTempTableGraphFetchExecutionNode( _type = 'relationalRootQueryTempTableGraphFetch', - tempTableStrategy = if($rel.tempTableStrategy->isNotEmpty(),|$rel.tempTableStrategy->toOne()->meta::protocols::pure::vX_X_X::extension::transformTempTableStrategy($mapping, $extensions),|[]), - resultType = $rel.resultType->meta::protocols::pure::vX_X_X::transformation::fromPureGraph::executionPlan::transformResultType($mapping, $extensions), + tempTableStrategy = if($rel.tempTableStrategy->isNotEmpty(),|$rel.tempTableStrategy->toOne()->meta::protocols::pure::vX_X_X::extension::transformTempTableStrategy($extensions),|[]), + resultType = $rel.resultType->meta::protocols::pure::vX_X_X::transformation::fromPureGraph::executionPlan::transformResultType($extensions), resultSizeRange = $rel.resultSizeRange->isEmpty()->if(|[],|$rel.resultSizeRange->toOne()->meta::protocols::pure::vX_X_X::transformation::fromPureGraph::domain::transformMultiplicity()), batchSize = $rel.batchSize, tempTableName = $rel.tempTableName, processedTempTableName = $rel.processedTempTableName, columns = $rel.columns->map(c | $c->meta::protocols::pure::vX_X_X::transformation::fromPureGraph::executionPlan::transformResultColumn()), - children = $rel.children->map(c | $c->meta::protocols::pure::vX_X_X::transformation::fromPureGraph::executionPlan::transformNode($mapping, $extensions))->cast(@meta::protocols::pure::vX_X_X::metamodel::executionPlan::RelationalGraphFetchExecutionNode), + children = $rel.children->map(c | $c->meta::protocols::pure::vX_X_X::transformation::fromPureGraph::executionPlan::transformNode($extensions))->cast(@meta::protocols::pure::vX_X_X::metamodel::executionPlan::RelationalGraphFetchExecutionNode), nodeIndex = $rel.nodeIndex, parentIndex = $rel.parentIndex, graphFetchTree = $rel.graphFetchTree->meta::protocols::pure::vX_X_X::transformation::fromPureGraph::valueSpecification::transformGraphFetchTree([], newMap([]->cast(@Pair>)), $extensions), @@ -193,14 +193,14 @@ function meta::protocols::pure::vX_X_X::extension::getRelationalExtension():meta rel:meta::relational::graphFetch::executionPlan::RelationalCrossRootQueryTempTableGraphFetchExecutionNode[1]| ^meta::protocols::pure::vX_X_X::metamodel::executionPlan::RelationalCrossRootQueryTempTableGraphFetchExecutionNode( _type = 'relationalCrossRootQueryTempTableGraphFetch', - parentTempTableStrategy = if($rel.parentTempTableStrategy->isNotEmpty(),|$rel.parentTempTableStrategy->toOne()->meta::protocols::pure::vX_X_X::extension::transformTempTableStrategy($mapping, $extensions),|[]), - tempTableStrategy = if($rel.tempTableStrategy->isNotEmpty(),|$rel.tempTableStrategy->toOne()->meta::protocols::pure::vX_X_X::extension::transformTempTableStrategy($mapping, $extensions),|[]), - resultType = $rel.resultType->meta::protocols::pure::vX_X_X::transformation::fromPureGraph::executionPlan::transformResultType($mapping, $extensions), + parentTempTableStrategy = if($rel.parentTempTableStrategy->isNotEmpty(),|$rel.parentTempTableStrategy->toOne()->meta::protocols::pure::vX_X_X::extension::transformTempTableStrategy($extensions),|[]), + tempTableStrategy = if($rel.tempTableStrategy->isNotEmpty(),|$rel.tempTableStrategy->toOne()->meta::protocols::pure::vX_X_X::extension::transformTempTableStrategy($extensions),|[]), + resultType = $rel.resultType->meta::protocols::pure::vX_X_X::transformation::fromPureGraph::executionPlan::transformResultType($extensions), resultSizeRange = $rel.resultSizeRange->isEmpty()->if(|[],|$rel.resultSizeRange->toOne()->meta::protocols::pure::vX_X_X::transformation::fromPureGraph::domain::transformMultiplicity()), tempTableName = $rel.tempTableName, processedTempTableName = $rel.processedTempTableName, columns = $rel.columns->map(c | $c->meta::protocols::pure::vX_X_X::transformation::fromPureGraph::executionPlan::transformResultColumn()), - children = $rel.children->map(c | $c->meta::protocols::pure::vX_X_X::transformation::fromPureGraph::executionPlan::transformNode($mapping, $extensions))->cast(@meta::protocols::pure::vX_X_X::metamodel::executionPlan::RelationalGraphFetchExecutionNode), + children = $rel.children->map(c | $c->meta::protocols::pure::vX_X_X::transformation::fromPureGraph::executionPlan::transformNode($extensions))->cast(@meta::protocols::pure::vX_X_X::metamodel::executionPlan::RelationalGraphFetchExecutionNode), nodeIndex = $rel.nodeIndex, parentIndex = $rel.parentIndex, parentTempTableName = $rel.parentTempTableName, @@ -211,13 +211,13 @@ function meta::protocols::pure::vX_X_X::extension::getRelationalExtension():meta rel:meta::relational::graphFetch::executionPlan::RelationalClassQueryTempTableGraphFetchExecutionNode[1]| ^meta::protocols::pure::vX_X_X::metamodel::executionPlan::RelationalClassQueryTempTableGraphFetchExecutionNode( _type = 'relationalClassQueryTempTableGraphFetch', - tempTableStrategy = if($rel.tempTableStrategy->isNotEmpty(),|$rel.tempTableStrategy->toOne()->meta::protocols::pure::vX_X_X::extension::transformTempTableStrategy($mapping, $extensions),|[]), - resultType = $rel.resultType->meta::protocols::pure::vX_X_X::transformation::fromPureGraph::executionPlan::transformResultType($mapping, $extensions), + tempTableStrategy = if($rel.tempTableStrategy->isNotEmpty(),|$rel.tempTableStrategy->toOne()->meta::protocols::pure::vX_X_X::extension::transformTempTableStrategy($extensions),|[]), + resultType = $rel.resultType->meta::protocols::pure::vX_X_X::transformation::fromPureGraph::executionPlan::transformResultType($extensions), resultSizeRange = $rel.resultSizeRange->isEmpty()->if(|[],|$rel.resultSizeRange->toOne()->meta::protocols::pure::vX_X_X::transformation::fromPureGraph::domain::transformMultiplicity()), tempTableName = $rel.tempTableName, processedTempTableName = $rel.processedTempTableName, columns = $rel.columns->map(c | $c->meta::protocols::pure::vX_X_X::transformation::fromPureGraph::executionPlan::transformResultColumn()), - children = $rel.children->map(c | $c->meta::protocols::pure::vX_X_X::transformation::fromPureGraph::executionPlan::transformNode($mapping, $extensions))->cast(@meta::protocols::pure::vX_X_X::metamodel::executionPlan::RelationalGraphFetchExecutionNode), + children = $rel.children->map(c | $c->meta::protocols::pure::vX_X_X::transformation::fromPureGraph::executionPlan::transformNode($extensions))->cast(@meta::protocols::pure::vX_X_X::metamodel::executionPlan::RelationalGraphFetchExecutionNode), nodeIndex = $rel.nodeIndex, parentIndex = $rel.parentIndex, graphFetchTree = $rel.graphFetchTree->meta::protocols::pure::vX_X_X::transformation::fromPureGraph::valueSpecification::transformGraphFetchTree([], newMap([]->cast(@Pair>)), $extensions) @@ -225,7 +225,7 @@ function meta::protocols::pure::vX_X_X::extension::getRelationalExtension():meta rel:meta::relational::graphFetch::executionPlan::RelationalPrimitiveQueryGraphFetchExecutionNode[1]| ^meta::protocols::pure::vX_X_X::metamodel::executionPlan::RelationalPrimitiveQueryGraphFetchExecutionNode( _type = 'relationalPrimitiveQueryGraphFetch', - resultType = $rel.resultType->meta::protocols::pure::vX_X_X::transformation::fromPureGraph::executionPlan::transformResultType($mapping, $extensions), + resultType = $rel.resultType->meta::protocols::pure::vX_X_X::transformation::fromPureGraph::executionPlan::transformResultType($extensions), resultSizeRange = $rel.resultSizeRange->isEmpty()->if(|[],|$rel.resultSizeRange->toOne()->meta::protocols::pure::vX_X_X::transformation::fromPureGraph::domain::transformMultiplicity()), nodeIndex = $rel.nodeIndex, parentIndex = $rel.parentIndex, @@ -233,24 +233,26 @@ function meta::protocols::pure::vX_X_X::extension::getRelationalExtension():meta ) ] }, - transfers_executionPlan_transformResultType = {mapping:Mapping[1], extensions:meta::pure::extension::Extension[*] | + transfers_executionPlan_transformResultType = {extensions:meta::pure::extension::Extension[*] | [ tds:meta::pure::executionPlan::TDSResultType[1]|^meta::protocols::pure::vX_X_X::metamodel::executionPlan::TDSResultType ( _type='tds', - tdsColumns=$tds.tdsColumns->map(c|^meta::protocols::pure::vX_X_X::metamodel::invocation::execution::execute::TDSColumn + tdsColumns=$tds.tdsColumns->map(c| + let enumMappingTransformed = if($c.enumMapping->isEmpty(), | [], | meta::protocols::pure::vX_X_X::transformation::fromPureGraph::executionPlan::transformEnumMapping($c.enumMapping->toOne())); + ^meta::protocols::pure::vX_X_X::metamodel::invocation::execution::execute::TDSColumn ( name = $c.name, doc = $c.documentation, type = $c.type->toOne()->elementToPath(), - enumMapping = if($c.enumMappingId->isEmpty(),|[],|meta::protocols::pure::vX_X_X::transformation::fromPureGraph::executionPlan::transformEnumMapping($mapping->enumerationMappingByName($c.enumMappingId->toOne())->toOne())), + enumMapping = $enumMappingTransformed, relationalType = $c.sourceDataType->match( [ d:meta::relational::metamodel::datatype::DataType[0]|[], d:meta::relational::metamodel::datatype::DataType[1]|$d->meta::protocols::pure::vX_X_X::transformation::fromPureGraph::store::relational::alloyTypeToString() ] ) - ) + ); ) ), rel:meta::pure::executionPlan::RelationResultType[1]|^meta::protocols::pure::vX_X_X::metamodel::executionPlan::RelationResultType diff --git a/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-generation/legend-engine-xt-relationalStore-pure/src/main/resources/core_relational/relational/relationalMappingExecution.pure b/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-generation/legend-engine-xt-relationalStore-pure/src/main/resources/core_relational/relational/relationalMappingExecution.pure index c661a80c04e..37776a4b419 100644 --- a/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-generation/legend-engine-xt-relationalStore-pure/src/main/resources/core_relational/relational/relationalMappingExecution.pure +++ b/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-generation/legend-engine-xt-relationalStore-pure/src/main/resources/core_relational/relational/relationalMappingExecution.pure @@ -77,7 +77,8 @@ function meta::relational::mapping::generateInstantiationExecutionNode(sq:meta:: name = $p.first, type = $p.second.type->cast(@meta::pure::metamodel::type::DataType), documentation = $p.second.documentation, - enumMappingId = if($exeCtx->contextHasFlag(meta::pure::executionPlan::features::Feature.PUSH_DOWN_ENUM_TRANSFORM),|[] ,| $p.second.propertyMapping->match([r:RelationalPropertyMapping[0..1] | $r.transformer->cast(@EnumerationMapping).name, p:PropertyMapping[0..1] | []])), + enumMappingId = if($exeCtx->contextHasFlag(meta::pure::executionPlan::features::Feature.PUSH_DOWN_ENUM_TRANSFORM),|[] ,| $p.second.propertyMapping->match([r:RelationalPropertyMapping[0..1] | $r.transformer->cast(@EnumerationMapping).name, p:PropertyMapping[0..1] | []])), + enumMapping = if($exeCtx->contextHasFlag(meta::pure::executionPlan::features::Feature.PUSH_DOWN_ENUM_TRANSFORM), | [], | $p.second.propertyMapping->match([r:RelationalPropertyMapping[0..1] | $r.transformer->cast(@EnumerationMapping), p:PropertyMapping[0..1] | []])), offset = $paths->indexOf($p), sourceDataType = if($p.second.relationalType->isNotEmpty(), | $p.second.relationalType, diff --git a/legend-engine-xts-serviceStore/legend-engine-xt-serviceStore-pure/src/main/resources/core_servicestore/protocols/pure/vX_X_X/extension/extension_serviceStore.pure b/legend-engine-xts-serviceStore/legend-engine-xt-serviceStore-pure/src/main/resources/core_servicestore/protocols/pure/vX_X_X/extension/extension_serviceStore.pure index 36b219655b9..c6dc67730df 100644 --- a/legend-engine-xts-serviceStore/legend-engine-xt-serviceStore-pure/src/main/resources/core_servicestore/protocols/pure/vX_X_X/extension/extension_serviceStore.pure +++ b/legend-engine-xts-serviceStore/legend-engine-xt-serviceStore-pure/src/main/resources/core_servicestore/protocols/pure/vX_X_X/extension/extension_serviceStore.pure @@ -36,12 +36,12 @@ function meta::protocols::pure::vX_X_X::extension::store::service::getServiceSto [ serviceStoreConnection:ServiceStoreConnection[1] | $serviceStoreConnection->meta::protocols::pure::vX_X_X::transformation::fromPureGraph::connection::store::service::transformServiceStoreConnection($extensions) ]}, - transfers_executionPlan_transformNode = {mapping:Mapping[1], extensions:meta::pure::extension::Extension[*] | + transfers_executionPlan_transformNode = {extensions:meta::pure::extension::Extension[*] | [ ser:meta::external::store::service::executionPlan::nodes::RestServiceExecutionNode[1]| ^meta::protocols::pure::vX_X_X::metamodel::executionPlan::store::service::RestServiceExecutionNode( _type = 'restService', - resultType = $ser.resultType->meta::protocols::pure::vX_X_X::transformation::fromPureGraph::executionPlan::transformResultType($mapping, $extensions), + resultType = $ser.resultType->meta::protocols::pure::vX_X_X::transformation::fromPureGraph::executionPlan::transformResultType($extensions), url = $ser.url, method = $ser.method, mimeType = $ser.mimeType, @@ -62,13 +62,13 @@ function meta::protocols::pure::vX_X_X::extension::store::service::getServiceSto spr:meta::external::store::service::executionPlan::nodes::ServiceParametersResolutionExecutionNode[1]| ^meta::protocols::pure::vX_X_X::metamodel::executionPlan::store::service::ServiceParametersResolutionExecutionNode( _type = 'serviceParametersResolution', - resultType = $spr.resultType->meta::protocols::pure::vX_X_X::transformation::fromPureGraph::executionPlan::transformResultType($mapping, $extensions), + resultType = $spr.resultType->meta::protocols::pure::vX_X_X::transformation::fromPureGraph::executionPlan::transformResultType($extensions), requestParametersBuildInfo = $spr.requestParametersBuildInfo->map(p | $p->meta::protocols::pure::vX_X_X::transformation::fromPureGraph::store::service::mapping::transformServiceRequestParametersBuildInfo($extensions)) ), limit:meta::external::store::service::executionPlan::nodes::LimitExecutionNode[1]| ^meta::protocols::pure::vX_X_X::metamodel::executionPlan::store::service::LimitExecutionNode( _type='limit', - resultType=$limit.resultType->meta::protocols::pure::vX_X_X::transformation::fromPureGraph::executionPlan::transformResultType($mapping, $extensions), + resultType=$limit.resultType->meta::protocols::pure::vX_X_X::transformation::fromPureGraph::executionPlan::transformResultType($extensions), limit = $limit.limit ) ]},