SQLITE gives incorrect results for 'NOT IN' query if partial index exists

classic Classic list List threaded Threaded
13 messages Options
Reply | Threaded
Open this post in threaded view
|

SQLITE gives incorrect results for 'NOT IN' query if partial index exists

Deon Brewis
The 'NOT IN' query at the bottom should not return any results. It returns '2'.

Repro:
=====
create table foo(y, z);
insert into foo values(1,1);
insert into foo values(2,2);
CREATE INDEX fooZ on Foo(y) where z=1;

create table bar(x);
insert into bar values(1);
insert into bar values(2);

select * from bar WHERE x NOT IN (SELECT y from foo); -- this will wrongly return 2.

Issue:
=====
In the query plan, sqlite chooses to use the FooZ index:

explain query plan select * from bar WHERE x NOT IN (SELECT y from foo);
QUERY PLAN
|--SCAN TABLE bar
`--USING INDEX fooZ FOR IN-OPERATOR


FooZ is not a valid index for this subquery, it is incomplete due to the partial index expression, with the result is doing a NOT IN over it returns incorrect results.

- Deon
_______________________________________________
sqlite-users mailing list
[hidden email]
http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users
Reply | Threaded
Open this post in threaded view
|

Re: SQLITE gives incorrect results for 'NOT IN' query if partial index exists

Olivier Mascia
> Le 8 déc. 2018 à 09:02, Deon Brewis <[hidden email]> a écrit :
>
> The 'NOT IN' query at the bottom should not return any results. It returns '2'.
>
> Repro:
> =====
> create table foo(y, z);
> insert into foo values(1,1);
> insert into foo values(2,2);
> CREATE INDEX fooZ on Foo(y) where z=1;
>
> create table bar(x);
> insert into bar values(1);
> insert into bar values(2);
>
> select * from bar WHERE x NOT IN (SELECT y from foo); -- this will wrongly return 2.
>
> Issue:
> =====
> In the query plan, sqlite chooses to use the FooZ index:
>
> explain query plan select * from bar WHERE x NOT IN (SELECT y from foo);
> QUERY PLAN
> |--SCAN TABLE bar
> `--USING INDEX fooZ FOR IN-OPERATOR
>
>
> FooZ is not a valid index for this subquery, it is incomplete due to the partial index expression, with the result is doing a NOT IN over it returns incorrect results.

Indeed.  As well as, logically:

select * from bar WHERE x IN (SELECT y from foo); -- this will wrongly return 1.

As expected a simple WHERE 1 in the subselect cancels the wrong index selection:

select * from bar WHERE x NOT IN (SELECT y from foo WHERE 1); -- OK, no results

--
Best Regards, Meilleures salutations, Met vriendelijke groeten,
Olivier Mascia


_______________________________________________
sqlite-users mailing list
[hidden email]
http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users
Reply | Threaded
Open this post in threaded view
|

Re: SQLITE gives incorrect results for 'NOT IN' query if partial index exists

Richard Hipp-3
In reply to this post by Deon Brewis
Thanks for the bug report and for the repro script.

This problem appears to have been in the code ever since partial
indexes were first introduced in version 3.8.0 (2013-08-26).  I have
some other things I have to deal with today.  I will get to this as
soon as I can.  There is a ticket at
https://www.sqlite.org/src/tktview/1d958d90596593a77420e590a6ab71756484f576


On 12/8/18, Deon Brewis <[hidden email]> wrote:

