LucidDB / luciddb

DEFUNCT: See README
https://github.com/LucidDB/luciddb
Apache License 2.0
53 stars 24 forks source link

[FRG-210] Fennel calc returns wrong result when filter contains CURRENT_TIMESTAMP comparison and an IS NULL predicate #662

Closed dynamobi-build closed 12 years ago

dynamobi-build commented 12 years ago

[reporter="zfong", created="Wed, 20 Sep 2006 09:39:15 -0500 (GMT-05:00)"] Here's the repro against a Farrago personality:

alter system set "calcVirtualMachine" = 'CALCVM_FENNEL';
create table t(k int primary key, a bigint, b timestamp);
insert into t values(1, null, current_timestamp);
select * from t where a is null or b <> current_timestamp;

The select should return one row. It returns none. If you switch to Java calc, the row is returned.

dynamobi-build commented 12 years ago

[author="jvs", created="Wed, 20 Sep 2006 09:57:44 -0500 (GMT-05:00)"] Here's the calc program being generated:

FINER: calc program =
O s4, s8, s8;
I s4, s8, s8;
L bo, bo, bo, bo, bo;
S s8, bo;
C bo, bo, s8, vc,5;
V 1, 0, 0, 0x3232303034 /* 22004 /;
T;
ISNULL L0, I1 /
0: IS NULL($t1) /;
NE L1, S0, C2 /
1: /;
JMPT @4, L1 /
2: /;
CALL 'CurrentTimestamp1(S0) /
3: CURRENTTIMESTAMP /;
NE L2, I2, S0 / 4: <>($t2, $t4) /;
OR L3, L0, L2 / 5: OR($t3, $t5) /;
JMPT @9, L3 / 6: /;
MOVE S1, C0 / 7: /;
RETURN / 8: /;
MOVE S1, C1 / 9: /;
ISNULL L4, I0 / 10: /;
JMPF @14, L4 / 11: /;
RAISE C3 / 12: /;
RETURN / 13: /;
REF O0, I0 / 14: /;
REF O1, I1 / 15: /;
REF O2, I2 / 16: /;
RETURN /_ 17: */;

dynamobi-build commented 12 years ago

[author="jvs", created="Wed, 20 Sep 2006 10:02:08 -0500 (GMT-05:00)"] The first few instructions look bad. Note that we're finally about to throw the switch for LucidDB to use Java calc only, so this may be the last Fennel calc bug report from that source for a while :)

dynamobi-build commented 12 years ago

[author="angel", created="Sun, 8 Oct 2006 20:03:20 -0500 (GMT-05:00)"] Fixed with dt change 7869.