diff --git a/src/Fogger/Data/ChunkProducer.php b/src/Fogger/Data/ChunkProducer.php index 257bf9e..1422031 100644 --- a/src/Fogger/Data/ChunkProducer.php +++ b/src/Fogger/Data/ChunkProducer.php @@ -41,14 +41,24 @@ private function queueTableChunks(Table $table) $counter = 0; $keys = []; + $last_key = null; - while ($key = $result->fetchColumn()) { + while (($key = $result->fetchColumn()) !== False) { $keys[] = $key; $counter++; if (0 === $counter % $table->getChunkSize()) { + + do { + $last_key = $key; + $key = $result->fetchColumn(); + $counter++; + } while ($last_key === $key); + $this->chunkCache->pushMessage($table, $keys); $keys = []; + $keys[] = $key; } + $last_key = $key; } if (0 !== $counter % $table->getChunkSize()) { $this->chunkCache->pushMessage($table, $keys); diff --git a/src/Fogger/Mask/EchoMask.php b/src/Fogger/Mask/EchoMask.php new file mode 100644 index 0000000..61a0e8b --- /dev/null +++ b/src/Fogger/Mask/EchoMask.php @@ -0,0 +1,20 @@ +getColumns()[0]; } } + if ($table->getPrimaryKey()) { + return $table->getPrimaryKeyColumns()[0]; + } + foreach ($table->getIndexes() as $index) { + if ($index->isUnique()) { + return $index->getColumns()[0]; + } + } return null; }