Files
secondo/Tests/Testspecs/btreetest.test

447 lines
17 KiB
Plaintext
Raw Permalink Normal View History

2026-01-23 17:03:45 +08:00
#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
#
# NOTE: Due to a bug in Secondo (there is currently no support
# for the proper deletion of persistent objects) this test suite
# cannot properly clean up after a test. This means that after running this
# test one has to delete files by hand.
# Simply said: You should not use this currently
# a test for the btree algebra
# run with : TestRunner -c MyConfig.config <btreetest
# (TestRunner can be found in directory UserInterfaces)
# clean up what may be left over from e.g. a segfault
delete database btreetest;
#setup
create database btreetest;
open database btreetest;
(create tenTest : (rel(tuple((No int)))));
(update tenTest := ((rel(tuple((No int))))((1)(2)(3)(4)(5)(6)(7)(8)(9)(10))));
let tenNoInd = tenTest createbtree[No];
let tenNoInd2 = tenTest feed addtupleid sortby[No asc] createbtree[No];
(create twentyTest : (rel(tuple((No int)))));
(update twentyTest := ((rel(tuple((No int))))((1)(2)(3)(4)(5)(6)(7)(8)(9)(10)(11)(12)(13)(14)(15)(16)(17)(18)(19)(20))));
let twentyNoInd = twentyTest createbtree[No];
let twentyNoInd2 = twentyTest feed addtupleid sortby[No asc] createbtree[No];
(create evenTest : (rel(tuple((No int)))));
(update evenTest := ((rel(tuple((No int))))((2)(4)(6)(8)(10)(12)(14)(16)(18)(20))));
let evenNoInd = evenTest createbtree[No];
let evenNoInd2 = evenTest feed addtupleid sortby[No asc] createbtree[No];
(create oddTest : (rel(tuple((No int)))));
(update oddTest := ((rel(tuple((No int))))((1)(3)(5)(7)(9)(11)(13)(15)(17)(19))));
let oddNoInd = oddTest createbtree[No];
let oddNoInd2 = oddTest feed addtupleid sortby[No asc] createbtree[No];
(create duplicatesTest : (rel(tuple((No int)))));
(update duplicatesTest := ((rel(tuple((No int))))((1)(1)(1)(6)(6)(7)(9)(9)(9)(9))));
let duplicatesNoInd = duplicatesTest createbtree[No];
let duplicatesNoInd2 = duplicatesTest feed addtupleid sortby[No asc] createbtree[No];
(create realTest : (rel(tuple((No real)))));
(update realTest := ((rel(tuple((No real))))((1.0)(3.0)(-6.0)(7.0)(9.0)(0.875)(-9.875)(-23.625))));
let realNoInd = realTest createbtree[No];
let realNoInd2 = realTest feed addtupleid sortby[No asc] createbtree[No];
(create EmployeeTest :
(rel
(tuple
(
(EName string)
(EmpNr int)
(DeptNr int)))));
(update EmployeeTest :=
((rel
(tuple
(
(EName string)
(EmpNr int)
(DeptNr int))))
(
("Smith" 12 3)
("Myers" 13 2)
("Bush" 11 1)
("Jones" 14 2)
("Smith" 16 1)
("Langdon" 9 3)
("Lambert" 4 3)
("Callahan" 1 2)
("Myers" 17 2)
("Simpson" 8 3))));
let empNameInd = EmployeeTest createbtree[EName];
let empNameInd2 = EmployeeTest feed addtupleid sortby[EName asc] createbtree[EName];
let empDeptInd = EmployeeTest createbtree[DeptNr];
let empDeptInd2 = EmployeeTest feed addtupleid sortby[DeptNr asc] createbtree[DeptNr];
(create DeptTest : (rel
(tuple
(
(Leader string)
(DeptNr int)))));
(update DeptTest := ((rel
(tuple
(
(Leader string)
(DeptNr int))))
(
("Smith" 3)
("Myers" 2)
("Bush" 1))));
(create StaedteTest : (rel
(tuple
(
(SName string)
(Bev int)
(PLZ int)
(Vorwahl string)
(Kennzeichen string)))));
(update StaedteTest := ((rel
(tuple
(
(SName string)
(Bev int)
(PLZ int)
(Vorwahl string)
(Kennzeichen string))))
(
("Aachen" 239000 5100 "0241" "AC")
("Berlin" 1859000 1000 "030" "B")
("Bielefeld" 300000 4800 "0521" "BI")
("Bochum" 382000 4630 "0234" "BO")
("Bonn" 291000 5300 "0228" "BN")
("Braunschweig" 248000 3300 "0531" "BS")
("Bremen" 526000 2800 "0421" "HB")
("Bremerhaven" 134000 2850 "0471" "HB")
("Darmstadt" 134000 6100 "06151" "DA")
("Dortmund" 572000 4600 "0231" "DO")
("Duesseldorf" 562000 4000 "0211" "D")
("Duisburg" 518000 4100 "0203" "DU")
("Erlangen" 100000 8520 "09131" "ER")
("Essen" 620000 4300 "0201" "E")
("Frankfurt(Main)" 595000 6000 "069" "F")
("Freiburg" 184000 7800 "0761" "FR")
("Gelsenkirchen" 285000 4650 "0209" "GE")
("Goettingen" 133000 3400 "0551" "GOE")
("Hagen" 206000 5800 "02331" "HA")
("Hamburg" 1580000 2000 "040" "HH")
("Hamm" 166000 4700 "02381" "HAM")
("Hannover" 508000 3000 "0511" "H")
("Heidelberg" 135000 6900 "06221" "HD")
("Heilbronn" 111000 7100 "07131" "HN")
("Hildesheim" 101000 3200 "05121" "HI")
("Karlsruhe" 268000 7500 "0721" "KA")
("Kassel" 184000 3500 "0561" "KS")
("Kiel" 246000 2300 "0431" "KI")
("Koblenz" 111000 5400 "0261" "KO")
("Koeln" 916000 5000 "0221" "K")
("Krefeld" 217000 4150 "02151" "KR")
("Leverkusen" 155000 5090 "0214" "LEV")
("Ludwigshafen" 154000 6700 "0621" "LU")
("Luebeck" 210000 2400 "0451" "HL")
("Mainz" 189000 6500 "06131" "MZ")
("Mannheim" 295000 6800 "0621" "MA")
("Moenchengladbach" 254000 4050 "02161" "MG")
("Muehlheim(Ruhr)" 172000 4330 "0208" "MH")
("Muenchen" 1267000 8000 "089" "M")
("Muenster" 270000 4400 "0251" "MS")
("Nuernberg" 465000 8500 "0911" "N")
("Offenbach(Main)" 107000 6050 "069" "OF")
("Oldenburg" 138000 2900 "0441" "OL")
("Osnabrueck" 153000 4500 "0541" "OS")
("Paderborn" 110000 4790 "05251" "PB")
("Pforzheim" 104000 7530 "07231" "PF")
("Recklinghausen" 118000 4350 "02361" "RE")
("Regensburg" 124000 8400 "0941" "R")
("Remscheid" 121000 5630 "02191" "RS")
("Saarbruecken" 187000 6600 "0681" "SB")
("Salzgitter" 106000 3320 "05341" "SZ")
("Siegen" 107000 5900 "0271" "SI")
("Solingen" 158000 5650 "0212" "SG")
("Stuttgart" 562000 7000 "0711" "S")
("Wiesbaden" 267000 6200 "06121" "WI")
("Wolfsburg" 122000 3180 "05361" "WOB")
("Wuerzburg" 128000 8700 "0931" "WUE")
("Wuppertal" 377000 5600 "0202" "W"))));
let staedteSNameInd = StaedteTest createbtree[SName];
let staedteSNameInd2 = StaedteTest feed addtupleid sortby[SName asc] createbtree[SName];
let staedteBevInd = StaedteTest createbtree[Bev];
let staedteBevInd2 = StaedteTest feed addtupleid sortby[Bev asc] createbtree[Bev];
let staedtePLZInd = StaedteTest createbtree[PLZ];
let staedtePLZInd2 = StaedteTest feed addtupleid sortby[PLZ asc] createbtree[PLZ];
let staedteVorwahlInd = StaedteTest createbtree[Vorwahl];
let staedteVorwahlInd2 = StaedteTest feed addtupleid sortby[Vorwahl asc] createbtree[Vorwahl];
let staedteKennzeichenInd = StaedteTest createbtree[Kennzeichen];
let staedteKennzeichenInd2 = StaedteTest feed addtupleid sortby[Kennzeichen asc] createbtree[Kennzeichen];
#testcase MaxTest
#yields (string "Luebeck")
query staedteSNameInd StaedteTest leftrange["M"] max[SName];
#testcase BTreeOutputIsSorted
#yields ((rel (tuple ((DeptNr int) (Anz int))))((1 2) (2 4) (3 4)))
query empDeptInd EmployeeTest leftrange[1000] groupby[DeptNr; Anz : group feed count] consume;
#testcase FilterByIndex
#yields (int 5)
query tenNoInd tenTest rightrange[6] consume count;
#testcase rightrangeTypeMapping1
#yields error
query staedteSNameInd StaedteTest rightrange[6] consume count;
#testcase rightrangeTypeMapping2
#yields error
query StaedteTest staedteSNameInd rightrange[6] consume count;
#testcase rightrangeTypeMapping3
#yields error
query StaedteTest staedteSNameInd rightrange consume count;
#testcase rightrangeTypeMapping4
#yields error
query StaedteTest staedteSNameInd rightrange[6, 6] consume count;
#testcase LeftRangeInt
#yields ((rel(tuple((No int))))((1)(2)(3)(4)(5)))
query tenNoInd tenTest leftrange[5] consume;
#testcase LeftRangeString
#yields ((rel(tuple((SName string))))(("Aachen")("Berlin")("Bielefeld")))
query staedteSNameInd StaedteTest leftrange["Bielefeld"] project[SName] consume;
#testcase LeftRangeReal
#yields ((rel(tuple((No real))))((-23.625)(-9.875)(-6.0)))
query realNoInd realTest leftrange[0.0] consume;
#testcase RightRangeInt
#yields ((rel(tuple((No int))))((5)(6)(7)(8)(9)(10)))
query tenNoInd tenTest rightrange[5] consume;
#testcase RightRangeString
#yields ((rel(tuple((SName string))))(("Wolfsburg")("Wuerzburg")("Wuppertal")))
query staedteSNameInd StaedteTest rightrange["Wiesbadenappendix"] project[SName] consume;
#testcase RightRangeReal
#yields ((rel(tuple((No real))))((0.875)(1.0)(3.0)(7.0)(9.0)))
query realNoInd realTest rightrange[0.0] consume;
#testcase RangeInt
#yields ((rel(tuple((No int))))((5)(6)(7)))
query tenNoInd tenTest range[5, 7] consume;
#testcase RangeString
#yields ((rel(tuple((SName string))))(("Hamm")("Hannover")("Heidelberg")("Heilbronn")))
query staedteSNameInd StaedteTest range["Hamf", "Heilbronn"] project[SName] consume;
#testcase RangeReal
#yields ((rel(tuple((No real))))((0.875)(1.0)(3.0)))
query realNoInd realTest range[0.0, 6.5] consume;
#testcase FarRangeString
#yields ((rel(tuple((SName string))))(("Wolfsburg")("Wuerzburg")("Wuppertal")))
query staedteSNameInd StaedteTest range["Wiesbadenappendix", "ZZZZ"] project[SName] consume;
#testcase EmptyRangeInt
#yields (int 0)
query staedtePLZInd StaedteTest range[112133, 4345325] consume count;
#testcase EmptyLeftRangeInt
#yields (int 0)
query staedtePLZInd StaedteTest leftrange[1] consume count;
#testcase EmptyRightRangeInt
#yields (int 0)
query staedtePLZInd StaedteTest rightrange[999999] consume count;
#testcase EmptyMatch1
#yields (int 0)
query staedtePLZInd StaedteTest exactmatch[9999999] consume count;
#testcase EmptyMatch2
#yields (int 0)
query staedteSNameInd StaedteTest exactmatch["Achen"] consume count;
#testcase ExactMatch1
#yields ((rel(tuple((SName string))))(("Wolfsburg")))
query staedteSNameInd StaedteTest exactmatch["Wolfsburg"] project[SName] consume;
#testcase ExactMatch2
#yields ((rel (tuple ((Bev int)))) ((239000)))
query staedteSNameInd StaedteTest exactmatch["Aachen"] project[Bev] consume;
#testcase duplicates1
#yields ((rel(tuple((No int))))((9)(9)(9)(9)))
query duplicatesNoInd duplicatesTest exactmatch[9] consume
#testcase duplicates2
#yields ((rel(tuple((No int))))((6)(6)(7)))
query duplicatesNoInd duplicatesTest range[5,8] consume
#testcase duplicates3
#yields ((rel(tuple((No int))))((1)(1)(1)(6)(6)(7)))
query duplicatesNoInd duplicatesTest leftrange[8] consume
#testcase duplicates4
#yields ((rel(tuple((No int))))((6)(6)(7)(9)(9)(9)(9)))
query duplicatesNoInd duplicatesTest rightrange[6] consume
#testcase ConcatTest
#yields ((rel(tuple((No int))))((1)(2)(3)(1)(2)(3)))
query tenNoInd tenTest leftrange[3] twentyNoInd twentyTest leftrange[3] concat consume;
#testcase ExtendTest
#yields ((rel(tuple((No int)(Mod2 int))))((1 1)(2 0)(3 1)))
query tenNoInd tenTest leftrange[3] extend[Mod2 : .No mod 2] consume;
#testcase MaxTest
#yields (string "Luebeck")
query staedteSNameInd2 StaedteTest leftrange["M"] max[SName];
#testcase BTreeOutputIsSorted
#yields ((rel (tuple ((DeptNr int) (Anz int))))((1 2) (2 4) (3 4)))
query empDeptInd2 EmployeeTest leftrange[1000] groupby[DeptNr; Anz : group feed count] consume;
#testcase FilterByIndex
#yields (int 5)
query tenNoInd2 tenTest rightrange[6] consume count;
#testcase rightrangeTypeMapping1
#yields error
query staedteSNameInd2 StaedteTest rightrange[6] consume count;
#testcase rightrangeTypeMapping2
#yields error
query StaedteTest staedteSNameInd2 rightrange[6] consume count;
#testcase rightrangeTypeMapping3
#yields error
query StaedteTest staedteSNameInd2 rightrange consume count;
#testcase rightrangeTypeMapping4
#yields error
query StaedteTest staedteSNameInd2 rightrange[6, 6] consume count;
#testcase LeftRangeInt
#yields ((rel(tuple((No int))))((1)(2)(3)(4)(5)))
query tenNoInd2 tenTest leftrange[5] consume;
#testcase LeftRangeString
#yields ((rel(tuple((SName string))))(("Aachen")("Berlin")("Bielefeld")))
query staedteSNameInd2 StaedteTest leftrange["Bielefeld"] project[SName] consume;
#testcase LeftRangeReal
#yields ((rel(tuple((No real))))((-23.625)(-9.875)(-6.0)))
query realNoInd2 realTest leftrange[0.0] consume;
#testcase RightRangeInt
#yields ((rel(tuple((No int))))((5)(6)(7)(8)(9)(10)))
query tenNoInd2 tenTest rightrange[5] consume;
#testcase RightRangeString
#yields ((rel(tuple((SName string))))(("Wolfsburg")("Wuerzburg")("Wuppertal")))
query staedteSNameInd2 StaedteTest rightrange["Wiesbadenappendix"] project[SName] consume;
#testcase RightRangeReal
#yields ((rel(tuple((No real))))((0.875)(1.0)(3.0)(7.0)(9.0)))
query realNoInd2 realTest rightrange[0.0] consume;
#testcase RangeInt
#yields ((rel(tuple((No int))))((5)(6)(7)))
query tenNoInd2 tenTest range[5, 7] consume;
#testcase RangeString
#yields ((rel(tuple((SName string))))(("Hamm")("Hannover")("Heidelberg")("Heilbronn")))
query staedteSNameInd2 StaedteTest range["Hamf", "Heilbronn"] project[SName] consume;
#testcase RangeReal
#yields ((rel(tuple((No real))))((0.875)(1.0)(3.0)))
query realNoInd2 realTest range[0.0, 6.5] consume;
#testcase FarRangeString
#yields ((rel(tuple((SName string))))(("Wolfsburg")("Wuerzburg")("Wuppertal")))
query staedteSNameInd2 StaedteTest range["Wiesbadenappendix", "ZZZZ"] project[SName] consume;
#testcase EmptyRangeInt
#yields (int 0)
query staedtePLZInd2 StaedteTest range[112133, 4345325] consume count;
#testcase EmptyLeftRangeInt
#yields (int 0)
query staedtePLZInd2 StaedteTest leftrange[1] consume count;
#testcase EmptyRightRangeInt
#yields (int 0)
query staedtePLZInd2 StaedteTest rightrange[999999] consume count;
#testcase EmptyMatch1
#yields (int 0)
query staedtePLZInd2 StaedteTest exactmatch[9999999] consume count;
#testcase EmptyMatch2
#yields (int 0)
query staedteSNameInd2 StaedteTest exactmatch["Achen"] consume count;
#testcase ExactMatch1
#yields ((rel(tuple((SName string))))(("Wolfsburg")))
query staedteSNameInd2 StaedteTest exactmatch["Wolfsburg"] project[SName] consume;
#testcase ExactMatch2
#yields ((rel (tuple ((Bev int)))) ((239000)))
query staedteSNameInd2 StaedteTest exactmatch["Aachen"] project[Bev] consume;
#testcase duplicates1
#yields ((rel(tuple((No int))))((9)(9)(9)(9)))
query duplicatesNoInd2 duplicatesTest exactmatch[9] consume
#testcase duplicates2
#yields ((rel(tuple((No int))))((6)(6)(7)))
query duplicatesNoInd2 duplicatesTest range[5,8] consume
#testcase duplicates3
#yields ((rel(tuple((No int))))((1)(1)(1)(6)(6)(7)))
query duplicatesNoInd2 duplicatesTest leftrange[8] consume
#testcase duplicates4
#yields ((rel(tuple((No int))))((6)(6)(7)(9)(9)(9)(9)))
query duplicatesNoInd2 duplicatesTest rightrange[6] consume
#testcase ConcatTest
#yields ((rel(tuple((No int))))((1)(2)(3)(1)(2)(3)))
query tenNoInd2 tenTest leftrange[3] twentyNoInd2 twentyTest leftrange[3] concat consume;
#testcase ExtendTest
#yields ((rel(tuple((No int)(Mod2 int))))((1 1)(2 0)(3 1)))
query tenNoInd2 tenTest leftrange[3] extend[Mod2 : .No mod 2] consume;
#teardown
close database;
delete database btreetest;