diff --git a/CHANGELOG.md b/CHANGELOG.md index 8caa046668ab266040c157efd976d7ccc4cb2e32..fb70e42398f2b04b2d312f98c9350b6fc4b87921 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,6 @@ # Version 1.104 (not yet released) +* Fixed issue with in memory data flows. Such as the duplicate contacts. * Added field for bounded calculations. Bounded calculations are calculations where you specify a minimum bound and maximum bound. If the value is outside the bounds the minimum value or maximum value is shown. # Version 1.103 diff --git a/Civi/DataProcessor/DataFlow/CombinedDataFlow/CombinedDataFlow.php b/Civi/DataProcessor/DataFlow/CombinedDataFlow/CombinedDataFlow.php index f9ff18fe850b0c06c5361d7271eccb5b8bf55980..248b67ba957a3d910d03652f2f7acd50e770ffc1 100644 --- a/Civi/DataProcessor/DataFlow/CombinedDataFlow/CombinedDataFlow.php +++ b/Civi/DataProcessor/DataFlow/CombinedDataFlow/CombinedDataFlow.php @@ -127,20 +127,16 @@ class CombinedDataFlow extends AbstractDataFlow implements MultipleSourceDataFlo $dataFlow->convertJoinClausesToWhereClause(); } } - for($i=0; $i<count($this->sourceDataFlowDescriptions); $i++) { - do { - $batch = []; - try { - $batch = $this->getAllRecordsFromDataFlowAsArray($this->sourceDataFlowDescriptions[$i]->getDataFlow(), $this->batchSize); - for($j=$i+1; $j<count($this->sourceDataFlowDescriptions); $j++) { - $this->sourceDataFlowDescriptions[$j]->getJoinSpecification()->prepareRightDataFlow($batch, $this->sourceDataFlowDescriptions[$j]->getDataFlow()); - $rightRecords = $this->getAllRecordsFromDataFlowAsArray($this->sourceDataFlowDescriptions[$j]->getDataFlow()); - $batch = $this->sourceDataFlowDescriptions[$j]->getJoinSpecification()->join($batch, $rightRecords); - } - $allRecords = array_merge($allRecords, $batch); - } catch (DataFlowException $e) { - } - } while(count($batch) >= $this->batchSize || $this->batchSize == 0); + try { + $batch = $this->getAllRecordsFromDataFlowAsArray($this->sourceDataFlowDescriptions[0]->getDataFlow()); + for($j=1; $j<count($this->sourceDataFlowDescriptions); $j++) { + $this->sourceDataFlowDescriptions[$j]->getJoinSpecification()->prepareRightDataFlow($batch, $this->sourceDataFlowDescriptions[$j]->getDataFlow()); + $rightRecords = $this->getAllRecordsFromDataFlowAsArray($this->sourceDataFlowDescriptions[$j]->getDataFlow()); + $batch = $this->sourceDataFlowDescriptions[$j]->getJoinSpecification()->join($batch, $rightRecords); + } + $allRecords = array_merge($allRecords, $batch); + } catch (DataFlowException $e) { + // Do nothing } $this->recordCount = count($allRecords);