LucidDB / luciddb

DEFUNCT: See README
https://github.com/LucidDB/luciddb
Apache License 2.0
53 stars 24 forks source link

[FRG-215] optimizer goes into infinite loop after PushProjectPastFilterRule #657

Open dynamobi-build opened 12 years ago

dynamobi-build commented 12 years ago

[reporter="jpham", created="Sun, 24 Sep 2006 21:39:07 -0500 (GMT-05:00)"] Hi Zelaine, would this be your area?

When running a particular query, the optimizer goes into an infinite loop involving PushProjectPastFilerRule and MergeProjectRule. The rule PushProjectPastFilter tries to transform the query execution tree. But the tree it generates is determined to be equivalent to an older tree, causing a loop. Perhaps this is another digest mystery?

This test case is from lu/regressionsql/javaCalc.sql

create table a (
    i tinyint generated always as identity primary key,
    j tinyint not null,
    k tinyint);

create table smallint_nullable_src (
    i smallint generated always as identity primary key,
    val smallint);

create view smallint_nullable as
select val from smallint_nullable_src;

insert into a (j) select * from smallint_nullable
where val > 127;

dynamobi-build commented 12 years ago

[author="jpham", created="Sun, 24 Sep 2006 21:40:07 -0500 (GMT-05:00)"] an excerpt from the optimizer trace

dynamobi-build commented 12 years ago

[author="zfong", created="Mon, 25 Sep 2006 08:23:17 -0500 (GMT-05:00)"] Yes, this is a result of my recent changes to push projects past setops. It looks like a couple of the new rules are resulting in an infinite loop.

dynamobi-build commented 12 years ago

[author="jvs", created="Mon, 25 Sep 2006 11:16:01 -0500 (GMT-05:00)"] Turns out to be a Hep garbage-collection problem. I am going to test/submit a workaround (overconservative collection) and come back to debug when I have time.

dynamobi-build commented 12 years ago

[author="jvs", created="Mon, 25 Sep 2006 17:20:15 -0500 (GMT-05:00)"] Workaround checked in and test re-enabled in 7774.