incubator-empire-db-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From exxos <hat...@gmail.com>
Subject Re: UNION and the parentheses
Date Tue, 10 Aug 2010 20:53:48 GMT
Sorry, I confused between StringBuffer and StringBuilder...
But the use case is still valid.

Please accept my appologize.
Regards,
exxos.

On Tue, Aug 10, 2010 at 10:49 PM, exxos <hatufr@gmail.com> wrote:

> Hi,
>
> Thank you for your advise.
>
> The issue is considering multiple UNION.
>
> [sta1] UNON [sta2] UNION [sta3] UNION etc...
>
>  DBCommandExpr cmd = cmd1.union(cmd2);
> cmd = cmd.union(cmd3);
>
> When is invoked the method "getSelect()", the StringBuffer given in
> parametre is used in cascading. The StringBuffer is shared by all sub
> getSelect() of the commands. This makes the solution a little bit hard to
> elaborate. I'm thinking about to stop to share the same StringBuffer. This
> is because I base my logic on the length of the StringBuffer:
>
> getSelect(...) {
>    boolean isFirst = buf.length() < 1;
>    if(isFirst) {
>      buf.append( "(" );
>    }
>
> This comment is only to share my experience on that.
>
> Regards,
> exxos.
>
>
>
>
>
>
>
> On Wed, Aug 4, 2010 at 10:11 AM, Rainer Döbele <doebele@esteam.de> wrote:
>
>>  Hi exxos,
>>
>>
>>
>> I need a bit more time to investigate this.
>>
>> In the meantime I suggest to derive a class from DBCombinedCmd and to
>> override the getSelect(StringBuilder buf) method.
>>
>> Then copy the code from the base-class and add the parenthesis.
>>
>>
>>
>> Afterwards in your client-code you write:
>>
>> DBCommandExpr myExpr = new DBMyCombinedCmd(cmdLeft, “UNION”, cmdRight);
>>
>>
>>
>> Regards
>>
>> Rainer
>>
>>
>>
>> *Von:* exxos [mailto:hatufr@gmail.com]
>> *Gesendet:* Dienstag, 3. August 2010 15:18
>> *An:* empire-db-user@incubator.apache.org
>> *Betreff:* UNION and the parentheses
>>
>>
>>
>>
>> Hello,
>>
>> According to the MySQL's documentation (5.0), if the ORDER BY or the LIMIT
>> clause, are used with UNION, the "( )" have to be added to each SELECT
>> statements.
>>
>> http://dev.mysql.com/doc/refman/5.0/en/union.html
>> "To use an ORDER BY or LIMIT clause to sort or limit the entire UNION
>> result, parenthesize the individual SELECT statements and place the ORDER BY
>> or LIMIT after the last one."
>>
>> But empire-db version 2.0.6 produces "<DBCommand> UNION (<DBCommand>)
>> ORDER BY <DBColumn>" and there is no "( )" to the first SELECT.
>>
>> But by chance it continues to work with the ORDER BY, but with the keyword
>> LIMIT it stops!
>>
>> The class in charge to build the UNION command seems to be DBCombinedCmd
>> (line 102 - public boolean getSelect(StringBuilder buf) )
>>
>> Could you please advise about a workarround?
>>
>> /Cheers.
>>
>>
>

Mime
View raw message