> The 'NOT IN' query at the bottom should not return any results. It returns
> '2'.
>
> Repro:
> =====
> create table foo(y, z);
> insert into foo values(1,1);
> insert into foo values(2,2);
> CREATE INDEX fooZ on Foo(y) where z=1;
>
> create table bar(x);
> insert into bar values(1);
> insert into bar values(2);
>
> select * from bar WHERE x NOT IN (SELECT y from foo); -- this will wrongly
> return 2.
>
> Issue:
> =====
> In the query plan, sqlite chooses to use the FooZ index:
>
> explain query plan select * from bar WHERE x NOT IN (SELECT y from foo);
> QUERY PLAN
> |--SCAN TABLE bar
> `--USING INDEX fooZ FOR IN-OPERATOR
>
>
> FooZ is not a valid index for this subquery, it is incomplete due to the
> partial index expression, with the result is doing a NOT IN over it returns
> incorrect results.
>
> - Deon
> _______________________________________________
> sqlite-users mailing list
> [hidden email]
> http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users
>


--
D. Richard Hipp
[hidden email]
_______________________________________________
sqlite-users mailing list
[hidden email]
http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users
Reply | Threaded
Open this post in threaded view
|

Re: SQLITE gives incorrect results for 'NOT IN' query if partial index exists

Deon Brewis
Thanks a lot for the quick fix!

I'm curious how that test that you added works?  i.e. What causes the test to fail if the results are wrong? (Sorry, I know almost nothing about the SQLITE test framework).
https://www.sqlite.org/src/info/15bc915dd7ae25bf

- Deon

-----Original Message-----
From: [hidden email] <[hidden email]> On Behalf Of Richard Hipp
Sent: Saturday, December 8, 2018 5:11 AM
To: SQLite mailing list <[hidden email]>
Cc: Deon Brewis <[hidden email]>; [hidden email]
Subject: Re: [sqlite] SQLITE gives incorrect results for 'NOT IN' query if partial index exists

Thanks for the bug report and for the repro script.

This problem appears to have been in the code ever since partial indexes were first introduced in version 3.8.0 (2013-08-26).  I have some other things I have to deal with today.  I will get to this as soon as I can.  There is a ticket at
https://www.sqlite.org/src/tktview/1d958d90596593a77420e590a6ab71756484f576


On 12/8/18, Deon Brewis <[hidden email]> wrote:

> The 'NOT IN' query at the bottom should not return any results. It
> returns '2'.
>
> Repro:
> =====
> create table foo(y, z);
> insert into foo values(1,1);
> insert into foo values(2,2);
> CREATE INDEX fooZ on Foo(y) where z=1;
>
> create table bar(x);
> insert into bar values(1);
> insert into bar values(2);
>
> select * from bar WHERE x NOT IN (SELECT y from foo); -- this will
> wrongly return 2.
>
> Issue:
> =====
> In the query plan, sqlite chooses to use the FooZ index:
>
> explain query plan select * from bar WHERE x NOT IN (SELECT y from
> foo); QUERY PLAN
> |--SCAN TABLE bar
> `--USING INDEX fooZ FOR IN-OPERATOR
>
>
> FooZ is not a valid index for this subquery, it is incomplete due to
> the partial index expression, with the result is doing a NOT IN over
> it returns incorrect results.
>
> - Deon
> _______________________________________________
> sqlite-users mailing list
> [hidden email]
> http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users
>


--
D. Richard Hipp
[hidden email]
_______________________________________________
sqlite-users mailing list
[hidden email]
http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users
Reply | Threaded
Open this post in threaded view
|

Re: SQLITE gives incorrect results for 'NOT IN' query if partial index exists

Richard Hipp-3
On 12/8/18, Deon Brewis <[hidden email]> wrote:
>
> I'm curious how that test that you added works?  i.e. What causes the test
> to fail if the results are wrong?

The particular test case you are referring to is written in in the TCL
language.  The TCL tests are the oldest set of tests for SQLite since
SQLite is really a TCL-extension that escaped into the wild.

Everything in TCL is a command followed by zero or more arguments.  In
this sense, TCL is very much like Bourne shell.  COMMAND ARG1 ARG2
ARG3 ....  Where TCL excels is in how it quotes the arguments.  Curly
braces {...} are quoting characters that nest.   Take, for example,
the "if" command in TCL:

    if {$a<0} {
      set a [expr {-$a}]
    } else {
      set a [expr {$a+10}]
    }

In this case, the "if" command has four arguments

     if EXPR SCRIPT else SCRIPT

When the "if" command runs, it evaluates its first argument EXPR.  If
EXPR is true, then the if command runs the SCRIPT given in the second
argument.  Otherwise it runs the SCRIPT in the fourth argument.  The
magic, you see, is in the use of nested curly braces for quoting.

The test command you refer to is this:

