[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;
[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.