Hi,
I
recently involved in fixing bug [0]. While fixing it, I was bit
confused that, PMA
renders user input as it is while inline editing,
without getting real value saved in database. Yes, PMA do this after
checking the result of query execution function. But though result is
not an error, it doesn't mean that data is saved as it was.
Mainly this
happens with numeric fields. Just type decimal
value for column with
integer type and see what happens after refresh. As mentioned bug
description, MySQL truncate numeric data (not sure about other data
types) without noticing.
Of course checking again the saved value is cost. But it's really
odd to
see a less precise data, represent the real data.
I think it's
better to
clearly identify the data types, with or without
having this
behaviour.
So that, we can only recheck needed columns.
When introducing inline edit functionality, this may have been
discussed. But I think better to discuss again. What do you think ?
It sounds quite simple to me, so not sure if I'm missing something here.
Anyway, we could just check if any warnings were generated by the query
(mysql_warning_count or similar function). If yes, then select the value
and send it to the client along with the response. Right?
Rouslan,
Yeah, there are functions to detect warnings. But unfortunately this
kind of queries doesn't throw warnings. As I mentioned MySQL doesn't
notice about the data truncation.
You absolutely sure? Because to me it looks like MySQL *is* throwing
warnings. See this:
mysql> use sakila;
Database changed
mysql> insert into actor (actor_id, first_name, last_name)
values ("foo","bar","baz");
Query OK, 1 row affected, 1 warning (0.00 sec)
mysql> insert into actor (actor_id, first_name, last_name)
values (99999999,"bar","baz");
Query OK, 1 row affected, 1 warning (0.00 sec)