Re: [webdatabase] Handling of the query arguments

On Nov 19, 2009, at 2:12 PM, Joćo Eiras wrote:

>
> Hi everyone.
>
> Neither the web database specification, nor the IDL, specify the  
> fine grained handling that implementation must do of the several  
> possible values that can be passed in the 2nd argument to  
> executeSql, considering that those ecmascript values need to be  
> handled by the SQL engine, and therefore converted into a database  
> compatible value.
>
> The only reference to the arguments is the paragraph that tell that  
> the arguments should be replaced, but I've already asked that  
> paragraph language to be reviewed in
> http://lists.w3.org/Archives/Public/public-webapps/2009JulSep/ 
> 1329.html
>
> Handling of ecmascript to database types could be done the following  
> way:
> - numerical values would be converted to REAL
> - strings would be converted to TEXT, including the empty string
> - booleans would be converted to lowercase TEXT "false" or "true"
> - null and undefined would be handled as NULL
> - functions would be converted to TEXT
>
> Objects, which do not fit the primitive types about, can be handled  
> in two ways.
>
> 1) The quick cheap way, which was already hinted, would be to  
> convert them to string.
> However, that's not very helpful, if the object is a native type  
> wrapper like:
> new String("aa");
> new Number(1);
> new Boolean(true)
>
> 2) We can define, in the Web IDL, how an object can be converted to  
> a primitive type.
> Specifically, in an ecmascript binding we can do the following  
> (note: returns means to stop the steps):
> - if object is null, return null
> - if object has a member function called valueOf, invoke valueOf in  
> the context of object
>   - if the returned value is a primitive type, return the value,
> - if object has a member function called toString, invoke toString  
> in the context of object
>   - if the returned value is a primitive type, return the value,
> - return Object.prototype.toString.call(object), so we get "[object  
> Class]"

ECMAScript defines a ToPrimitive conversion (Section 9.1 of ECMA-262  
5th edition). I think the right thing to do would be for some spec to  
point to those steps. Probably it has to be Web Database, because in  
many cases where a Web IDL method takes an "any" type, it's not  
appropriate to do ToPrimitive conversion.

Regards,
Maciej

Received on Thursday, 19 November 2009 22:36:12 UTC