I think I misunderstood the problem. Both of the following should have the same error behavior, but the first insert succeeds where it should not, because the parser wraps values before the storage engine sees them.
drizzle> insert into t1 values (18446744073709551615);
Query OK, 1 row affected (0 sec)
drizzle> select * from t1;
+------+
| c1 |
+------+
| -1 |
+------+
1 row in set (0 sec)
insert into t1 values(pow(2,64));
ERROR 1264 (22003): Out of range value for column 'c1' at row 1
I think I misunderstood the problem. Both of the following should have the same error behavior, but the first insert succeeds where it should not, because the parser wraps values before the storage engine sees them.
drizzle> insert into t1 values (18446744073709 551615) ;
Query OK, 1 row affected (0 sec)
drizzle> select * from t1;
+------+
| c1 |
+------+
| -1 |
+------+
1 row in set (0 sec)
insert into t1 values(pow(2,64));
ERROR 1264 (22003): Out of range value for column 'c1' at row 1