LucidDB / luciddb

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

[FRG-96] group by failing in sqlToRel converter #774

Open dynamobi-build opened 12 years ago

dynamobi-build commented 12 years ago

[reporter="wael", created="Wed, 22 Mar 2006 13:08:50 -0500 (GMT-05:00)"] group by failing in sqlToRel converter
 
0: jdbc:farrago:> select * from sales.emps group by empno;
Error: java.lang.NullPointerException: null (state=,code=0)
java.sql.SQLException: java.lang.NullPointerException: null
        at net.sf.saffron.rel.AggregateRel.deriveRowType(AggregateRel.java:96)
        at
net.sf.saffron.rel.SaffronBaseRel.getRowType(SaffronBaseRel.java:196)
        at
net.sf.saffron.sql2rel.SqlToRelConverter$Blackboard.getRootField(SqlToRelConverter.java:1478)
        at
net.sf.saffron.sql2rel.SqlToRelConverter.convertIdentifier(SqlToRelConverter.java:1136)
        at
net.sf.saffron.sql2rel.SqlToRelConverter.convertExpression(SqlToRelConverter.java:470)
        at
net.sf.saffron.sql2rel.SqlToRelConverter.convertSelectList(SqlToRelConverter.java:1185)
        at
net.sf.saffron.sql2rel.SqlToRelConverter.convertSelect(SqlToRelConverter.java:189)
        at
net.sf.saffron.sql2rel.SqlToRelConverter.convertQueryRecursive(SqlToRelConverter.java:955)
        at
net.sf.saffron.sql2rel.SqlToRelConverter.convertValidatedQuery(SqlToRelConverter.java:175)
        at net.sf.saffron.oj.stmt.OJStatement.prepareSql(OJStatement.java:398)
        at
net.sf.farrago.query.FarragoPreparingStmt.prepare(FarragoPreparingStmt.java:224)
        at
net.sf.farrago.db.FarragoDatabase$1.initializeEntry(FarragoDatabase.java:580)
        at
net.sf.farrago.util.FarragoObjectCache.pin(FarragoObjectCache.java:144)
        at
net.sf.farrago.db.FarragoDatabase.prepareStmtImpl(FarragoDatabase.java:588)
        at
net.sf.farrago.db.FarragoDatabase.prepareStmt(FarragoDatabase.java:497)
        at
net.sf.farrago.db.FarragoDbSession.prepare(FarragoDbSession.java:592)
        at
net.sf.farrago.db.FarragoDbStmtContext.prepare(FarragoDbStmtContext.java:127)
        at
net.sf.farrago.jdbc.engine.FarragoJdbcEngineStatement.execute(FarragoJdbcEngineStatement.java:106)
        at sqlline.SqlLine$Commands.sql(SqlLine.java:3501)
        at sqlline.SqlLine.dispatch(SqlLine.java:911)
        at sqlline.SqlLine.begin(SqlLine.java:762)
        at sqlline.SqlLine.mainWithInputRedirection(SqlLine.java:436)
        at sqlline.SqlLine.main(SqlLine.java:419)
------- Comment #1 From Julian Hyde 2004-07-13 23:56 [reply] -------
Note that this particular query is invalid. It should have raised an error during validation, something like

  Column 'EMPNO' is not a GROUP BY field

Of course, if this query throws a NullPointerException, then it's a bug. It should throw a 'proper' error. You might like to try a valid query, such as

  SELECT deptno, sum(sal)
  FROM sales.emps
  GROUP BY deptno

and see whether you get an error.

------- Comment #2 From Wael Chatila 2004-07-18 01:53 [reply] -------
mimer, mysql, db2, sql server, access, postgresql all pass on this query (yes i tried them all)

for me, without knowing sql all that well, logically group by is a separate and detached process from an aggregate operation and should work independantly. GROUP BY collects rows into sets by a given column, you should be able to do what the ever you want with these rows, even a stupid thing to just dump them right out.

"You might like to try a valid query, such as

  SELECT deptno, sum(sal)
  FROM sales.emps
  GROUP BY deptno
"
not worry i tried it prior to logging this bug since there is no aggregate function implemented, not even in the validator.

reassigning to Julian for verification, adding cc jvs

------- Comment #3 From Julian Hyde 2004-07-18 18:06 [reply] -------
Some other valid aggregate queries:

  SELECT deptno FROM sales.emps GROUP BY deptno

is a GROUP BY query with no aggregate functions. And

  SELECT sum(sal) FROM sales.emps

is an aggregate query with no group by. All of these are post-0.5 work.

------- Comment #4 From Edan Kabatchnik 2005-11-03 10:27 [reply] -------
Reassigning to Angel because she fixed it.

------- Comment #5 From Edan Kabatchnik 2005-11-03 10:27 [reply] -------
Marking as fixed again.

------- Comment #6 From Julian Hyde 2005-11-08 14:55 [reply] -------
A similar case fails, and it shouldn't. If '' happens to contain all grouped columns, then the query is OK. (I checked, Oracle thinks this is OK.)

create table t (i int primary key);
select \
from t group by i;

Re-opening at lower severity.