do_execsql_test index6-12.1 {
  DROP TABLE IF EXISTS t1;
  DROP TABLE IF EXISTS t2;
  CREATE TABLE t1(a,b);
  INSERT INTO t1 VALUES(1,1);
  INSERT INTO t1 VALUES(2,2);
  CREATE TABLE t2(x);
  INSERT INTO t2 VALUES(1);
  INSERT INTO t2 VALUES(2);
  SELECT 'one', * FROM t2 WHERE x NOT IN (SELECT a FROM t1);
  CREATE INDEX t1a ON t1(a) WHERE b=1;
  SELECT 'two', * FROM t2 WHERE x NOT IN (SELECT a FROM t1);
} {}

The name of the command is "do_execsql_test".  That command takes
three arguments:

    do_execsql_test   TESTNAME   SQL-SCRIPT   EXPECTED-RESULT

This command simply runs the SQL found in its second argument and
accumulates the results.  The accumulated result should exactly match
the third argument.  If it does not match, then it prints an error
message and increments the error counter.

If you start with the canonical SQL source code, you can generate the
appropriate TCL interpreter by typing

    ./configure; make testfixture

Or on windows:

     nmake /f Makefile.msc testfixture.exe

Then you say "./testfixture test/index6.test" to run that particular test file.

--
D. Richard Hipp
[hidden email]
_______________________________________________
sqlite-users mailing list
[hidden email]
http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users
Reply | Threaded
Open this post in threaded view
|

Re: SQLITE gives incorrect results for 'NOT IN' query if partial index exists

Luuk

On 8-12-2018 23:47, Richard Hipp wrote:

> On 12/8/18, Deon Brewis <[hidden email]> wrote:
>> I'm curious how that test that you added works?  i.e. What causes the test
>> to fail if the results are wrong?
> The particular test case you are referring to is written in in the TCL
> language.  The TCL tests are the oldest set of tests for SQLite since
> SQLite is really a TCL-extension that escaped into the wild.
>
> Everything in TCL is a command followed by zero or more arguments.  In
> this sense, TCL is very much like Bourne shell.  COMMAND ARG1 ARG2
> ARG3 ....  Where TCL excels is in how it quotes the arguments.  Curly
> braces {...} are quoting characters that nest.   Take, for example,
> the "if" command in TCL:
>
>      if {$a<0} {
>        set a [expr {-$a}]
>      } else {
>        set a [expr {$a+10}]
>      }
>
> In this case, the "if" command has four arguments
>
>       if EXPR SCRIPT else SCRIPT
>
> When the "if" command runs, it evaluates its first argument EXPR.  If
> EXPR is true, then the if command runs the SCRIPT given in the second
> argument.  Otherwise it runs the SCRIPT in the fourth argument.  The
> magic, you see, is in the use of nested curly braces for quoting.
>
> The test command you refer to is this:
>
> do_execsql_test index6-12.1 {
>    DROP TABLE IF EXISTS t1;
>    DROP TABLE IF EXISTS t2;
>    CREATE TABLE t1(a,b);
>    INSERT INTO t1 VALUES(1,1);
>    INSERT INTO t1 VALUES(2,2);
>    CREATE TABLE t2(x);
>    INSERT INTO t2 VALUES(1);
>    INSERT INTO t2 VALUES(2);
>    SELECT 'one', * FROM t2 WHERE x NOT IN (SELECT a FROM t1);
>    CREATE INDEX t1a ON t1(a) WHERE b=1;
>    SELECT 'two', * FROM t2 WHERE x NOT IN (SELECT a FROM t1);
> } {}
>
> The name of the command is "do_execsql_test".  That command takes
> three arguments:
>
>      do_execsql_test   TESTNAME   SQL-SCRIPT   EXPECTED-RESULT
>
> This command simply runs the SQL found in its second argument and
> accumulates the results.  The accumulated result should exactly match
> the third argument.  If it does not match, then it prints an error
> message and increments the error counter.
>
> If you start with the canonical SQL source code, you can generate the
> appropriate TCL interpreter by typing
>
>      ./configure; make testfixture
>
> Or on windows:
>
>       nmake /f Makefile.msc testfixture.exe
>
> Then you say "./testfixture test/index6.test" to run that particular test file.


