Hi,
Sorry for a bit technical posting :-)
A recent patch in castor source caused oql query containing a 'count(*)' select to
fail.
A oql query like "SELECT count ( * ) FROM org.foo.Bar o" leads to a
HsqlQueryExpression
having its _select property set to " count(*) " and its _cols property having a zero
size, so
when the addColumnList method is called a '1' is appended to the sql query buffer and
the method returns, the code that should be called (if ( _select != null ) ...) has no
chance
to be called.
private void addColumnList(StringBuffer buffer, HsqlAliasInfo aliasInfo)
{
if ( _cols.size() == 0 ) // ? (Preserved from superclass)
{
buffer.append("1");
return;
}
// code skipped...
if ( _select != null ) // ? (Preserved from superclass)
if ( i > 0 )
buffer.append( JDBCSyntax.ColumnSeparator ).append( _select );
else
buffer.append( _select );
}
Former version of HsqlQueryExpression.addSelectClause() (revision 1.3) worked because
the _select property was appended anyway :
private void addSelectClause(StringBuffer buffer, HsqlAliasInfo aliasInfo)
{
buffer.append( JDBCSyntax.Select );
if ( _distinct ) buffer.append( JDBCSyntax.Distinct );
if ( _select == null )
addColumnList(buffer, aliasInfo);
else
buffer.append( _select ).append(" ");
}
but latest cvs version (revision 1.4) does not append the _select anymore :
private void addSelectClause(StringBuffer buffer, HsqlAliasInfo aliasInfo)
{
buffer.append( JDBCSyntax.Select );
if ( _distinct )
buffer.append( JDBCSyntax.Distinct );
addColumnList(buffer, aliasInfo);
}
Is there a better way to perform count(*) using castor-jdo or will this be fixed in
next castor release.
Thanks.
Cyril.
-----------------------------------------------------------
If you wish to unsubscribe from this mailing, send mail to
[EMAIL PROTECTED] with a subject of:
unsubscribe castor-dev