#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 relational 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 ((rel(tuple((No int))))((1)(2)(3)(4)(5))) query ten feed head[5] consume; #testcase Head2 #yields ((rel(tuple((No int))))()) query ten feed head[0] consume; #testcase Concat1 #yields ((rel(tuple((No int))))((1)(2)(3)(1)(2)(3))) query ten feed head[3] twenty feed head[3] concat consume; #testcase Concat2 #yields ((rel(tuple((No int))))((1)(2)(3))) query ten feed head[0] twenty feed head[3] concat consume; #testcase Extend1 #yields ((rel(tuple((No int)(Mod2 int))))((1 1)(2 0)(3 1))) query ten feed extend[Mod2 : .No mod 2] head[3] consume; #testcase Extend2 #yields ((rel(tuple((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 Extract3 #yields ((rel(tuple((SName2 string)))) (("Aachen"))) query Staedte feed head[1] groupby[SName; SName2: group feed extract[SName]] project[SName2] consume; #testcase GroupBy1 #yields ((rel (tuple ((DeptNr int) (Anz int))))((1 2) (2 4) (3 4))) query Employee feed sortby_old[DeptNr asc] groupby[DeptNr; Anz : group feed count] consume; #testcase GroupBy2 #yields ((rel (tuple ((DeptNr int) (Anz int))))((1 2) (2 4) (3 4))) query Employee feed sortby_old[DeptNr asc] groupby[DeptNr; Anz : group count] consume; #testcase GroupBy3 #yields ((rel (tuple ((DeptNr int) (Anz int))))()) query Employee feed head[0] sortby_old[DeptNr asc] groupby[DeptNr; Anz : group feed count] consume; #testcase HashJoin1 #yields ((rel(tuple((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_old head[3] consume; #testcase HashJoin2 #yields ((rel(tuple((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_old rdup consume #testcase HashJoin3 #yields (int 0) query Employee feed head[0] Dept feed rename[A] hashjoin[DeptNr, DeptNr_A, 17] count; #testcase HashJoin4 #yields (int 0) query Employee feed Dept feed head[0] rename[A] hashjoin[DeptNr, DeptNr_A, 17] count; #testcase HashJoin5 #yields (int 0) query Employee feed head[0] Dept feed head[0] rename[A] hashjoin[DeptNr, DeptNr_A, 17] count; #testcase MergeJoin1 #yields ((rel(tuple((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_old[DeptNr, DeptNr_A] sort_old head[3] consume; #testcase MergeJoin2 #yields ((rel(tuple((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_old rdup consume #testcase MergeJoin3 #yields (int 0) query duplicates feed head[0] ten feed head[0] rename[A] mergejoin[No, No_A] count #testcase MergeJoin4 #yields (int 0) query duplicates feed ten feed head[0] rename[A] mergejoin[No, No_A] sort_old rdup count #testcase MergeJoin5 #yields (int 0) query duplicates feed head[0] ten feed rename[A] mergejoin[No, No_A] sort_old rdup count #testcase SortMergeJoin1 #yields (int 0) query Employee feed head[0] Dept feed rename[A] sortmergejoin_old[DeptNr, DeptNr_A] count; #testcase SortMergeJoin2 #yields (int 0) query Employee feed Dept feed head[0] rename[A] sortmergejoin_old[DeptNr, DeptNr_A] count; #testcase SortMergeJoin3 #yields (int 0) query Employee feed head[0] Dept feed head[0] rename[A] sortmergejoin_old[DeptNr, DeptNr_A] count; #testcase SortMergeJoin #yields (int 10) query Employee feed Dept feed rename[A] sortmergejoin_old[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 0) 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_old count #testcase Sort2 #yields (int 0) query ten feed head[0] twenty feed rename[A] product sort_old count #testcase Rdup1 #yields (int 20) query twenty feed ten feed concat sort_old rdup count #testcase Rdup2 #yields (int 0) query twenty feed ten feed concat sort_old head[0] rdup count #testcase Project1 #yields (int 20) query ten feed twenty feed rename[A] product project[No_A] sort_old rdup count #testcase Project2 #yields (int 0) query ten feed head[0] twenty feed rename[A] product project[No_A] sort_old 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_old ten feed odd feed rename[A] product sort_old 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_old ten feed odd feed rename[A] product sort_old mergesec count #testcase Sec3 #yields (int 0) query twenty feed head[0] odd feed mergesec count #testcase Sec4 #yields (int 2) query ten feed head[2] rdup ten feed head[2] rdup 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_old ten feed odd feed rename[A] product sort_old 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 #testcase size1 #yields (bool TRUE) query Staedte roottuplesize = Staedte feed roottuplesize #testcase size2 #yields (bool TRUE) query abs( (Staedte exttuplesize) - (Staedte feed exttuplesize)) < 0.001 #testcase size3 #yields (bool TRUE) query Staedte tuplesize = Staedte feed tuplesize #testcase size4 #yields (bool TRUE) query Staedte rootattrsize[SName] = Staedte feed rootattrsize[SName] #testcase size5 #yields (bool TRUE) query Staedte rootattrsize[Kennzeichen] = Staedte feed rootattrsize[Kennzeichen] #testcase size6 #yields (bool TRUE) query Staedte rootattrsize[PLZ] = Staedte feed rootattrsize[PLZ] #testcase size7 #yields (bool TRUE) query Staedte rootattrsize[Vorwahl] = Staedte feed rootattrsize[Vorwahl] #testcase size8 #yields (bool TRUE) query Staedte extattrsize[SName] = Staedte feed extattrsize[SName] #testcase size9 #yields (bool TRUE) query Staedte extattrsize[Kennzeichen] = Staedte feed extattrsize[Kennzeichen] #testcase size10 #yields (bool TRUE) query Staedte extattrsize[PLZ] = Staedte feed extattrsize[PLZ] #testcase size11 #yields (bool TRUE) query Staedte extattrsize[Vorwahl] = Staedte feed extattrsize[Vorwahl] #testcase size12 #yields (bool TRUE) query Staedte attrsize[SName] = Staedte feed attrsize[SName] #testcase size13 #yields (bool TRUE) query Staedte attrsize[Kennzeichen] = Staedte feed attrsize[Kennzeichen] #testcase size14 #yields (bool TRUE) query Staedte attrsize[PLZ] = Staedte feed attrsize[PLZ] #testcase size15 #yields (bool TRUE) query Staedte attrsize[Vorwahl] = Staedte feed attrsize[Vorwahl] #testcase size16 #yields (bool TRUE) query abs(Staedte roottuplesize - (Staedte rootattrsize[SName] + Staedte rootattrsize[Bev] + Staedte rootattrsize[PLZ] + Staedte rootattrsize[Vorwahl] + Staedte rootattrsize[Kennzeichen])) < 2.e-06 #testcase size17 #yields (bool TRUE) query abs(Staedte exttuplesize - (Staedte extattrsize[SName] + Staedte extattrsize[Bev] + Staedte extattrsize[PLZ] + Staedte extattrsize[Vorwahl] + Staedte extattrsize[Kennzeichen])) < 2.e-06 #testcase size18 #yields (bool TRUE) query abs(Staedte tuplesize - (Staedte attrsize[SName] + Staedte attrsize[Bev] + Staedte attrsize[PLZ] + Staedte attrsize[Vorwahl] + Staedte attrsize[Kennzeichen])) < 2.e-06 #testcase intstream1 #yields (bool TRUE) query intstream(1, 4000000) use[fun(i:int) randint(i)] transformstream sort_old count = 4000000; ########################################## # Check if the virtual system tables work ########################################## #testcase SEC2COUNTERS #yields success query SEC2COUNTERS feed count; #testcase SEC2COMMANDS #yields success query SEC2COMMANDS feed count; #testcase SEC2CACHEINFO #yields success query SEC2CACHEINFO feed count; #testcase SEC2FILEINFO #yields success query SEC2FILEINFO feed count; #testcase SEC2TYPEINFO #yields success query SEC2TYPEINFO feed count; #testcase SEC2OPERATORINFO #yields success query SEC2OPERATORINFO feed count; #testcase FLOB1 #yields success let Staedte_2 = Staedte feed project[Vorwahl] extend[Seq: seqnext()] consume; #testcase FLOB2 #yields success query Staedte feed Staedte_2 feed project[Vorwahl] {arg2} product consume count; #testcase coverage1 #coverage RelationAlgebra #testcase coverage2 #coverage ExtRelationAlgebra #teardown save database to 'relalgtest.db'; close database; delete database relalgtest;