You 'forgot' to add the example that Olivier Mascia gave?:

select * from bar WHERE x IN (SELECT y from foo); -- this will wrongly return 1.





_______________________________________________
sqlite-users mailing list
[hidden email]
http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users
Reply | Threaded
Open this post in threaded view
|

Re: SQLITE gives incorrect results for 'NOT IN' query if partial index exists

wmertens
Hi Luuk,

Not sure if you realize this, but your email comes over as very aggressive,
and if there's one person on this mailing list that doesn't deserve that,
it's dr Hipp.

In particular, the quotes around forgot seem to imply that it was forgotten
on purpose.

Personally, I would have worded it as "I looked at the test and I wonder if
this test case is addressed". Email communication is easy to misconstrue…

Cheers,

Wout.


---------- Forwarded message ---------
From: Luuk <[hidden email]>
Date: Sun, Dec 9, 2018 at 7:42 PM
Subject: Re: [sqlite] SQLITE gives incorrect results for 'NOT IN' query if
partial index exists
To: <[hidden email]>



On 8-12-2018 23:47, Richard Hipp wrote:
> On 12/8/18, Deon Brewis <[hidden email]> wrote:
>> I'm curious how that test that you added works?  i.e. What causes the
test

>> to fail if the results are wrong?
> The particular test case you are referring to is written in in the TCL
> language.  The TCL tests are the oldest set of tests for SQLite since
> SQLite is really a TCL-extension that escaped into the wild.
>
> Everything in TCL is a command followed by zero or more arguments.  In
> this sense, TCL is very much like Bourne shell.  COMMAND ARG1 ARG2
> ARG3 ....  Where TCL excels is in how it quotes the arguments.  Curly
> braces {...} are quoting characters that nest.   Take, for example,
> the "if" command in TCL:
>
>      if {$a<0} {
>        set a [expr {-$a}]
>      } else {
>        set a [expr {$a+10}]
>      }
>
> In this case, the "if" command has four arguments
>
>       if EXPR SCRIPT else SCRIPT
>
> When the "if" command runs, it evaluates its first argument EXPR.  If
> EXPR is true, then the if command runs the SCRIPT given in the second
> argument.  Otherwise it runs the SCRIPT in the fourth argument.  The
> magic, you see, is in the use of nested curly braces for quoting.
>
> The test command you refer to is this:
>
> do_execsql_test index6-12.1 {
>    DROP TABLE IF EXISTS t1;
>    DROP TABLE IF EXISTS t2;
>    CREATE TABLE t1(a,b);
>    INSERT INTO t1 VALUES(1,1);
>    INSERT INTO t1 VALUES(2,2);
>    CREATE TABLE t2(x);
>    INSERT INTO t2 VALUES(1);
>    INSERT INTO t2 VALUES(2);
>    SELECT 'one', * FROM t2 WHERE x NOT IN (SELECT a FROM t1);
>    CREATE INDEX t1a ON t1(a) WHERE b=1;
>    SELECT 'two', * FROM t2 WHERE x NOT IN (SELECT a FROM t1);
> } {}
>
> The name of the command is "do_execsql_test".  That command takes
> three arguments:
>
>      do_execsql_test   TESTNAME   SQL-SCRIPT   EXPECTED-RESULT
>
> This command simply runs the SQL found in its second argument and
> accumulates the results.  The accumulated result should exactly match
> the third argument.  If it does not match, then it prints an error
> message and increments the error counter.
>
> If you start with the canonical SQL source code, you can generate the
> appropriate TCL interpreter by typing
>
>      ./configure; make testfixture
>
> Or on windows:
>
>       nmake /f Makefile.msc testfixture.exe
>
> Then you say "./testfixture test/index6.test" to run that particular test
file.


You 'forgot' to add the example that Olivier Mascia gave?:

select * from bar WHERE x IN (SELECT y from foo); -- this will wrongly
return 1.





_______________________________________________
sqlite-users mailing list
[hidden email]
http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users
_______________________________________________
sqlite-users mailing list
[hidden email]
http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users
Reply | Threaded
Open this post in threaded view
|

