*/ public static function providerForTestHasAccountLocking(): array { return [ 'MySQL 5.7.5' => [false, false, 50705], 'MySQL 5.7.6' => [true, false, 50706], 'MySQL 5.7.7' => [true, false, 50707], 'MariaDB 10.4.1' => [false, true, 100401], 'MariaDB 10.4.2' => [true, true, 100402], 'MariaDB 10.4.3' => [true, true, 100403], ]; } #[DataProvider('providerForTestIsUUIDSupported')] public function testIsUUIDSupported(bool $expected, bool $isMariaDb, int $version): void { $dbiStub = self::createStub(DatabaseInterface::class); $dbiStub->method('isMariaDB')->willReturn($isMariaDb); $dbiStub->method('getVersion')->willReturn($version); self::assertSame($expected, Compatibility::isUUIDSupported($dbiStub)); } /** @return array */ public static function providerForTestIsVectorSupported(): array { return [ 'MySQL 8.99.99' => [false, false, 89999], 'MySQL 9.0.0' => [false, false, 90000], 'MariaDB 11.6.99' => [false, true, 110699], 'MariaDB 11.7.1' => [true, true, 110701], ]; } #[DataProvider('providerForTestIsVectorSupported')] public function testIsVectorSupported(bool $expected, bool $isMariaDb, int $version): void { $dbiStub = self::createStub(DatabaseInterface::class); $dbiStub->method('isMariaDB')->willReturn($isMariaDb); $dbiStub->method('getVersion')->willReturn($version); self::assertSame($expected, Compatibility::isVectorSupported($dbiStub)); } /** * @return mixed[][] * @psalm-return array */ public static function providerForTestIsUUIDSupported(): array { return [ 'MySQL 5.7.5' => [false, false, 50705], 'MySQL 8.0.30' => [false, false, 80030], 'MariaDB 10.6.0' => [false, true, 100600], 'MariaDB 10.7.0' => [true, true, 100700], ]; } #[DataProvider('providerForTestIsJsonSupported')] public function testIsJsonSupported(bool $expected, bool $isMariaDb, int $version): void { $dbiStub = self::createStub(DatabaseInterface::class); $dbiStub->method('isMariaDB')->willReturn($isMariaDb); $dbiStub->method('getVersion')->willReturn($version); self::assertSame($expected, Compatibility::isJsonSupported($dbiStub)); } /** @return array */ public static function providerForTestIsJsonSupported(): array { return [ 'MySQL 5.7.7' => [false, false, 50707], 'MySQL 5.7.8' => [false, true, 50708], 'MariaDB 10.2.6' => [false, true, 100206], 'MariaDB 10.2.7' => [true, true, 100207], ]; } #[DataProvider('showBinLogStatusProvider')] public function testGetShowBinLogStatusStmt(string $serverName, int $version, string $expected): void { $dbi = self::createStub(DatabaseInterface::class); $dbi->method('isMySql')->willReturn($serverName === 'MySQL'); $dbi->method('isMariaDB')->willReturn($serverName === 'MariaDB'); $dbi->method('getVersion')->willReturn($version); self::assertSame($expected, Compatibility::getShowBinLogStatusStmt($dbi)); } /** @return iterable */ public static function showBinLogStatusProvider(): iterable { yield ['MySQL', 80200, 'SHOW BINARY LOG STATUS']; yield ['MariaDB', 100502, 'SHOW BINLOG STATUS']; yield ['MySQL', 80199, 'SHOW MASTER STATUS']; yield ['MariaDB', 100501, 'SHOW MASTER STATUS']; yield ['MySQL', 100502, 'SHOW BINARY LOG STATUS']; } }