simlaudato / asterixdb

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

Variable lost during rewrite #874

Open GoogleCodeExporter opened 8 years ago

GoogleCodeExporter commented 8 years ago
This query produces a plan that breaks during rewrite rules:

drop dataverse emergencyTest if exists;
create dataverse emergencyTest;
use dataverse emergencyTest;

create type CHPReport as {
    "rid":uuid,
    "epicenter":point,
    "radius":double
}

create type userLocation as {
    "id":uuid,
    "user-id":int64,
    "location":point
}

create type tornadoShelter as {
    "tsid":uuid,
    "location":point
}

create type sub as closed{
    "id":int,
    "param0":int64
}

create dataset NearbySheltersDuringTornadoDangerChannelSubscriptions(sub)
primary key id;

create dataset tornadoShelters(tornadoShelter)
primary key tsid autogenerated;

create dataset userLocations(userLocation)
primary key id autogenerated;

create dataset CHPReports(CHPReport)
primary key rid autogenerated;

create function NearbySheltersDuringTornadoDanger($userid) {
for $emergency in dataset CHPReports
let $dangerzone := create-circle($emergency.epicenter,$emergency.radius)
where (some $user in dataset userLocations satisfies
            $user.user-id = $userid
            and spatial-intersect($dangerzone,$user.location))
return {
"shelter locations":for $shelter in dataset tornadoShelters return 
$shelter.location}
};

for $sub in dataset NearbySheltersDuringTornadoDangerChannelSubscriptions
for $result in NearbySheltersDuringTornadoDanger($sub.param0)
return {
    "subscription-id":$sub.subscription-id,"execution-time":current-datetime(),"result":$result
};

Here is the error:
SEVERE: Field access function-call: asterix:field-access-by-name, 
Args:[%0->$$5, AString: {subscription-id}] does not correspond to any input of 
operator 
edu.uci.ics.hyracks.algebricks.core.algebra.operators.logical.SubplanOperator@6b
b4a5f
edu.uci.ics.asterix.common.exceptions.AsterixRuntimeException: Field access 
function-call: asterix:field-access-by-name, Args:[%0->$$5, AString: 
{subscription-id}] does not correspond to any input of operator 
edu.uci.ics.hyracks.algebricks.core.algebra.operators.logical.SubplanOperator@6b
b4a5f
    at edu.uci.ics.asterix.optimizer.rules.PushFieldAccessRule.propagateFieldAccessRec(PushFieldAccessRule.java:284)
    at edu.uci.ics.asterix.optimizer.rules.PushFieldAccessRule.pushAccessDown(PushFieldAccessRule.java:384)
    at edu.uci.ics.asterix.optimizer.rules.PushFieldAccessRule.propagateFieldAccessRec(PushFieldAccessRule.java:259)
    at edu.uci.ics.asterix.optimizer.rules.PushFieldAccessRule.rewritePost(PushFieldAccessRule.java:92)

Original issue reported on code.google.com by sjaco...@ucr.edu on 28 Apr 2015 at 9:23

GoogleCodeExporter commented 8 years ago

Original comment by sjaco...@ucr.edu on 28 Apr 2015 at 9:29

GoogleCodeExporter commented 8 years ago
I think this is fixed, but my solution still has issue 875, so this is still 
under investigation.

Original comment by sjaco...@ucr.edu on 12 May 2015 at 5:26

GoogleCodeExporter commented 8 years ago

Original comment by sjaco...@ucr.edu on 19 May 2015 at 6:44