[svn.haxx.se] · SVN Dev · SVN Users · SVN Org · TSVN Dev · TSVN Users · Subclipse Dev · Subclipse Users · this month's index

Re: [sqlite] PRAGMA bug in 3.7.7 (but fine in 3.7.6.3)

From: Richard Hipp <drh_at_sqlite.org>
Date: Sun, 26 Jun 2011 18:52:14 -0400

On Sun, Jun 26, 2011 at 3:59 PM, Greg Stein <gstein_at_gmail.com> wrote:

> Hey all,
>
> There is a bug in 3.7.7 that affects Apache Subversion. We've verified
> that it is this latest release, as prior releases have worked just
> fine for us.
>
> Below is the reproduction script, thanks to Daniel Shahaf. With this
> pragma not working, we cannot even start up :-(
>

Thanks for the test case.

The pragma is actually working. The bug is that it is returning
SQLITE_SCHEMA instead of SQLITE_OK. If you wanted to, you could just ignore
the error and keep going and everything would work.

The bug was introduced here:

    http://www.sqlite.org/src/ci/957b2ab67c

And more specifically with the removal of the "p->expired = 0" line which is
shown as the very first change here:

    http://www.sqlite.org/src/fdiff?v1=0505dc4f7ff3cf35&v2=0b2e2880f13af400

The big mystery is why this problem is not showing up in our rather
extensive test suite. I'm still investigating that aspect of the issue.

> Please help!
>
> Thanks,
> -g
>
> ps. maybe this belongs on -dev, but I'm pending on its moderated
> subscription...
>
> [[[
> #include <assert.h>
> #include <stdio.h>
>
> #include "sqlite3.h"
>
>
> #define BUSY_TIMEOUT 10000
>
> int main(void)
> {
> sqlite3 *db3;
>
> const char *path = "foo.db";
> int flags = SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE;
> #ifdef SQLITE_OPEN_NOMUTEX
> flags |= SQLITE_OPEN_NOMUTEX;
> #endif
>
> assert(SQLITE_OK == sqlite3_open_v2(path, &db3, flags, NULL));
> assert(SQLITE_OK == sqlite3_busy_timeout(db3, BUSY_TIMEOUT));
> assert(SQLITE_OK == sqlite3_busy_timeout(db3, BUSY_TIMEOUT));
> {
> char *errmsg;
> int err = sqlite3_exec(db3, "PRAGMA case_sensitive_like=1;", NULL,
> NULL, &errmsg);
> if (err != SQLITE_OK)
> printf("Error %d: %s\n", err, errmsg), sqlite3_free(errmsg);
> }
> return 0;
> }
> ]]]
> _______________________________________________
> sqlite-users mailing list
> sqlite-users_at_sqlite.org
> http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users
>

-- 
D. Richard Hipp
drh_at_sqlite.org
Received on 2011-06-27 01:13:52 CEST

This is an archived mail posted to the Subversion Dev mailing list.

This site is subject to the Apache Privacy Policy and the Apache Public Forum Archive Policy.