@@ -628,17 +628,19 @@ function parse_field($tokens){
628628 $ this ->parse_field_length ($ tokens , $ f );
629629 break ;
630630
631- # CHAR[(length)] [CHARACTER SET charset_name] [COLLATE collation_name]
631+ # CHAR[(length)] [BINARY] [ CHARACTER SET charset_name] [COLLATE collation_name]
632632 case 'CHAR ' :
633633
634+ $ this ->parse_field_binary ($ tokens , $ f );
634635 $ this ->parse_field_length ($ tokens , $ f );
635636 $ this ->parse_field_charset ($ tokens , $ f );
636637 $ this ->parse_field_collate ($ tokens , $ f );
637638 break ;
638639
639- # VARCHAR(length) [CHARACTER SET charset_name] [COLLATE collation_name]
640+ # VARCHAR(length) [BINARY] [ CHARACTER SET charset_name] [COLLATE collation_name]
640641 case 'VARCHAR ' :
641642
643+ $ this ->parse_field_binary ($ tokens , $ f );
642644 $ this ->parse_field_length ($ tokens , $ f );
643645 $ this ->parse_field_charset ($ tokens , $ f );
644646 $ this ->parse_field_collate ($ tokens , $ f );
@@ -653,7 +655,7 @@ function parse_field($tokens){
653655 case 'MEDIUMTEXT ' :
654656 case 'LONGTEXT ' :
655657
656- # binary
658+ $ this -> parse_field_binary ( $ tokens , $ f );
657659 $ this ->parse_field_charset ($ tokens , $ f );
658660 $ this ->parse_field_collate ($ tokens , $ f );
659661 break ;
@@ -992,6 +994,15 @@ function parse_field_length_decimals(&$tokens, &$f){
992994 }
993995 }
994996
997+ function parse_field_binary (&$ tokens , &$ f ){
998+ if (count ($ tokens ) >= 1 ){
999+ if (StrToUpper ($ tokens [0 ]) == 'BINARY ' ){
1000+ $ f ['binary ' ] = true ;
1001+ array_shift ($ tokens );
1002+ }
1003+ }
1004+ }
1005+
9951006 function parse_field_unsigned (&$ tokens , &$ f ){
9961007 if (count ($ tokens ) >= 1 ){
9971008 if (StrToUpper ($ tokens [0 ]) == 'UNSIGNED ' ){
@@ -1013,7 +1024,7 @@ function parse_field_zerofill(&$tokens, &$f){
10131024 function parse_field_charset (&$ tokens , &$ f ){
10141025 if (count ($ tokens ) >= 1 ){
10151026 if (StrToUpper ($ tokens [0 ]) == 'CHARACTER SET ' ){
1016- $ f ['character_set ' ] = $ tokens [1 ];
1027+ $ f ['character_set ' ] = $ this -> decode_identifier ( $ tokens [1 ]) ;
10171028 array_shift ($ tokens );
10181029 array_shift ($ tokens );
10191030 }
@@ -1023,7 +1034,7 @@ function parse_field_charset(&$tokens, &$f){
10231034 function parse_field_collate (&$ tokens , &$ f ){
10241035 if (count ($ tokens ) >= 1 ){
10251036 if (StrToUpper ($ tokens [0 ]) == 'COLLATE ' ){
1026- $ f ['collation ' ] = $ tokens [1 ];
1037+ $ f ['collation ' ] = $ this -> decode_identifier ( $ tokens [1 ]) ;
10271038 array_shift ($ tokens );
10281039 array_shift ($ tokens );
10291040 }
0 commit comments