Re: SQLITE gives incorrect results for 'NOT IN' query if partial index exists

Luuk

On 11-12-2018 10:09, Wout Mertens wrote:

> Hi Luuk,
>
> Not sure if you realize this, but your email comes over as very aggressive,
> and if there's one person on this mailing list that doesn't deserve that,
> it's dr Hipp.
>
> In particular, the quotes around forgot seem to imply that it was forgotten
> on purpose.
>
> Personally, I would have worded it as "I looked at the test and I wonder if
> this test case is addressed". Email communication is easy to misconstrue…
>
> Cheers,
>
> Wout.
>

Sorry, again sorry,

it must have been an interlingual misphrased wording of /me .... ;)

_______________________________________________
sqlite-users mailing list
[hidden email]
http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users
Reply | Threaded
Open this post in threaded view
|

Re: SQLITE gives incorrect results for 'NOT IN' query if partial index exists

Nicole Sexton
I'm very confused as I never sent that e-mail and no longer want to receive these e-mails. I signed up a long time ago to try to figure out what my boyfriend was up to and decrypt his messages. I somehow stubbled upon here joined the mailing list like an idiot. Like I have 0 clue hoe any of this works. I'd be forever thankful to not get these e-mails and longer. Someone must be using my e-mail. ugh. Any suggestions?? I mean I would love to learn all this but my brain may explode.


> On Dec 11, 2018, at 2:17 PM, Luuk <[hidden email]> wrote:
>
>
> On 11-12-2018 10:09, Wout Mertens wrote:
>> Hi Luuk,
>>
>> Not sure if you realize this, but your email comes over as very aggressive,
>> and if there's one person on this mailing list that doesn't deserve that,
>> it's dr Hipp.
>>
>> In particular, the quotes around forgot seem to imply that it was forgotten
>> on purpose.
>>
>> Personally, I would have worded it as "I looked at the test and I wonder if
>> this test case is addressed". Email communication is easy to misconstrue…
>>
>> Cheers,
>>
>> Wout.
>>
>
> Sorry, again sorry,
>
> it must have been an interlingual misphrased wording of /me .... ;)
>
> _______________________________________________
> sqlite-users mailing list
> [hidden email]
> http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users

_______________________________________________
sqlite-users mailing list
[hidden email]
http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users
Reply | Threaded
Open this post in threaded view
|

Re: SQLITE gives incorrect results for 'NOT IN' query if partial index exists

Nicole Sexton
In reply to this post by Luuk
I don't even know what interlingual means

> On Dec 11, 2018, at 2:17 PM, Luuk <[hidden email]> wrote:
>
>
> On 11-12-2018 10:09, Wout Mertens wrote:
>> Hi Luuk,
>>
>> Not sure if you realize this, but your email comes over as very aggressive,
>> and if there's one person on this mailing list that doesn't deserve that,
>> it's dr Hipp.
>>
>> In particular, the quotes around forgot seem to imply that it was forgotten
>> on purpose.
>>
>> Personally, I would have worded it as "I looked at the test and I wonder if
>> this test case is addressed". Email communication is easy to misconstrue…
>>
>> Cheers,
>>
>> Wout.
>>
>
> Sorry, again sorry,
>
> it must have been an interlingual misphrased wording of /me .... ;)
>
> _______________________________________________
> sqlite-users mailing list
> [hidden email]
> http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users

_______________________________________________
sqlite-users mailing list
[hidden email]
http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users
Reply | Threaded
Open this post in threaded view
|

Re: [EXTERNAL] Re: SQLITE gives incorrect results for 'NOT IN' query if partial index exists

Hick Gunter
In reply to this post by Nicole Sexton
Serves you right for spying on your boyfriend ;P

Check the link at the bottom of each and every message from the list for the way to unsubscribe. We don't enjoy the prospect of free floating pieces of brain on this list ;)

-----Ursprüngliche Nachricht-----
Von: sqlite-users [mailto:[hidden email]] Im Auftrag von Nicole Sexton
Gesendet: Mittwoch, 12. Dezember 2018 11:09
An: SQLite mailing list <[hidden email]>
Betreff: [EXTERNAL] Re: [sqlite] SQLITE gives incorrect results for 'NOT IN' query if partial index exists

