[whatwg] several messages about the versioning feature in the SQL API

On Oct 17, 2007, at 12:47 AM, Ian Hickson wrote:

>
>> But I also have some confusion about the actual intention of the  
>> method.
>> The line that is the source of most confusion - "When the method is
>> invoked, the user agent must obtain a full lock of the database  
>> (waiting
>> for all open transactions to be closed), and then must verify that  
>> the
>> current version of the database matches the first argument to the
>> method."
>>
>> It's easy to read this line as stating that changeVersion() needs to
>> block waiting for all nested levels of executeSql() and their  
>> callbacks
>> to complete, which seems nonsensical.
>
> Actually that's what we want -- the method is intended for when you  
> want
> to change the schema of the database. First you want to wait for all
> outstanding changes to be committed, and then you want the schema to  
> be
> changed.

I think the remaining problem is that you can't make the version  
change atomic with the transaction you use to actually upgrade the  
schema. This could be fixed by making changeVersion() open a  
transaction which is the current transaction during its callback, with  
the requirement that the version is automatically rolled back if the  
transaction is. Then you can do the actual schema upgrade from  
changeVersion()'s callback. I believe this is reasonable to implement  
and would make database upgrades more sound.

Regards,
Maciej

Received on Wednesday, 17 October 2007 01:50:51 UTC