On Tue, Jul 29, 2014 at 11:02 PM, Isaac Bennetch <bennetch@gmail.com> wrote:


On 7/29/14, 8:16 AM, Chirayu Chiripal wrote:
> On Tue, Jul 29, 2014 at 1:32 AM, Isaac Bennetch <bennetch@gmail.com
> <mailto:bennetch@gmail.com>> wrote:
>
>     Hi,
>
>     On 7/28/14, 1:30 PM, Chirayu Chiripal wrote:
>     > Hi,
>     >
>     > My GSoC task for this week is "Improved notification when
>     attempting to
>     > insert invalid data". I would like to know at which places
>     validation is
>     > required to be done?
>
>     The idea here is basically that if a user attempts to insert data that
>     will be truncated that we'll warn them. Some of this has already been
>     implemented (for instance, try to insert the text "foo" to a column of
>     type INT(10); the field turns red indicating a problem).
>
>     This can be enhanced, though, for instance the following scenarios do
>     not warn correctly:
>     * Insert 999 to a TINYINT
>     * Insert 99999999999 to an INT
>
>
> For integer types we can change our current input type="text" to input
> type="number" and specify a min and max value using attributes. Or, we
> still have to add a min and max value attribute and use
> Javascript/Jquery to validate the field when it loses focus or at keyup
> event.

I prefer a consistent experience for the user. Even though many browsers
would properly deal with input type="number", it will give different
feedback than our custom handling of, say, too many characters in a
varchar field. So I would like to be consistent and use our own tests
even for INT columns.

Okay, so we will use our own validation.
 

Note that in multibyte character sets, a single character may take
several bytes of data to store. I'm not sure whether it's easy to
correctly count bytes/characters in this case.

Yeah, this is an important thing to be taken care of. I am not sure whether Javascript supports it natively but there should some way to do it. MySQL documentation says that "MySQL interprets length specifications in character column definitions in character units." I am not sure that by character units they mean unicode "code points" or something else.


Another thought: we should allow the user to continue even if we don't
think the data they're entering is okay -- the input field should turn
red, but they should still be allowed to press the submit button and
allow MySQL to truncate.

Sure.