Hi!

 

I am running into this error:

 

batcalc.ifThenElse:requires bats of identical size

 

My server (running on Windows XP 64):

# MonetDB server v5.6.0, based on kernel v1.24.0

# Serving database 'demo'

# Compiled for i686-pc-win32/64bit with 32bit OIDs dynamically linked

 

The following recreates the problem:

 

CREATE TABLE test1 (col1 INTEGER);

INSERT INTO test1 VALUES (null);

INSERT INTO test1 VALUES (null);

SELECT

        CASE WHEN col1=1 THEN 'ONE' END AS "pc1"

FROM

        test1

GROUP BY "pc1";

 

Any ideas?  Obviously the above isn't too interesting, but it a simplified test case from a more complex query on a much larger dataset.  Seems to be related to GROUP BY on a CASE...

 

Thanks!

Rick

 

+-----------------------------------------------------------------------------+

| mal                                                                         |

+=============================================================================+

| function user.s0_3():void;                                                  |

|     _1:bat[:oid,:int]{rows=1:lng}  := sql.bind("voc","test2","col1",0);     |

|     _6:bat[:oid,:int]{rows=1:lng}  := sql.bind("voc","test2","col1",1);     |

|     _8{rows=2:lng} := algebra.kunion(_1,_6);                                |

|     _1:bat[:oid,:int]{rows=1:lng}  := nil;                                  |

|     _6:bat[:oid,:int]{rows=1:lng}  := nil;                                  |

|     _9:bat[:oid,:int]{rows=1:lng}  := sql.bind("voc","test2","col1",2);     |

|     _11{rows=2:lng} := algebra.kdifference(_8,_9);                          |

|     _8{rows=2:lng} := nil;                                                  |

|     _12{rows=3:lng} := algebra.kunion(_11,_9);                              |

|     _11{rows=2:lng} := nil;                                                 |

|     _9:bat[:oid,:int]{rows=1:lng}  := nil;                                  |

|     _13:bat[:oid,:oid]{rows=1:lng}  := sql.bind_dbat("voc","test2",1);      |

|     _14{rows=1:lng} := bat.reverse(_13);                                    |

|     _13:bat[:oid,:oid]{rows=1:lng}  := nil;                                 |

|     _15{rows=3:lng} := algebra.kdifference(_12,_14);                        |

|     _14{rows=1:lng} := nil;                                                 |

|     _17{rows=3:lng,tlb>=0@0:oid,tub<1@0:oid} := algebra.markT(_15,0@0);     |

|     _15{rows=3:lng} := nil;                                                 |

|     _18{rows=3:lng,hlb>=0@0:oid,hub<1@0:oid} := bat.reverse(_17);           |

|     _17{rows=3:lng,tlb>=0@0:oid,tub<1@0:oid} := nil;                        |

|     _19{rows=3:lng,hlb>=0@0:oid,hub<1@0:oid} := algebra.join(_18,_12);      |

|     _12{rows=3:lng} := nil;                                                 |

| _20:bat[:oid,:bit]{rows=3:lng,hlb>=0@0:oid,hub<1@0:oid}  :=                 |

: batcalc.==(_19,1);                                                          |

| _23{rows=3:lng,hlb>=0@0:oid,hub<1@0:oid} := algebra.project(_18,nil:str);   |

| _24:bat[:oid,:str]{rows=3:lng,hlb>=0@0:oid,hub<1@0:oid}  :=                 |

: batcalc.ifthenelse(_20,"ONE",_23);                                          |

|     _20:bat[:oid,:bit]{rows=3:lng,hlb>=0@0:oid,hub<1@0:oid}  := nil;        |

|     _23{rows=3:lng,hlb>=0@0:oid,hub<1@0:oid} := nil;                        |

|     (ext36,grp34):= group.new(_24);                                         |

|     _24:bat[:oid,:str]{rows=3:lng,hlb>=0@0:oid,hub<1@0:oid}  := nil;        |

|     _27 := bat.mirror(ext36);                                               |

|     ext36 := nil;                                                           |

|     _28 := algebra.join(_27,_19);                                           |

|     _27 := nil;                                                             |

|     _19{rows=3:lng,hlb>=0@0:oid,hub<1@0:oid} := nil;                        |

|     _29:bat[:oid,:bit]  := batcalc.==(_28,1);                               |

|     _28 := nil;                                                             |

| _30{rows=3:lng,hlb>=0@0:oid,hub<1@0:oid} := algebra.project(_18,nil:str);   |

|     _18{rows=3:lng,hlb>=0@0:oid,hub<1@0:oid} := nil;                        |

|     _31:bat[:oid,:str]  := batcalc.ifthenelse(_29,"ONE",_30);               |

|     _29:bat[:oid,:bit]  := nil;                                             |

|     _30{rows=3:lng,hlb>=0@0:oid,hub<1@0:oid} := nil;                        |

|     _32 := sql.resultSet(1,1,_31);                                          |

|     sql.rsColumn(_32,"voc.","pc1","char",0,0,_31);                          |

|     _31:bat[:oid,:str]  := nil;                                             |

|     _37 := io.stdout();                                                     |

|     sql.exportResult(_37,_32,"");                                           |

| end s0_3;                                                                   |

+-----------------------------------------------------------------------------+

 

Rick Spickelmier | CTO | Success Metrics, Inc. |  w (415) 738-2078 | ricks@successmetricsinc.com