delorie.com/archives/browse.cgi   search  
Mail Archives: cygwin/2013/06/05/15:51:00

X-Recipient: archive-cygwin AT delorie DOT com
DomainKey-Signature: a=rsa-sha1; c=nofws; d=sourceware.org; h=list-id
:list-unsubscribe:list-subscribe:list-archive:list-post
:list-help:sender:message-id:date:from:mime-version:to:subject
:references:in-reply-to:content-type:content-transfer-encoding;
q=dns; s=default; b=WFYYy4A8kjY2bfDNVcaHIRcfB7RBkDSOwkyMsmGRT/6
Eppg+65KChcUtYgy7wD9huQtVS29y1tDqUPpr3gOWFCJn0IoPAbX279+Nc7QseE9
uL7LZv542VveHsOdnHybV41Pg8DQQ2e5Qrm+zFz4B8DhHe8xjb82zix3Ui1kvLwk
=
DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=sourceware.org; h=list-id
:list-unsubscribe:list-subscribe:list-archive:list-post
:list-help:sender:message-id:date:from:mime-version:to:subject
:references:in-reply-to:content-type:content-transfer-encoding;
s=default; bh=HoyiZpzNG7l+TfjhoIlSqOrPWU4=; b=jW+U0lXJDm8ay6l3f
Wcu0iozqZMm2ESlfVR/LDGDwL6AnHfDOe7oZ6TndMrobp2MbEY20gytEbJmPkkJV
K5RACnWRzbBSzsnq7nUovgJtPEKMsKxIABLAbopevyrnJl+B/185+EFV34hH02gL
t+zUorEVvWjkDJEeEgA0eqqtDk=
Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm
List-Id: <cygwin.cygwin.com>
List-Subscribe: <mailto:cygwin-subscribe AT cygwin DOT com>
List-Archive: <http://sourceware.org/ml/cygwin/>
List-Post: <mailto:cygwin AT cygwin DOT com>
List-Help: <mailto:cygwin-help AT cygwin DOT com>, <http://sourceware.org/ml/#faqs>
Sender: cygwin-owner AT cygwin DOT com
Mail-Followup-To: cygwin AT cygwin DOT com
Delivered-To: mailing list cygwin AT cygwin DOT com
X-Spam-SWARE-Status: No, score=-4.0 required=5.0 tests=AWL,BAYES_00,KHOP_THREADED,RP_MATCHES_RCVD autolearn=ham version=3.3.1
Message-ID: <51AF968E.1060707@etr-usa.com>
Date: Wed, 05 Jun 2013 13:50:38 -0600
From: Warren Young <warren AT etr-usa DOT com>
User-Agent: Mozilla/5.0 (Windows NT 6.2; WOW64; rv:17.0) Gecko/20130509 Thunderbird/17.0.6
MIME-Version: 1.0
To: cygwin AT cygwin DOT com
Subject: Re: [TEST] sqlite3-3.7.17-1 (Cygwin 1.7.19 locking feature)
References: <51ACF886 DOT 10301 AT etr-usa DOT com> <51AD3BB4 DOT 2010601 AT acm DOT org> <20130604084128 DOT GB19572 AT calimero DOT vinschen DOT de>
In-Reply-To: <20130604084128.GB19572@calimero.vinschen.de>

On 6/4/2013 02:41, Corinna Vinschen wrote:
> On Jun  3 17:58, David Rothenberger wrote:
>>
>> ... initial results with the Subversion test suite (for 1.8.0-rc2) show
>> that most tests fail with a "sqlite: database is locked (S5)" error
>> unless CYGWIN_SQLITE_LOCKING=posix.
>
> The question now is: Why?  The problem here is that the semantics of
> POSIX locks and Windows locks is so very different.  I guess that
> sqlite, when build in POSIX mode, (rightfully) assumes that the POSIX
> locks behave like POSIX locks and so uses them accordingly.  This
> collides with the way Windows locks work.

This is certainly true.  We may well end up deciding that, ugly as it 
is, the Win32-specific code in SQLite's unhacked Cygwin build actually 
makes sense after all, insofar as it encodes the correct way to do 
locking on Windows *for SQLite*.

If that ends up being the case, I may be able to exploit SQLite's VFS 
fallback mechanism to get a SQLite build with both the preexisting 
Cygwin Win32 locking VFS as well as the POSIX locking VFS in a single 
executable.  That would let me switch between them at run time using the 
environment variable I've already defined.

> It's easy enough to add that to Cygwin, so I'll do that within the hour.
> That requires another sqlite test release, obviouly.

Okay, I've just released a set of -2 packages.

It required a spelunking expedition, complete with yak wagons and a team 
of five sherpas, one of which had to be left behind with a broken leg, 
but I figured out how to compile in the BSD locking VFS without 
disabling the POSIX one, then how to make SQLite switch between them at 
runtime.  (This is what gives me hope for Plan C, above.)

The CYGWIN_SQLITE_LOCKING variable now has three possible states:

CYGWIN_SQLITE_LOCKING=posix  -- same as before

CYGWIN_SQLITE_LOCKING=posixmand -- equivalent to leaving it undefined in 
the 3.7.17-1 build

CYGWIN_SQLITE_LOCKING=AnythingElse -- BSD flock() based mandatory locking.

(Yes, this means there's no way to make it use BSD advisory locks.  I 
couldn't come up with a good reason to add that fourth code path, but if 
it's needed, I'll add it.)

Same download path as before: http://etr-usa.com/cygwin/sqlite3/

--
Problem reports:       http://cygwin.com/problems.html
FAQ:                   http://cygwin.com/faq/
Documentation:         http://cygwin.com/docs.html
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019