LucidDB / luciddb

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

[FRG-81] UNION and UNNEST Causes SQLline Crash #789

Open dynamobi-build opened 12 years ago

dynamobi-build commented 12 years ago

[reporter="angel", created="Fri, 17 Mar 2006 15:12:32 -0500 (GMT-05:00)"] There are a couple of queries with UNION and UNNEST that are causing sqlline to
crash.

  1. With UNION and UNNEST
    0: jdbc:farrago:> select * from unnest(values(multiset[1]) union values(multiset
    [2]));
    java: UncollectExecStream.cpp:106: virtual fennel::ExecStreamResult
    fennel::UncollectExecStream::execute(const fennel::ExecStreamQuantum&):
    Assertion `bytesWritten == inputTupleData[0].cbData' failed.
    sqllineEngine: line 16: 4916 Aborted java ${SERVER_JAVA_ARGS}
    ${SQLLINE_JAVA_ARGS} -u jdbc:farrago: -d
    net.sf.farrago.jdbc.engine.FarragoJdbcEngineDriver -n guest $*

  2. With MULTISET UNION and UNNEST
    0: jdbc:farrago:> select from unnest((multiset[1] multiset union multiset
    [1,2]));
    java: BTreeBuilder.cpp:325: void fennel::BTreeBuilder::createEmptyRoot():
    Assertion`getRootPageId() == NULL_PAGE_ID' failed.
    sqllineEngine: line 16: 6978 Aborted java ${SERVER_JAVA_ARGS}
    ${SQLLINE_JAVA_ARGS} -u jdbc:farrago: -d
    net.sf.farrago.jdbc.engine.FarragoJdbcEngineDriver -n guest $





    These testcases are in regressionsql/multiset.sql
    (the behavior should be the same when running sqllineEngine directly).

    I've also observed if .sql file under regressionsql, and do
    "junitSingle regressionsql/multiset.sql" it gives the following
    before crashing with the getRootPageId() == NULL_PAGE_ID:
    0: jdbc:farrago:> values(multiset[1]) union values(multiset[2]);
    Error: java.lang.AssertionError: RuleQueue already contained rel (state=,code=0)
    0: jdbc:farrago:> values(multiset[1]) union all values(multiset[1]);
    +-------------+
    | EXPR$0 |
    +-------------+
    | 0001000000 |
    | 0001000000 |
    +-------------+
    0: jdbc:farrago:> values(multiset[1]) union distinct values(multiset[1]);
    Error: java.lang.AssertionError: RuleQueue already contained rel (state=,code=0)
    0: jdbc:farrago:>
    0: jdbc:farrago:> -- select * from unnest(values(multiset[1]) union values
    (multiset[2]));
    0: jdbc:farrago:>
    0: jdbc:farrago:> values(multiset[1] multiset union multiset[1,2]);


    If I put the .sql file under unitsql, and do
    "junitSingle unitsql/multiset.sql" it gives the following
    and does not crash:

    0: jdbc:farrago:> values(multiset[1]) union values(multiset[2]);
    Error: java.lang.AssertionError: RuleQueue already contained rel (state=,code=0)
    0: jdbc:farrago:> values(multiset[1]) union all values(multiset[1]);
    +-------------+
    | EXPR$0 |
    +-------------+
    | 0001000000 |
    | 0001000000 |
    +-------------+
    0: jdbc:farrago:> values(multiset[1]) union distinct values(multiset[1]);
    Error: java.lang.AssertionError: RuleQueue already contained rel (state=,code=0)
    0: jdbc:farrago:>
    0: jdbc:farrago:> -- select * from unnest(values(multiset[1]) union values
    (multiset[2]));
    0: jdbc:farrago:>
    0: jdbc:farrago:> values(multiset[1] multiset union multiset[1,2]);



    0: jdbc:farrago:> values(multiset[1]) union values(multiset[2]);
    +-------------+
    | EXPR$0 |
    +-------------+
    | 0001000000 |
    | 0002000000 |
    +-------------+
    0: jdbc:farrago:> values(multiset[1]) union all values(multiset[1]);
    +-------------+
    | EXPR$0 |
    +-------------+
    | 0001000000 |
    | 0001000000 |
    +-------------+
    0: jdbc:farrago:> values(multiset[1]) union distinct values(multiset[1]);
    +-------------+
    | EXPR$0 |
    +-------------+
    | 0001000000 |
    +-------------+
    0: jdbc:farrago:>
    0: jdbc:farrago:> -- select * from unnest(values(multiset[1]) union values
    (multiset[2]));
    0: jdbc:farrago:>
    0: jdbc:farrago:> values(multiset[1] multiset union multiset[1,2]);
    Error: java.lang.AssertionError: Internal error: input not found (state=,code=0)
    0: jdbc:farrago:> values(multiset[1] multiset union all multiset[1,2]);
    Error: java.lang.AssertionError: Internal error: input not found (state=,code=0)
    0: jdbc:farrago:> values(multiset[1] multiset union distinct multiset[1,2]);
    Error: java.lang.AssertionError: Internal error: input not found (state=,code=0)