I've created a patch for this problem 

The method 

        BrokerHelper.getQueryByCriteriaCount(QueryByCriteria aQuery)

now uses "getCriteria().copy()" instead of "getCriteria()" so that the 
new criteria does not include order by values.

Regards 

Dougall


-----Original Message-----
From: Dougall Squair [mailto:[EMAIL PROTECTED]
Sent: Monday, 5 April 2004 2:40 PM
To: 'OJB Users List'
Subject: RE: [Bug] RC6 seems to be producing invalid SQL for Oracle when
u sing ReportQuerys 


Ok, 

I think I have tracked down the cause of this bug.  It appears when you have
a ReportQuery that 
has a sort by clause then the method 

        org.apache.ojb.broker.util.BrokerHelper.getCountQuery(Query aQuery)

returns a Query that still has a sort by clause.  This intern causes 

        
org.apache.ojb.broker.accesslayer.sql.SqlQueryStatement.ensureColumns(List
columns, List existingColumns, StringBuffer buf)

to append the sort by columns to the count query.



Should the method
org.apache.ojb.broker.util.BrokerHelper.getCountQuery(Query aQuery)
strip out any sort by columns ?

Regards 

Dougall


-----Original Message-----
From: Dougall Squair [mailto:[EMAIL PROTECTED]
Sent: Monday, 5 April 2004 11:29 AM
To: 'OJB Users List'
Subject: [Bug] RC6 seems to be producing invalid SQL for Oracle when
using ReportQuerys 



Hi ,  

When I call 

        PersistenceBroker.getReportQueryIteratorByQuery(Query query)

The following SQL is being generated which is causing Oracle to throw a
SQLException.  It 
appears that OJB is including the PK column when counting the number of
rows.

i.e. the SQL generated is select count(*), table.pk from table 

which obviously causing a SQLException to be thrown 




2004-04-05 11:18:46,170 DEBUG (org.apache) SQL:SELECT
A0.mc_terms_agreement_id,A
0.mc_vendor_id,A0.status,A0.start_date,A1.vendor_name FROM mc_term_agreement
A0,
mc_vendor A1 WHERE A0.mc_vendor_id=A1.mc_vendor_id AND (A0.status <> ?)
ORDER BY
 1
2004-04-05 11:18:46,185 DEBUG (org.apache) SQL:SELECT
count(*),A0.mc_terms_agree
ment_id as ojb_col_1 FROM mc_term_agreement A0,mc_vendor A1 WHERE
A0.mc_vendor_i
d=A1.mc_vendor_id AND (A0.status <> ?) ORDER BY 2
2004-04-05 11:18:46,201 ERROR (org.apache) SQLException during the execution
of
the query (for a com.metcash.merchandising.model.agreement.Agreement):
ORA-00937
: not a single-group group function

java.sql.SQLException: ORA-00937: not a single-group group function

        at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:134)
        at oracle.jdbc.ttc7.TTIoer.processError(TTIoer.java:289)
        at oracle.jdbc.ttc7.Oall7.receive(Oall7.java:579)







---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to