# This file is part of SECONDO. # # Copyright (C) 2004, University in Hagen, Department of Computer Science, # Database Systems for New Applications. # # SECONDO is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # SECONDO is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with SECONDO; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # # --- testqueries for the parthread algebra --- # # March 2020, Thomas Fischer # delete database parthread_lie # create database parthread_lie; # restore database parthread_lie from '$(SECONDO_BUILD_DIR)/Algebras/ParThread/Tests/TestData/parthread_lie'; open database parthread_lie; #setup parThreadLieTest ParThreadAlgebra #testcase noCtx #yields (int 340107) query Osm_Ways feed count; #testcase TC1par2CtxOnlyPipelineNoDelay #yields (int 340107) query Osm_Ways feed par[1] count; #testcase TC2par2CtxOnlyPipelineDelay1 #yields (int 340107) query Osm_Ways feed par[1] delayS[1] count; #testcase HashPar2CtxOnlyPipeline #yields (int 340107) #query Osm_Ways feed par[3, WayId] count; #testcase noCtx #yields (int 24979) query Osm_Ways feed filter[.NodeCounter=3] count; #testcase TC4par3CtxFilterNoDelay #yields (int 24979) query Osm_Ways feed par[1] filter[.NodeCounter=3] par[16] count; #testcase TC5par3CtxFilterDelay1 #yields (int 24979) query Osm_Ways feed par[1] filter[.NodeCounter=3] delayS[1] par[16] count; #testcase TC7parAttr3CtxFilterNoDelay #yields (int 24979) query Osm_Ways feed par[1, WayId] filter[.NodeCounter=3] par[16] count; #testcase TC8parAttr3CtxFilterDelay1 #yields (int 24979) query Osm_Ways feed par[1, WayId] filter[.NodeCounter=3] delayS[1] par[16] count; #testcase TC10parAttr4CtxFilterProjectNoDelay #yields (int 24979) query Osm_Ways feed par[1, WayId] filter[.NodeCounter=3] par[16] project[WayId, NodeCounter] par[16] count; #testcase TC11parAttr4CtxFilterProjectDelay1 #yields (int 24979) query Osm_Ways feed par[1, WayId] filter[.NodeCounter=3] delayS[1] par[16] project[WayId, NodeCounter] delayS[1] par[16] count; #testcase TC13par4CtxGeoDistanceNoDelay #yields (int 267587) query Osm_Nodes feed par[1] extend[Geo: makepoint(.Lon, .Lat)] par[16] extend[DistInKm: distanceOrthodrome(.Geo, [const point value(10.00 50.00)])/1000] par[16] count; #testcase TC14par4CtxGeoDistanceDelay1 #yields (int 267587) query Osm_Nodes feed par[1] delayS[1] extend[Geo: makepoint(.Lon, .Lat)] par[16] extend[DistInKm: distanceOrthodrome(.Geo, [const point value(10.00 50.00)])/1000] par[16] count; #testcase TC16par4CtxSingleSymmjoinNoDelay #yields (int 498) query Osm_Ways feedNth[50,TRUE] par[1,NodeRef] filter[.NodeCounter=3] {w} Osm_Nodes feed par[1,NodeId] {n} symmjoin[.NodeRef_w = ..NodeId_n] par[16] count; #testcase TC17par4CtxSingleSymmjoinDelay1 #yields (int 498) query Osm_Ways feedNth[50,TRUE] par[1,NodeRef] filter[.NodeCounter=3] {w} Osm_Nodes feed par[1,NodeId] {n} symmjoin[.NodeRef_w = ..NodeId_n] delayS[1] par[16] count; #testcase TC18par6CtxDoubleSymmjoinDelay11 #yields (int 1044) query Osm_Ways feedNth[50,TRUE] par[1,NodeRef] filter[.NodeCounter=3] {w} Osm_Nodes feed par[1,NodeId] {n} symmjoin[.NodeRef_w = ..NodeId_n] par[16, WayId_w] Osm_WayTags feed par[1, WayIdInTag] {t} symmjoin[.WayId_w = ..WayIdInTag_t] par[16] count; #testcase TC19parTripleSymmjoinSeqDelay111 #yields (int 765) query Osm_Ways feedNth[50,TRUE] par[1,NodeRef] filter[.NodeCounter=3] {w} Osm_Nodes feed par[1,NodeId] {n} symmjoin[.NodeRef_w = ..NodeId_n] delayS[1] par[16, WayId_w] Osm_WayTags feed par[1, WayIdInTag] {t} symmjoin[.WayId_w = ..WayIdInTag_t] delayS[1] par[16, WayId_w] Osm_Relations feed par[1, MemberRef] {r} filter[.MemberType_r starts "way"] symmjoin[.WayId_w = ..MemberRef_r] delayS[1] par[16] count; #testcase TC20par8CtxTripleSymmjoinBushyDelay1 #yields (int 0) query Osm_Ways feedNth[50,TRUE] par[1, WayId] filter[.NodeCounter=3] {w} Osm_WayTags feed par[1, WayIdInTag] {t} symmjoin[.WayId_w = ..WayIdInTag_t] delayS[1] par[16, NodeRef_w] Osm_Nodes feedNth[50,TRUE] par[1, NodeId] {n} Osm_NodeTags feed par[1, NodeIdInTag] {t} symmjoin[.NodeId_n = ..NodeIdInTag_t] delayS[1] par[16, NodeId_n] symmjoin[.NodeRef_w = ..NodeId_n] delayS[1] par[16] count; #testcase TC21par4CtxSingleHashjoinNoDelay #yields (int 24979) query Osm_Ways feed par[1,NodeRef] filter[.NodeCounter=3] {w} Osm_Nodes feed par[1] {n} hashjoin[NodeRef_w, NodeId_n] par[16] count; #testcase TC22par4CtxSingleHashjoinDelay1 #yields (int 24979) query Osm_Ways feed par[1,NodeRef] filter[.NodeCounter=3] {w} Osm_Nodes feed par[1,NodeId] {n} hashjoin[NodeRef_w, NodeId_n] delayS[1] par[16] count; #testcase TC23par6CtxDoubleHashjoinNoDelay #yields (int 56395) query Osm_Ways feed par[1, NodeRef] filter[.NodeCounter=3] {w} Osm_Nodes feed par[1, NodeId] {n} hashjoin[NodeRef_w, NodeId_n] par[16, WayId_w] Osm_WayTags feed par[1, WayIdInTag] {t} hashjoin[WayId_w, WayIdInTag_t] par[16] count; #testcase TC24par6CtxDoubleHashjoinDelay1 #yields (int 56395) query Osm_Ways feed par[1, NodeRef] filter[.NodeCounter=3] {w} Osm_Nodes feed par[1, NodeId] {n} hashjoin[NodeRef_w, NodeId_n] delayS[1] par[16, WayId_w] Osm_WayTags feed par[1, WayIdInTag] {t} hashjoin[WayId_w, WayIdInTag_t] delayS[1] par[16] count; #testcase TC25par8CtxTripleHashjoinNoDelay #yields (int 49351) query Osm_Ways feed par[1, NodeRef] filter[.NodeCounter=3] {w} Osm_Nodes feed par[1, NodeId] {n} hashjoin[NodeRef_w, NodeId_n] par[16, WayId_w] Osm_WayTags feed par[1, WayIdInTag] {t} hashjoin[WayId_w, WayIdInTag_t] par[16, WayId_w] Osm_Relations feed par[1, MemberRef] {r} filter[.MemberType_r starts "way"] hashjoin[WayId_w, MemberRef_r] par[16] count; #testcase TC26par8CtxTripleHashjoinSeqDelay1 #yields (int 49351) query Osm_Ways feed par[1, NodeRef] filter[.NodeCounter=3] {w} Osm_Nodes feed par[1, NodeId] {n} hashjoin[NodeRef_w, NodeId_n] delayS[1] par[16, WayId_w] Osm_WayTags feed par[1, WayIdInTag] {t} hashjoin[WayId_w, WayIdInTag_t] delayS[1] par[16, WayId_w] Osm_Relations feed par[1, MemberRef] {r} filter[.MemberType_r starts "way"] hashjoin[WayId_w, MemberRef_r] delayS[1] par[16] count; #testcase TC27par8CtxTripleHashjoinBushyDelay1 #yields (int 2807) query Osm_Ways feed par[1, WayId] filter[.NodeCounter=3] {w} Osm_WayTags feed par[1, WayIdInTag] {t} hashjoin[WayId_w, WayIdInTag_t] delayS[1] par[16, NodeRef_w] Osm_Nodes feed par[1, NodeId] {n} Osm_NodeTags feed par[1, NodeIdInTag] {t} hashjoin[NodeId_n, NodeIdInTag_t] delayS[1] par[16, NodeId_n] hashjoin[NodeRef_w, NodeId_n] delayS[1] par[16] count; # the TEARDOWN directive is followed by commands which # should be executed after the execution of all TESTCASES #teardown close database; # delete database parthread_lie;