On Mon, Mar 12, 2012 at 1:23 AM, James Russell Moore <
j.russell.mo...@gmail.com> wrote:

> Hello, I just saw what could be a possible typo when acquiring a pending
> lock.
>
> In the current version of the amalgamation (3.7.10) line 23200 there is the
> following code:
>

The code in question is part of the OS/2 driver, which is contributed
code.  Nobody on the core SQLite team has the capability of compiling or
testing SQLite on OS/2.

If any OS/2 users see this, can you please look into the matter for us?



>
>  /* Acquire a PENDING lock
>  */
>  if( locktype==EXCLUSIVE_LOCK && res == NO_ERROR ){
>    newLocktype = PENDING_LOCK;
>    gotPendingLock = 0;
>    OSTRACE(( "LOCK %d acquire pending lock. pending lock boolean unset.\n",
>               pFile->h ));
>  }
>
> In the surroundings of that snippet there are checks to acquire the
> different kinds of locks but in all of them the lock type is tested against
> what's is being acquired. Furthermore, the next test following this one to
> acquire an exclusive lock has the same condition, which wouldn't
> be necessary if the current code for the pending lock is correct:
>
> /* Acquire an EXCLUSIVE lock
>  */
>  if( locktype==EXCLUSIVE_LOCK && res == NO_ERROR ){
>   assert( pFile->locktype>=SHARED_LOCK );
>   res = unlockReadLock(pFile);
> ...
>
> In line 33996 the same situation happens:
>
>  /* Acquire a PENDING lock
>  */
>  if( locktype==EXCLUSIVE_LOCK && res ){
>   newLocktype = PENDING_LOCK;
>   gotPendingLock = 0;
>  }
>
> It could be nothing, since I don't have a deep knowledge on how SQLite is
> implemented, but in the documentation in
> SQLite.org<http://sqlite.org/lockingv3.html>the following text
> appears:
>
> "A PENDING lock means that the process holding the lock wants to write to
> the database as soon as possible and is just waiting on all current SHARED
> locks to clear so that it can get an EXCLUSIVE lock."
>
> Given the name of the variables involved in those pieces of code going from
> an EXCLUSIVE lock to a PENDING lock doesn't seem logical. I've attached a
> patch on how I think is correct in case it is preferable (available
> here<http://pastebin.com/phEUEAiY>
>  too).
>
> Sorry for the trouble caused if the current state is correct.
>
> Kind regards,
> James Russell.
>
> _______________________________________________
> sqlite-users mailing list
> sqlite-users@sqlite.org
> http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users
>
>


-- 
D. Richard Hipp
d...@sqlite.org
_______________________________________________
sqlite-users mailing list
sqlite-users@sqlite.org
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to