Pavel,

Thank you so much!! You are right, this change solves all of my 
problems. Looking at your suggestion, the syntax makes a lot more sense 
this way. I can't tell you how helpful this is.

very best,
Peter


Pavel Ivanov wrote:
> Looking at the query I guess that 3.3.6 processed it incorrectly and
> 3.6.23.1 gives the correct result for it.
> But I also think that it's written incorrectly and not as was
> intended. The correct query will be like this:
> 
> select
>     count (*) from (select * from reporting) as foo
>     left outer join (select id from type) as A0
>     on A0.id = foo.id
>     left outer join (select id from level) as A1
>     on A1.id = foo.id
>     left outer join (select id from message_id) as A2
>     on A2.id = foo.id
>     left outer join (select id from message) as A3
>     on A3.id = foo.id
>     group by foo.id
> 
> And I bet this query will give the same results both on 3.3.6 and on 3.6.23.
> 
> 
> Pavel
> 
> 
> On Tue, Apr 27, 2010 at 2:49 PM, Peter Pawlowski <[email protected]> 
> wrote:
>> I have an unusual query that takes about 15 seconds to process on a tiny
>> database using version 3.6.23.1. In older versions of sqlite3 this query
>> executes in about 20ms and produces different output (I tested 3.3.6).
>>
>> I tried to simplify the query and data as much as possible. The query is
>> weird, I'm not even sure I know what I would expect the output to be.
>> But the fact that the behavior has changed is certain. See my test case
>> below.
>>
>> My question is, is this a bug or is this unsupported or unspecified
>> functionality?
>>
>> thanks!
>> Peter Pawlowski
>>
>>
>> ==== SQL statement ====
>>
>> select
>>     count (*) from (select * from reporting) as foo
>>     left outer join (select id from type) as A0
>>     left outer join (select id from level) as A1
>>     left outer join (select id from message_id) as A2
>>     left outer join (select id from message) as A3
>>     on ( A0.id = foo.id and A1.id = foo.id and A2.id = foo.id and A3.id
>> = foo.id )
>>     group by foo.id
>> ;
>>
>>
>> ==== Test run with sqlite-3.3.6 ====
>>
>> $ sqlite3 -version
>> 3.3.6
>>
>> $ time sqlite3 db < sql
>> 1
>> 1
>> 1
>> 1
>> 1
>> 1
>> 1
>> 1
>> 1
>> 1
>> 1
>> 1
>> 1
>> 1
>> 1
>> 1
>> 1
>> 1
>> 1
>> 1
>> 1
>> 1
>> 1
>> 1
>> 1
>> 1
>> 1
>> 1
>> 1
>> 1
>>
>> real    0m0.017s
>> user    0m0.001s
>> sys     0m0.009s
>>
>>
>> ==== Test run with sqlite 3.6.23.1 ====
>>
>> $ ./sqlite3 -version
>> 3.6.23.1
>>
>> $ time ./sqlite3 db < sql
>> 27000
>> 27000
>> 27000
>> 27000
>> 27000
>> 27000
>> 27000
>> 27000
>> 27000
>> 27000
>> 27000
>> 27000
>> 27000
>> 27000
>> 27000
>> 27000
>> 27000
>> 27000
>> 27000
>> 27000
>> 27000
>> 27000
>> 27000
>> 27000
>> 27000
>> 27000
>> 27000
>> 27000
>> 27000
>> 27000
>>
>> real    0m15.296s
>> user    0m15.144s
>> sys     0m0.030s
>>
>>
>> ==== Database dump ====
>>
>> BEGIN TRANSACTION;
>> CREATE TABLE reporting ( ID VARCHAR PRIMARY KEY, DATE INTEGER);
>> INSERT INTO "reporting" VALUES('S9XnCAo2JBvX', 1272309512);
>> INSERT INTO "reporting" VALUES('S9XnCAo+bxvX', 1272309512);
>> INSERT INTO "reporting" VALUES('S9XnCQG92xvX', 1272309513);
>> INSERT INTO "reporting" VALUES('S9XnCQH5shvX', 1272309513);
>> INSERT INTO "reporting" VALUES('S9XnCQIBzRvX', 1272309513);
>> INSERT INTO "reporting" VALUES('S9XnCQp6EBvX', 1272309513);
>> INSERT INTO "reporting" VALUES('S9XnCQqmiBvX', 1272309513);
>> INSERT INTO "reporting" VALUES('S9XnCQqvCxvX', 1272309513);
>> INSERT INTO "reporting" VALUES('S9XnCgaTChvX', 1272309514);
>> INSERT INTO "reporting" VALUES('S9XnCga9EhvX', 1272309514);
>> INSERT INTO "reporting" VALUES('S9XnCgbF-hvX', 1272309514);
>> INSERT INTO "reporting" VALUES('S9XnCg1sVRvX', 1272309514);
>> INSERT INTO "reporting" VALUES('S9XnCg2VwxvX', 1272309514);
>> INSERT INTO "reporting" VALUES('S9XnCg2dnxvX', 1272309514);
>> INSERT INTO "reporting" VALUES('S9XnCwgyBxvX', 1272309515);
>> INSERT INTO "reporting" VALUES('S9XnCwhcEhvX', 1272309515);
>> INSERT INTO "reporting" VALUES('S9XnDAhuBBvX', 1272309516);
>> INSERT INTO "reporting" VALUES('S9XnDAh2OBvX', 1272309516);
>> INSERT INTO "reporting" VALUES('S9XnDQQBVRvX', 1272309517);
>> INSERT INTO "reporting" VALUES('S9XnDQQu-xvX', 1272309517);
>> INSERT INTO "reporting" VALUES('S9XnDQQ3BBvX', 1272309517);
>> INSERT INTO "reporting" VALUES('S9XnDQrNLhvX', 1272309517);
>> INSERT INTO "reporting" VALUES('S9XnDQr2axvX', 1272309517);
>> INSERT INTO "reporting" VALUES('S9XnDgFfli74', 1272309518);
>> INSERT INTO "reporting" VALUES('S9XnDgsHSBvX', 1272309518);
>> INSERT INTO "reporting" VALUES('S9XnkgP0yBvX', 1272309650);
>> INSERT INTO "reporting" VALUES('S9Xnkg1QBBvX', 1272309650);
>> INSERT INTO "reporting" VALUES('S9Xnkg17UxvX', 1272309650);
>> INSERT INTO "reporting" VALUES('S9Xnkg2W1BvX', 1272309650);
>> INSERT INTO "reporting" VALUES('S9XnlAKYNFwW', 1272309652);
>> CREATE TABLE type (id varchar);
>> INSERT INTO "type" VALUES('S9XnCAo2JBvX');
>> INSERT INTO "type" VALUES('S9XnCAo+bxvX');
>> INSERT INTO "type" VALUES('S9XnCQG92xvX');
>> INSERT INTO "type" VALUES('S9XnCQH5shvX');
>> INSERT INTO "type" VALUES('S9XnCQIBzRvX');
>> INSERT INTO "type" VALUES('S9XnCQp6EBvX');
>> INSERT INTO "type" VALUES('S9XnCQqmiBvX');
>> INSERT INTO "type" VALUES('S9XnCQqvCxvX');
>> INSERT INTO "type" VALUES('S9XnCgaTChvX');
>> INSERT INTO "type" VALUES('S9XnCga9EhvX');
>> INSERT INTO "type" VALUES('S9XnCgbF-hvX');
>> INSERT INTO "type" VALUES('S9XnCg1sVRvX');
>> INSERT INTO "type" VALUES('S9XnCg2VwxvX');
>> INSERT INTO "type" VALUES('S9XnCg2dnxvX');
>> INSERT INTO "type" VALUES('S9XnCwgyBxvX');
>> INSERT INTO "type" VALUES('S9XnCwhcEhvX');
>> INSERT INTO "type" VALUES('S9XnDAhuBBvX');
>> INSERT INTO "type" VALUES('S9XnDAh2OBvX');
>> INSERT INTO "type" VALUES('S9XnDQQBVRvX');
>> INSERT INTO "type" VALUES('S9XnDQQu-xvX');
>> INSERT INTO "type" VALUES('S9XnDQQ3BBvX');
>> INSERT INTO "type" VALUES('S9XnDQrNLhvX');
>> INSERT INTO "type" VALUES('S9XnDQr2axvX');
>> INSERT INTO "type" VALUES('S9XnDgFfli74');
>> INSERT INTO "type" VALUES('S9XnDgsHSBvX');
>> INSERT INTO "type" VALUES('S9XnkgP0yBvX');
>> INSERT INTO "type" VALUES('S9Xnkg1QBBvX');
>> INSERT INTO "type" VALUES('S9Xnkg17UxvX');
>> INSERT INTO "type" VALUES('S9Xnkg2W1BvX');
>> INSERT INTO "type" VALUES('S9XnlAKYNFwW');
>> CREATE TABLE message_id (id varchar);
>> INSERT INTO "message_id" VALUES('S9XnCAo2JBvX');
>> INSERT INTO "message_id" VALUES('S9XnCAo+bxvX');
>> INSERT INTO "message_id" VALUES('S9XnCQG92xvX');
>> INSERT INTO "message_id" VALUES('S9XnCQH5shvX');
>> INSERT INTO "message_id" VALUES('S9XnCQIBzRvX');
>> INSERT INTO "message_id" VALUES('S9XnCQp6EBvX');
>> INSERT INTO "message_id" VALUES('S9XnCQqmiBvX');
>> INSERT INTO "message_id" VALUES('S9XnCQqvCxvX');
>> INSERT INTO "message_id" VALUES('S9XnCgaTChvX');
>> INSERT INTO "message_id" VALUES('S9XnCga9EhvX');
>> INSERT INTO "message_id" VALUES('S9XnCgbF-hvX');
>> INSERT INTO "message_id" VALUES('S9XnCg1sVRvX');
>> INSERT INTO "message_id" VALUES('S9XnCg2VwxvX');
>> INSERT INTO "message_id" VALUES('S9XnCg2dnxvX');
>> INSERT INTO "message_id" VALUES('S9XnCwgyBxvX');
>> INSERT INTO "message_id" VALUES('S9XnCwhcEhvX');
>> INSERT INTO "message_id" VALUES('S9XnDAhuBBvX');
>> INSERT INTO "message_id" VALUES('S9XnDAh2OBvX');
>> INSERT INTO "message_id" VALUES('S9XnDQQBVRvX');
>> INSERT INTO "message_id" VALUES('S9XnDQQu-xvX');
>> INSERT INTO "message_id" VALUES('S9XnDQQ3BBvX');
>> INSERT INTO "message_id" VALUES('S9XnDQrNLhvX');
>> INSERT INTO "message_id" VALUES('S9XnDQr2axvX');
>> INSERT INTO "message_id" VALUES('S9XnDgFfli74');
>> INSERT INTO "message_id" VALUES('S9XnDgsHSBvX');
>> INSERT INTO "message_id" VALUES('S9XnkgP0yBvX');
>> INSERT INTO "message_id" VALUES('S9Xnkg1QBBvX');
>> INSERT INTO "message_id" VALUES('S9Xnkg17UxvX');
>> INSERT INTO "message_id" VALUES('S9Xnkg2W1BvX');
>> INSERT INTO "message_id" VALUES('S9XnlAKYNFwW');
>> CREATE TABLE message (id varchar);
>> INSERT INTO "message" VALUES('S9XnCAo2JBvX');
>> INSERT INTO "message" VALUES('S9XnCAo+bxvX');
>> INSERT INTO "message" VALUES('S9XnCQG92xvX');
>> INSERT INTO "message" VALUES('S9XnCQH5shvX');
>> INSERT INTO "message" VALUES('S9XnCQIBzRvX');
>> INSERT INTO "message" VALUES('S9XnCQp6EBvX');
>> INSERT INTO "message" VALUES('S9XnCQqmiBvX');
>> INSERT INTO "message" VALUES('S9XnCQqvCxvX');
>> INSERT INTO "message" VALUES('S9XnCgaTChvX');
>> INSERT INTO "message" VALUES('S9XnCga9EhvX');
>> INSERT INTO "message" VALUES('S9XnCgbF-hvX');
>> INSERT INTO "message" VALUES('S9XnCg1sVRvX');
>> INSERT INTO "message" VALUES('S9XnCg2VwxvX');
>> INSERT INTO "message" VALUES('S9XnCg2dnxvX');
>> INSERT INTO "message" VALUES('S9XnCwgyBxvX');
>> INSERT INTO "message" VALUES('S9XnCwhcEhvX');
>> INSERT INTO "message" VALUES('S9XnDAhuBBvX');
>> INSERT INTO "message" VALUES('S9XnDAh2OBvX');
>> INSERT INTO "message" VALUES('S9XnDQQBVRvX');
>> INSERT INTO "message" VALUES('S9XnDQQu-xvX');
>> INSERT INTO "message" VALUES('S9XnDQQ3BBvX');
>> INSERT INTO "message" VALUES('S9XnDQrNLhvX');
>> INSERT INTO "message" VALUES('S9XnDQr2axvX');
>> INSERT INTO "message" VALUES('S9XnDgFfli74');
>> INSERT INTO "message" VALUES('S9XnDgsHSBvX');
>> INSERT INTO "message" VALUES('S9XnkgP0yBvX');
>> INSERT INTO "message" VALUES('S9Xnkg1QBBvX');
>> INSERT INTO "message" VALUES('S9Xnkg17UxvX');
>> INSERT INTO "message" VALUES('S9Xnkg2W1BvX');
>> INSERT INTO "message" VALUES('S9XnlAKYNFwW');
>> CREATE TABLE level (id varchar);
>> INSERT INTO "level" VALUES('S9XnCAo2JBvX');
>> INSERT INTO "level" VALUES('S9XnCAo+bxvX');
>> INSERT INTO "level" VALUES('S9XnCQG92xvX');
>> INSERT INTO "level" VALUES('S9XnCQH5shvX');
>> INSERT INTO "level" VALUES('S9XnCQIBzRvX');
>> INSERT INTO "level" VALUES('S9XnCQp6EBvX');
>> INSERT INTO "level" VALUES('S9XnCQqmiBvX');
>> INSERT INTO "level" VALUES('S9XnCQqvCxvX');
>> INSERT INTO "level" VALUES('S9XnCgaTChvX');
>> INSERT INTO "level" VALUES('S9XnCga9EhvX');
>> INSERT INTO "level" VALUES('S9XnCgbF-hvX');
>> INSERT INTO "level" VALUES('S9XnCg1sVRvX');
>> INSERT INTO "level" VALUES('S9XnCg2VwxvX');
>> INSERT INTO "level" VALUES('S9XnCg2dnxvX');
>> INSERT INTO "level" VALUES('S9XnCwgyBxvX');
>> INSERT INTO "level" VALUES('S9XnCwhcEhvX');
>> INSERT INTO "level" VALUES('S9XnDAhuBBvX');
>> INSERT INTO "level" VALUES('S9XnDAh2OBvX');
>> INSERT INTO "level" VALUES('S9XnDQQBVRvX');
>> INSERT INTO "level" VALUES('S9XnDQQu-xvX');
>> INSERT INTO "level" VALUES('S9XnDQQ3BBvX');
>> INSERT INTO "level" VALUES('S9XnDQrNLhvX');
>> INSERT INTO "level" VALUES('S9XnDQr2axvX');
>> INSERT INTO "level" VALUES('S9XnDgFfli74');
>> INSERT INTO "level" VALUES('S9XnDgsHSBvX');
>> INSERT INTO "level" VALUES('S9XnkgP0yBvX');
>> INSERT INTO "level" VALUES('S9Xnkg1QBBvX');
>> INSERT INTO "level" VALUES('S9Xnkg17UxvX');
>> INSERT INTO "level" VALUES('S9Xnkg2W1BvX');
>> INSERT INTO "level" VALUES('S9XnlAKYNFwW');
>> CREATE INDEX reporting_date ON reporting ( DATE );
>> COMMIT;
>>
>>
>>
>>
>>
>>
>> --
>> Peter Pawlowski | Senior Software Engineer
>> Office: +1.412.422.2499 x116
>> [email protected] | Connect: www.vivisimo.com
>> Vivisimo - Information Optimized
>> _______________________________________________
>> sqlite-users mailing list
>> [email protected]
>> http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users
>>
> _______________________________________________
> sqlite-users mailing list
> [email protected]
> http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users

-- 
Peter Pawlowski | Senior Software Engineer
Office: +1.412.422.2499 x116
[email protected] | Connect: www.vivisimo.com
Vivisimo - Information Optimized
_______________________________________________
sqlite-users mailing list
[email protected]
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to