Class MapMergeFunctionIterator
java.lang.Object
org.rumbledb.runtime.RuntimeIterator
org.rumbledb.runtime.AtMostOneItemLocalRuntimeIterator
org.rumbledb.runtime.functions.maps.MapMergeFunctionIterator
- All Implemented Interfaces:
com.esotericsoftware.kryo.KryoSerializable,Serializable,RuntimeIteratorInterface
W3C XPath/XQuery
map:merge:
Implements the FO 3.1 conceptual semantics:
let $duplicates-handler := map {
"use-first": function($a, $b) {$a},
"use-last": function($a, $b) {$b},
"combine": function($a, $b) {$a, $b},
"reject": function($a, $b) {fn:error($FOJS0003)},
"use-any": function($a, $b) { ... implementation-dependent ... }
},
$combine-maps := function($A as map(*), $B as map(*), $deduplicator as function(*)) {
fn:fold-left(map:keys($B), $A, function($z, $k){
if (map:contains($z, $k))
then map:put($z, $k, $deduplicator($z($k), $B($k)))
else map:put($z, $k, $B($k))
})
}
return fn:fold-left($MAPS, map{},
$combine-maps(?, ?, $duplicates-handler(($OPTIONS?duplicates, "use-first")[1])))
This implementation stays local-only and mirrors that behaviour using the existing MapItem
representation and MapAtomicSameKey key equality via MapItem.getSequenceByKey().
- See Also:
-
Field Summary
Fields inherited from class org.rumbledb.runtime.RuntimeIterator
children, currentDynamicContextForLocalExecution, FLOW_EXCEPTION_MESSAGE, hasNext, isOpen, isSequential, isUpdating, staticContext, staticURI -
Constructor Summary
ConstructorsConstructorDescriptionMapMergeFunctionIterator(List<RuntimeIterator> arguments, RuntimeStaticContext staticContext) -
Method Summary
Methods inherited from class org.rumbledb.runtime.AtMostOneItemLocalRuntimeIterator
close, getEffectiveBooleanValueOrCheckPosition, getRDD, materialize, materializeAtMostOneItemOrNull, materializeExactlyOneItem, materializeNFirstItems, next, open, resetMethods inherited from class org.rumbledb.runtime.RuntimeIterator
bindToVariableInDynamicContext, canProduceDataFrame, deepCopy, generateNativeQuery, getConfiguration, getDataFrame, getEffectiveBooleanValue, getHighestExecutionMode, getMetadata, getOrCreateDataFrame, getPendingUpdateList, getRuntimeStaticContext, getStaticType, getVariableDependencies, hasNext, isDataFrame, isLocal, isOpen, isRDD, isRDDOrDataFrame, isSequential, isSparkJobNeeded, isUpdating, materialize, materializeAtMostOneItemOrDefault, print, printToStandardError, read, setStaticContext, write
-
Constructor Details
-
MapMergeFunctionIterator
public MapMergeFunctionIterator(List<RuntimeIterator> arguments, RuntimeStaticContext staticContext)
-
-
Method Details
-
materializeFirstItemOrNull
- Specified by:
materializeFirstItemOrNullin classAtMostOneItemLocalRuntimeIterator
-