@@ -454,8 +454,12 @@ private function normalize(array &$row): void
454454 continue ;
455455 }
456456 $ value = $ row [$ key ];
457+ $ format = $ this ->formats [$ type ] ?? null ;
457458
458- if ($ type === Type::TEXT ) {
459+ if ($ type === null || $ format === 'native ' ) {
460+ $ row [$ key ] = $ value ;
461+
462+ } elseif ($ type === Type::TEXT ) {
459463 $ row [$ key ] = (string ) $ value ;
460464
461465 } elseif ($ type === Type::INTEGER ) {
@@ -485,7 +489,7 @@ private function normalize(array &$row): void
485489 } elseif ($ type === Type::DATETIME || $ type === Type::DATE || $ type === Type::TIME ) {
486490 if ($ value && substr ((string ) $ value , 0 , 3 ) !== '000 ' ) { // '', null, false, '0000-00-00', ...
487491 $ value = new DateTime ($ value );
488- $ row [$ key ] = empty ($ this -> formats [ $ type ] ) ? $ value : $ value ->format ($ this -> formats [ $ type ] );
492+ $ row [$ key ] = empty ($ format ) ? $ value : $ value ->format ($ format );
489493 } else {
490494 $ row [$ key ] = null ;
491495 }
@@ -499,15 +503,12 @@ private function normalize(array &$row): void
499503 $ row [$ key ] = is_string ($ value ) ? $ this ->getResultDriver ()->unescapeBinary ($ value ) : $ value ;
500504
501505 } elseif ($ type === Type::JSON ) {
502- if ($ this -> formats [ $ type ] === 'string ' ) {
506+ if ($ format === 'string ' ) { // back compatibility with 'native'
503507 $ row [$ key ] = $ value ;
504508 } else {
505- $ row [$ key ] = json_decode ($ value , $ this -> formats [ $ type ] === 'array ' );
509+ $ row [$ key ] = json_decode ($ value , $ format === 'array ' );
506510 }
507511
508- } elseif ($ type === null ) {
509- $ row [$ key ] = $ value ;
510-
511512 } else {
512513 throw new \RuntimeException ('Unexpected type ' . $ type );
513514 }
0 commit comments