[Phpmyadmin-devel] BINARY and VARBINARY

Marc Delisle DelislMa at CollegeSherbrooke.qc.ca
Sat Aug 28 07:22:01 CEST 2004


Alexander M. Turek wrote:
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
> 
> Hi devels,
> 
> it looks as if MySQL has silently deprecated the BINARY sttribute in
> MySQL 4.1. If you create a CHAR(3) BINARY field, it becomes CHAR(3)
> CHARACTER SET latin1 COLLATE latin1_bin.
> 
> Old [VAR]CHAR BINARY fields are mapped to [VAR]BINARY. This leads us to
> various incompatibilities:
> 
> 1) We don't have these fields in our list of possible table fields and I
> don't know if MySQL 3.23.32 supports the syntax, so adding them
> generally wouldn't we a good idea, imho.

I just merged some changes. I add BINARY and VARBINARY column types 
dynamically to $GLOBALS['cfg']['ColumnTypes'] on MySQL 4.1.x.

> 
> 2) tbl_properties_structure.php recognizes these fields correctly as
> binary fields, but strips off the string "BINARY", so "VARBINARY(20)"
> becomes "var(20)" and even worse "BINARY(20)" becomes "(20)".

fixed.

> 
> 3) when trying to alter these fields, both are recognized as VARCHAR
> BINARY, which is dangerous because if we just want to change the size
> for instance, they get changed to "VARCHAR CHARACTER SET latin1 COLLATE
> latin1_bin"...

fixed

> 
> 3) The binary column in tbl_properties_structure is superfluous, imho.
> And so is the BINARY entry in the list of field attributes.
> 

You mean the Attributes column?
The BINARY entry is superfluous only under MySQL 4.1.x, right?

> 4) The parser does not recognize BINARY as column type.

fixed

Marc

> 
> Here's a simple table for reproducing the problem:
> 
> CREATE TABLE `binarytest` (
>   `one` binary(3),
>   `two` varbinary(10)
> )
> 
> - --
> 
> Alexander M. Turek





More information about the Developers mailing list