I'm very confused as I never sent that e-mail and no longer want to receive these e-mails. I signed up a long time ago to try to figure out what my boyfriend was up to and decrypt his messages. I somehow stubbled upon here joined the mailing list like an idiot. Like I have 0 clue hoe any of this works. I'd be forever thankful to not get these e-mails and longer. Someone must be using my e-mail. ugh. Any suggestions?? I mean I would love to learn all this but my brain may explode.


> On Dec 11, 2018, at 2:17 PM, Luuk <[hidden email]> wrote:
>
>
> On 11-12-2018 10:09, Wout Mertens wrote:
>> Hi Luuk,
>>
>> Not sure if you realize this, but your email comes over as very
>> aggressive, and if there's one person on this mailing list that
>> doesn't deserve that, it's dr Hipp.
>>
>> In particular, the quotes around forgot seem to imply that it was
>> forgotten on purpose.
>>
>> Personally, I would have worded it as "I looked at the test and I
>> wonder if this test case is addressed". Email communication is easy
>> to misconstrue…
>>
>> Cheers,
>>
>> Wout.
>>
>
> Sorry, again sorry,
>
> it must have been an interlingual misphrased wording of /me .... ;)
>
> _______________________________________________
> sqlite-users mailing list
> [hidden email]
> http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users

_______________________________________________
sqlite-users mailing list
[hidden email]
http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users


___________________________________________
 Gunter Hick | Software Engineer | Scientific Games International GmbH | Klitschgasse 2-4, A-1130 Vienna | FN 157284 a, HG Wien, DVR: 0430013 | (O) +43 1 80100 - 0

May be privileged. May be confidential. Please delete if not the addressee.
_______________________________________________
sqlite-users mailing list
[hidden email]
http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users
Reply | Threaded
Open this post in threaded view
|

Re: [EXTERNAL] Re: SQLITE gives incorrect results for 'NOT IN' query if partial index exists

Richard Hipp-3
On 12/12/18, Hick Gunter <[hidden email]> wrote:
> Serves you right for spying on your boyfriend ;P
>
> Check the link at the bottom of each and every message from the list for the
> way to unsubscribe. We don't enjoy the prospect of free floating pieces of
> brain on this list ;)

I think those two messages from Ms. Sexton are spam.  The sender is
not a member of the mailing list and so the messages went to
moderation.  I approved them because they referenced a valid thread,
but I think I should have read more closely before clicking the
approve button.  Sorry.

--
D. Richard Hipp
[hidden email]
_______________________________________________
sqlite-users mailing list
[hidden email]
http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users
Reply | Threaded
Open this post in threaded view
|

Re: [EXTERNAL] Re: SQLITE gives incorrect results for 'NOT IN' query if partial index exists

wmertens
Well since this thread is very off topic anyway: I think that would be
wildly specific spam, I think she genuinely wanted to unsubscribe.

Also, my message to Luuk was supposed to be unicast. I even forwarded the
mail and typed his address manually but somehow gmail thought it opportune
to keep the mailing list in copy ¯\_(ツ)_/¯

Wout.


On Wed, Dec 12, 2018 at 3:44 PM Richard Hipp <[hidden email]> wrote:

> On 12/12/18, Hick Gunter <[hidden email]> wrote:
> > Serves you right for spying on your boyfriend ;P
> >
> > Check the link at the bottom of each and every message from the list for
> the
> > way to unsubscribe. We don't enjoy the prospect of free floating pieces
> of
> > brain on this list ;)
>
> I think those two messages from Ms. Sexton are spam.  The sender is
> not a member of the mailing list and so the messages went to
> moderation.  I approved them because they referenced a valid thread,
> but I think I should have read more closely before clicking the
> approve button.  Sorry.
>
> --
> D. Richard Hipp
> [hidden email]
> _______________________________________________
> sqlite-users mailing list
> [hidden email]
> http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users
>
_______________________________________________
sqlite-users mailing list
[hidden email]
http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users