Skip to content

Commit

Permalink
fix issue krowinski#125
Browse files Browse the repository at this point in the history
  • Loading branch information
hetao29 committed Aug 30, 2024
1 parent 6ca015c commit 418625f
Show file tree
Hide file tree
Showing 5 changed files with 21 additions and 11 deletions.
4 changes: 2 additions & 2 deletions composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
"ext-json": "*",
"ext-sockets": "*",
"doctrine/collections": "^2.1",
"doctrine/dbal": "^3.8",
"doctrine/dbal": "^4.0",
"psr/log": "^3.0",
"psr/simple-cache": "^3.0",
"symfony/event-dispatcher": "^6.0|^7.0"
Expand All @@ -26,7 +26,7 @@
"kubawerlos/php-cs-fixer-custom-fixers": "^3.19",
"monolog/monolog": "^3.5",
"phpstan/phpstan": "^1.10",
"phpunit/phpunit": "^10.5",
"phpunit/phpunit": "^11.0",
"symplify/easy-coding-standard": "^12.1"
},
"license": "MIT",
Expand Down
22 changes: 16 additions & 6 deletions src/MySQLReplication/BinaryDataReader/BinaryDataReader.php
Original file line number Diff line number Diff line change
Expand Up @@ -114,16 +114,21 @@ public function readUInt24(): int
return $data[1] + ($data[2] << 8) + ($data[3] << 16);
}

public function readUInt64(): string
public function readUInt64(): string|int
{
return $this->unpackUInt64($this->read(self::UNSIGNED_INT64_LENGTH));
}

public function unpackUInt64(string $binary): string
public function unpackUInt64(string $binary): string|int
{
$data = self::unpack('V*', $binary);

return bcadd((string)$data[1], bcmul((string)$data[2], bcpow('2', '32')));
$num = bcadd((string)$data[1], bcmul((string)$data[2], bcpow('2', '32')));
if($num>PHP_INT_MAX || $num<PHP_INT_MIN){
return $num;
}else{
return intval($num);
}
}

public function readInt24(): int
Expand All @@ -138,11 +143,16 @@ public function readInt24(): int
return $res;
}

public function readInt64(): string
public function readInt64(): string|int
{
$data = self::unpack('V*', $this->read(self::UNSIGNED_INT64_LENGTH));

return bcadd((string)$data[1], (string)($data[2] << 32));
$num = bcadd((string)$data[1], (string)($data[2] << 32));
if($num>PHP_INT_MAX || $num<PHP_INT_MIN){
return $num;
}else{
return intval($num);
}
}

public function readLengthString(int $size): string
Expand Down Expand Up @@ -286,7 +296,7 @@ public function readDouble(): float

public function readTableId(): string
{
return $this->unpackUInt64($this->read(self::UNSIGNED_INT48_LENGTH) . chr(0) . chr(0));
return (string)$this->unpackUInt64($this->read(self::UNSIGNED_INT48_LENGTH) . chr(0) . chr(0));
}

public function isComplete(int $size): bool
Expand Down
2 changes: 1 addition & 1 deletion src/MySQLReplication/Event/RotateEvent.php
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ class RotateEvent extends EventCommon
{
public function makeRotateEventDTO(): RotateDTO
{
$binFilePos = $this->binaryDataReader->readUInt64();
$binFilePos = (string)$this->binaryDataReader->readUInt64();
$binFileName = $this->binaryDataReader->read(
$this->eventInfo->getSizeNoHeader() - $this->getSizeToRemoveByVersion()
);
Expand Down
2 changes: 1 addition & 1 deletion src/MySQLReplication/Event/RowEvent/RowEvent.php
Original file line number Diff line number Diff line change
Expand Up @@ -416,7 +416,7 @@ public function makeUpdateRowsDTO(): ?UpdateRowsDTO

protected function findTableMap(): ?TableMap
{
$tableId = $this->binaryDataReader->readTableId();
$tableId = (string)$this->binaryDataReader->readTableId();
$this->binaryDataReader->advance(2);

if (in_array(
Expand Down
2 changes: 1 addition & 1 deletion src/MySQLReplication/Event/XidEvent.php
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,6 @@ class XidEvent extends EventCommon
{
public function makeXidDTO(): XidDTO
{
return new XidDTO($this->eventInfo, $this->binaryDataReader->readUInt64());
return new XidDTO($this->eventInfo, (string)$this->binaryDataReader->readUInt64());
}
}

0 comments on commit 418625f

Please sign in to comment.