#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 # # a test for the mrelational algebra # run with : Runner -c MyConfig.config 5] consume count; #testcase Filter2 #yields (int 0) query ten feed head[0] filter[.no > 5] consume count; #testcase Filter3 #yields error query Staedte feed filter[.SName > 5] consume count; #testcase Average1 #yields (real 325017.2413793103) query Staedte feed avg[Bev]; #testcase Average2 #yields (real -2.328125) query real feed avg[no]; #testcase Average3 #yields error query Staedte feed avg[SName]; #testcase Average4 #yields (real undefined) query real feed head[0] avg[no]; #testcase Head1 #yields ((mrel(mtuple((no int))))((1)(2)(3)(4)(5))) query ten feed head[5] consume; #testcase Head2 #yields ((mrel(mtuple((no int))))()) query ten feed head[0] consume; #testcase Concat1 #yields ((mrel(mtuple((no int))))((1)(2)(3)(1)(2)(3))) query ten feed head[3] twenty feed head[3] concat consume; #testcase Concat2 #yields ((mrel(mtuple((no int))))((1)(2)(3))) query ten feed head[0] twenty feed head[3] concat consume; #testcase Extend1 #yields ((mrel(mtuple((no int)(mod2 int))))((1 1)(2 0)(3 1))) query ten feed extend[mod2 : .no mod 2] head[3] consume; #testcase Extend2 #yields ((mrel(mtuple((no int)(mod2 int))))()) query ten feed head[0] extend[mod2 : .no mod 2] head[3] consume; #testcase Extract1 #yields (int 239000) query Staedte feed extract[Bev]; #testcase Extract2 #yields (int undefined) query Staedte feed head[0] extract[Bev]; #-testcase GroupBy1 #-yields ((mrel (mtuple ((DeptNr int) (anz int))))((1 2) (2 4) (3 4))) #-query Employee feed sortby[DeptNr asc] groupby[DeptNr; anz : group feed count] consume; #-testcase GroupBy2 #-yields ((mrel (mtuple ((DeptNr int) (anz int))))((1 2) (2 4) (3 4))) #-query Employee feed sortby[DeptNr asc] groupby[DeptNr; anz : group count] consume; #-testcase GroupBy3 #-yields ((mrel (mtuple ((DeptNr int) (anz int))))()) #-query Employee feed head[0] sortby[DeptNr asc] groupby[DeptNr; anz : group feed count] consume; #testcase HashJoin1 #yields ((mrel(mtuple((EName string)(EmpNr int)(DeptNr int)\ (Leader_A string)(DeptNr_A int))))\ (("Bush" 11 1 "Bush" 1)("Callahan" 1 2 "Myers" 2)("Jones" 14 2 "Myers" 2))) query Employee feed Dept feed rename[A] hashjoin[DeptNr, DeptNr_A, 17] sort head[3] consume; #testcase HashJoin2 #yields ((mrel(mtuple((no int)(no_A int))))((1 1)(6 6)(7 7)(9 9))) query duplicates feed ten feed rename[A] hashjoin[no, no_A, 23] sort rdup consume #testcase HashJoin3 #yields (int 0) query Employee feed head[0] Dept feed rename[A] hashjoin[DeptNr, DeptNr_A, 17] count; #testcase MergeJoin1 #yields ((mrel(mtuple((EName string)(EmpNr int)(DeptNr int)\ (Leader_A string)(DeptNr_A int))))\ (("Bush" 11 1 "Bush" 1)("Callahan" 1 2 "Myers" 2)("Jones" 14 2 "Myers" 2))) query Employee feed Dept feed rename[A] sortmergejoin[DeptNr, DeptNr_A] sort head[3] consume; #testcase MergeJoin2 #yields ((mrel(mtuple((no int)(no_A int))))((1 1)(6 6)(7 7)(9 9))) query duplicates feed ten feed rename[A] mergejoin[no, no_A] sort rdup consume #testcase MergeJoin3 #yields (int 0) query Employee feed head[0] Dept feed rename[A] sortmergejoin[DeptNr, DeptNr_A] count; #testcase Max1 #yields (string "Wuppertal") query Staedte feed max[SName]; #testcase Max2 #yields (string undefined) query Staedte feed head[0] max[SName]; #testcase Max3 #yields (real 9.0) query real feed max[no]; #testcase Min1 #yields (string "Aachen") query Staedte feed min[SName]; #testcase Min2 #yields (real -23.625) query real feed min[no]; #testcase Sum1 #yields (int 18851000) query Staedte feed sum[Bev]; #testcase Sum2 #yields (real -18.625) query real feed sum[no]; #testcase Sum3 #yields (int undefined) query Staedte feed head[0] sum[Bev]; #testcase Product1 #yields error query ten feed twenty feed product count #testcase Product2 #yields (int 200) query ten feed twenty feed rename[A] product count #testcase Product3 #yields (int 0) query ten feed twenty feed head[0] rename[A] product count #testcase Sort1 #yields (int 200) query ten feed twenty feed rename[A] product sort count #testcase Sort2 #yields (int 0) query ten feed head[0] twenty feed rename[A] product sort count #testcase Rdup1 #yields (int 20) query twenty feed ten feed concat sort rdup count #testcase Rdup2 #yields (int 0) query twenty feed ten feed concat sort head[0] rdup count #testcase Project1 #yields (int 20) query ten feed twenty feed rename[A] product project[no_A] sort rdup count #testcase Project2 #yields (int 0) query ten feed head[0] twenty feed rename[A] product project[no_A] sort rdup count #testcase Diff1 #yields (int 10) query twenty feed odd feed mergediff count #testcase Diff2 #yields (int 100) query twenty feed odd feed rename[A] product sort ten feed odd feed rename[A] product sort mergediff count #testcase Diff3 #yields (int 20) query twenty feed odd feed head[0] mergediff count #testcase Diff4 #yields (int 0) query twenty feed head[0] odd feed mergediff count #testcase Sec1 #yields (int 10) query twenty feed odd feed mergesec count #testcase Sec2 #yields (int 100) query twenty feed odd feed rename[A] product sort ten feed odd feed rename[A] product sort mergesec count #testcase Sec3 #yields (int 0) query twenty feed head[0] odd feed mergesec count #testcase Union1 #yields (int 20) query twenty feed odd feed mergeunion count #testcase Union2 #yields (int 200) query twenty feed odd feed rename[A] product sort ten feed odd feed rename[A] product sort mergeunion count #testcase Union3 #yields (int 10) query twenty feed head[0] odd feed mergeunion count #testcase Sample1 #yields error query Staedte sample[a, 0.1] count #testcase Sample2 #yields error query 1 sample[10, 0.1] count #testcase Sample3 #yields (int 58) query Staedte sample[100, 0.01] count #testcase Sample4 #yields (int 0) query Staedte feed head[0] consume sample[100, 0.01] count #testcase Sample5 #yields (int 58) query Staedte sample[-2345, 200.0] count #testcase Sample6 #yields (int 10) query Staedte sample[10, 0.0] count #testcase Sample7 #yields (int 58) query Staedte sample[0, 1.0] count #teardown close database; delete database mrelalgtest;