Skip to content

Commit 9d3d4fd

Browse files
committed
SqlsrvDriver: converts BIT to boolean (BC break)
1 parent f54433d commit 9d3d4fd

3 files changed

Lines changed: 5 additions & 2 deletions

File tree

src/Database/Drivers/Engines/SQLServerEngine.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ public function resolveTypeConverter(TypeConverter $converter, string $nativeTyp
3636
{
3737
return match ($nativeType) {
3838
'timestamp' => null, // timestamp does not mean time in sqlsrv
39+
'bit' => $converter->convertBoolean ? fn($value) => (bool) $value : null,
3940
'decimal', 'numeric',
4041
'double', 'double precision', 'float', 'real', 'money', 'smallmoney' => fn($value) => (float) (is_string($value) && str_starts_with($value, '.') ? '0' . $value : $value),
4142
default => $converter->resolve($nativeType),

src/Database/Drivers/PDO/SQLSrv/Connection.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@
1414

1515
/**
1616
* PDO SQL Server database driver connection.
17+
* Driver options:
18+
* - convertBoolean => converts BIT to boolean
1719
*/
1820
class Connection extends Drivers\PDO\Connection
1921
{

tests/Database/ResultSet.normalizeRow.sqlsrv.phpt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ $res = $connection->query('SELECT * FROM types');
2121
Assert::equal([
2222
'bigint' => 1,
2323
'binary_3' => "\x00\x00\xFF",
24-
'bit' => '1',
24+
'bit' => true,
2525
'char_5' => 'a ',
2626
'date' => new DateTime('2012-10-13 00:00:00'),
2727
'datetime' => new DateTime('2012-10-13 10:10:10'),
@@ -54,7 +54,7 @@ Assert::equal([
5454
Assert::equal([
5555
'bigint' => 0,
5656
'binary_3' => "\x00\x00\x00",
57-
'bit' => '0',
57+
'bit' => false,
5858
'char_5' => ' ',
5959
'date' => new DateTime('0001-01-01 00:00:00'),
6060
'datetime' => new DateTime('1753-01-01 00:00:00'),

0 commit comments

Comments
 (0)