simlaudato / asterixdb

Automatically exported from code.google.com/p/asterixdb
0 stars 0 forks source link

UCSD outer join related bug #849

Closed GoogleCodeExporter closed 8 years ago

GoogleCodeExporter commented 8 years ago
(from Kian Win and the UCSD SQL++ gang)

While running some new experiments on AsterixDB 0.8.6, we encountered an 
interesting behavior that is reminiscent of outer-joins / outer-correlates.

A. Surprising behavior

Query:
use dataverse experiments;
create type sType as closed{b : int32};
create dataset s(sType) primary key b;
insert into dataset s ({ "b" : 1});
insert into dataset s ({ "b" : 3});

for $x in {{ {"a":1},{"a":2} }}
for $y in (
 for $z in dataset s where $x.a=$z.b
    return $z.b
)
return {"x":$x,"y":$y}

Output :
{ "x": { "a": 1 }, "y": 1 }
{ "x": { "a": 2 }, "y": null }

B. Expected behavior

Query:
for $x in {{ {"a":1},{"a":2} }}
for $y in (
 for $z in {{ {"b":1},{"b":3} }} where $x.a=$z.b
    return $z.b
)
return {"x":$x,"y":$y}

Output:
{ "x": { "a": 1 }, "y": 1 }

In Scenario A, tuple 2 is retained even when the correlated condition fails and 
y is null-padded, which reminds one of a SQL outer-join.

NOTE: Scenerio B is right, Scenerio A is a bug.

Original issue reported on code.google.com by dtab...@gmail.com on 2 Feb 2015 at 7:13

GoogleCodeExporter commented 8 years ago

Original comment by buyingyi@gmail.com on 2 Feb 2015 at 9:48

GoogleCodeExporter commented 8 years ago

Original comment by buyingyi@gmail.com on 5 Feb 2015 at 6:14