[Phpmyadmin-devel] Improved notification when attempting to insert invalid data.

Isaac Bennetch bennetch at gmail.com
Fri Aug 1 16:36:07 CEST 2014



On 8/1/14, 7:09 AM, Chirayu Chiripal wrote:
> On Tue, Jul 29, 2014 at 11:33 PM, Chirayu Chiripal
> <chirayu.chiripal at gmail.com <mailto:chirayu.chiripal at gmail.com>> wrote:
> 
>     On Tue, Jul 29, 2014 at 11:02 PM, Isaac Bennetch <bennetch at gmail.com
>     <mailto:bennetch at 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 at gmail.com <mailto:bennetch at gmail.com>
>         > <mailto:bennetch at gmail.com <mailto:bennetch at 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
> 
> 
> One thing which I didn't knew was that JS can handle numbers upto 53
> bits without loosing precision. But as soon as number goes beyond that,
> then some round off error tends to occur. As MySQL, can have integers
> upto 64 bits length, the JS number comparison will not work. So, I have
> written my own BigInts comparison function to compare them in string
> format itself.

This looks like a great approach.

>         >
>         >
>         > 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.
> 
> 
> To test whether JS handles multibyte character strings length correctly,
> I compared the result of MySQL's CHAR_LENGTH(str) and JS's str.length
> with some random strings from different languages (Hindi, Gujarati,
> Chinese, Japanese) and the results were identical. So, I think we can
> rely on JS length property.

Good job testing this. I agree that because of this we can rely on the
JavaScript length property.

> 
>         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. 
> 
> 
> 
> ------------------------------------------------------------------------------
> Want fast and easy access to all the code in your enterprise? Index and
> search up to 200,000 lines of code with a free copy of Black Duck
> Code Sight - the same software that powers the world's largest code
> search on Ohloh, the Black Duck Open Hub! Try it now.
> http://p.sf.net/sfu/bds
> 
> 
> 
> _______________________________________________
> Phpmyadmin-devel mailing list
> Phpmyadmin-devel at lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/phpmyadmin-devel
> 




More information about the Developers mailing list