← Back to team overview

maria-discuss team mailing list archive

Re: warning 1292

 

I disagree about as vehemently as possible.  You should get a warning on
comparisons between incompatible types that cause float conversions.  You
get unexpected wrong results otherwise.  The MySQL warning is therefor
critical.

Not warning for this is just as stupid as not having ONLY_FULL_GROUP_BY on
by default, which I think is downright sinful.

--Swany


On Wed, Dec 11, 2013 at 12:23 PM, Sergei Golubchik <serg@xxxxxxxxxxx> wrote:

> Hi, Federico!
>
> On Dec 11, Federico Razzoli wrote:
> > Hi! MySQL 5.6 returns a warning for wrong datatypes, with any SQL_MODE:
> >
> > mysql> CREATE TABLE t (c TIMESTAMP) ENGINE=InnoDB;
> > Query OK, 0 rows affected (0,31 sec)
> >
> > mysql> SELECT c FROM t WHERE c = 1;
> > Empty set, 1 warning (0,00 sec)
>
> > Warning (Code 1292): Incorrect datetime value: '1' for column 'c' at row
> 1
> >
> > Will this be done in MariaDB 10 too? Currently, no warning is issued.
>
> This is intentional. You get a warning if you do, for example
>
>   INSERT t VALUES (1);
>
> because in this case a decimal value 1 is converted into a TIMESTAMP.
>
> But for comparison purposes you only need to know whether c is equal to
> 1 or not. You did not request any conversion, you only asked the server
> whether these values are equal. Thus you should not expect any warnings
> either.
>
> Regards,
> Sergei
>
>
> _______________________________________________
> Mailing list: https://launchpad.net/~maria-discuss
> Post to     : maria-discuss@xxxxxxxxxxxxxxxxxxx
> Unsubscribe : https://launchpad.net/~maria-discuss
> More help   : https://help.launchpad.net/ListHelp
>

Follow ups

References