void Query2WSRS::testPredicate() { ROSAM* am1 = new ROSAM("D1_SHIPDATE_MINI" , // table 2); // num indexes ROSAM* am2 = new ROSAM("D1_SUPPKEY_MINI", 1); Predicate* pred = new Predicate(Predicate::OP_EQUAL); RLEDataSource* ds1 = new RLEDataSource(am1, true); // value sorted ds1->setPredicate(pred); ds1->changeRHSBinding(PRED_FILTER); IntDataSource* ds2 = new IntDataSource(am2, false, // value sorted true); // isROS ds2->setPositionFilter(ds1, 0); Operator* srcs[1]={ds2}; int numCols[1]={1}; BlockPrinter* bPrint = new BlockPrinter(srcs, // data sources (array) numCols, // num columns per source (array) 1, // num sources "Query2WSRS.out"); // filename bPrint->printColumns(); }
void Query2WSRS::printRSAgg(Aggregator *agg) { system("rm Query2RS.out"); Operator* srcs[1]={agg}; int numCols[1]={2}; BlockPrinter* bPrint = new BlockPrinter(srcs, // data sources (array) numCols, // num columns per source (array) 1, // num sources "Query2RS.out"); // filename bPrint->printColumns(); }
/* args isn't used here */ bool Query2WSRS::run(Globals* g, const vector<string>& args) { //testPredicate(); if (g->build_tables) { system("rm D6_SHIPDATE"); system("rm D6_SUPPKEY"); } system("rm Query2WSRS.out"); Log::writeToLog("Query2WSRS", 10, "Query 2 starting..."); if (g->build_tables) { buildRSTables(g); } CatalogInstance::getCatalog(); // just to init the catalog. StopWatch stopWatch; stopWatch.start(); //Aggregator *wsAgg = processWS(); //printWSAgg(wsAgg); //Aggregator *rsAgg = processRS(); //printRSAgg(rsAgg); Aggregator *rsAgg = processRS(); Aggregator *wsAgg = processWS(); // printRSAgg(rsAgg); //printWSAgg(wsAgg); MergeSortedGroups *merge = new MergeSortedGroups(rsAgg, wsAgg, 2, // num columns 0); // merge by col index merge->setMergeOp(new MergeCountOp()); Operator* srcs[1]={merge}; int numCols[1]={2}; BlockPrinter* bPrint = new BlockPrinter(srcs, // data sources (array) numCols, // num columns per source (array) 1, // num sources "Query2WSRS.out"); // filename bPrint->printColumns(); cout << "Query 2 took: " << stopWatch.stop() << " ms" << endl; return true; }
/* args isn't used here */ bool Query4Prime::run(Globals* g, const vector<string>& args) { if (g->build_tables) { system("rm RLE_ORDERDATE"); system("rm UNCOMPRESSED_SHIPDATE"); } system ("rm Query4Prime.out"); Log::writeToLog("Query4Prime", 10, "Query 4 Prime starting..."); bool success = true; if (g->build_tables) { Log::writeToLog("Query4Prime", 10, "Loading column orderdate..."); string path = ORDERDATE_SHIPDATE_FULL; ColumnExtracter* ce = new ColumnExtracter(path, // filename 1, // column index g->force_rebuild); // force rebuild flag RLEEncoder* encoder = new RLEEncoder((Operator*) ce, // data source 0, // column index 8*PAGE_SIZE, // buffer size in bits (byte) INT_VALUE_TYPE, // value type (short) 16, // value size (unsigned int) 27, // start pos size (unsigned int) 16); // reps size RLEDecoder* decoder = new RLEDecoder(true); // value sorted PagePlacer* pagePlacer = new PagePlacer(encoder, decoder, 2, // num indexes false); // position primary ??? pagePlacer->placeColumn("RLE_ORDERDATE", // name false, // split on value true); // value sorted delete pagePlacer; delete ce; delete encoder; delete decoder; } if (g->build_tables) { Log::writeToLog("Query4Prime", 10, "Loading column shipdate..."); string path = ORDERDATE_SHIPDATE_FULL; ColumnExtracter* ce = new ColumnExtracter(path, // filename 2, // column index g->force_rebuild); // force rebuild flag IntEncoder* encoder = new IntEncoder((Operator*) ce, // data source 0, // column index 8*PAGE_SIZE); // buffer size in bits IntDecoder* decoder = new IntDecoder(false); // value sorted PagePlacer* pagePlacer = new PagePlacer(encoder, decoder, 1, // num indexes true); // position primary ??? pagePlacer->placeColumn("UNCOMPRESSED_SHIPDATE", // name false, // split on value ??? false); // value sorted delete pagePlacer; delete ce; delete encoder; delete decoder; } Log::writeToLog("Query4Prime", 10, "Opening column orderdate and shipdate..."); StopWatch stopWatch; stopWatch.start(); ROSAM* am1 = new ROSAM("RLE_ORDERDATE" , // table 2); // num indexes ROSAM* am2 = new ROSAM("UNCOMPRESSED_SHIPDATE", 1); Predicate* pred = new Predicate(Predicate::OP_GREATER_THAN); RLEDataSource* ds1 = new RLEDataSource(am1, true); // value sorted ds1->setPredicate(pred); ds1->changeRHSBinding(9000); IntDataSource* ds2 = new IntDataSource(am2, false, // value sorted true); // isROS ds2->setPositionFilter(ds1,0); Max* agg = new Max((Operator*) ds1, 0, (Operator*) ds2, 0); Operator* srcs[1]= {agg}; int numCols[1]= {2}; BlockPrinter* bPrint = new BlockPrinter(srcs, // data sources numCols, // num columns per source 1, // num sources "Query4Prime.out");// output filename bPrint->printColumns(); cout << "Query 4 Prime took: " << stopWatch.stop() << " ms" << endl; return success; }
/* args isn't used here */ bool Query2U::run(Globals* g, const vector<string>& args) { /*if (g->build_tables) { system("rm D1_UNCOMPRESSED_SHIPDATE*"); system("rm D1_UNCOMPRESSED_SUPPKEY"); }*/ system("rm Query2U.out"); Log::writeToLog("Query2", 10, "Query 2 starting..."); if (g->build_tables) { Log::writeToLog("Query2", 10, "Loading column shipdate..."); string path = LINEITEM_TABLE_PATH; ColumnExtracter* ce = new ColumnExtracter(path, // filename 1, // column index g->force_rebuild); // force rebuild flag IntEncoder* encoder = new IntEncoder((Operator*) ce, // data source 0, // column index 8*PAGE_SIZE); // buffer size in bits IntDecoder* decoder = new IntDecoder(false); // value sorted PagePlacer* pagePlacer = new PagePlacer(encoder, decoder, 2, // num indexes false); // position primary pagePlacer->placeColumn("D1_UNCOMPRESSED_SHIPDATE", // name false, // split on value true); // value sorted delete pagePlacer; delete ce; delete encoder; delete decoder; } if (g->build_tables) { Log::writeToLog("Query2", 10, "Loading column suppkey..."); string path = SUPPKEY_PATH; ColumnExtracter* ce = new ColumnExtracter(path, // filename 1, // column index g->force_rebuild); // force rebuild flag IntEncoder* encoder = new IntEncoder((Operator*) ce, // data source 0, // column index 8*PAGE_SIZE); // buffer size in bits IntDecoder* decoder = new IntDecoder(false); // value sorted PagePlacer* pagePlacer = new PagePlacer(encoder, decoder, 1, // num indexes XXX true); // position primary XXX pagePlacer->placeColumn("D1_UNCOMPRESSED_SUPPKEY", // name false, // split on value false); // value sorted delete pagePlacer; delete ce; delete encoder; delete decoder; } if (g->build_tables) { system("mv D1_UNCOMPRESSED_SHIPDATE* " RUNTIME_DATA); system("mv D1_UNCOMPRESSED_SUPPKEY " RUNTIME_DATA); } Log::writeToLog("Query2", 10, "Opening columns shipdate and suppkey ..."); StopWatch stopWatch; stopWatch.start(); ROSAM* am1 = new ROSAM("D1_UNCOMPRESSED_SHIPDATE" , // table 2); // num indexes ROSAM* am2 = new ROSAM("D1_UNCOMPRESSED_SUPPKEY", 1); Predicate* pred = new Predicate(Predicate::OP_EQUAL); IntDataSource* ds1 = new IntDataSource(am1, true, // value sorted true); // isROS ds1->setPredicate(pred); ds1->changeRHSBinding(9000); IntDataSource* ds2 = new IntDataSource(am2, false, // value sorted true); // isROS ds2->setPositionFilter(ds1, 0); Count* agg = new Count((Operator*) ds2, 0, (Operator*) ds2, 0); Operator* srcs[1]= {agg}; int numCols[1]= {2}; BlockPrinter* bPrint = new BlockPrinter(srcs, // data sources (array) numCols, // num columns per source (array) 1, // num sources "Query2U.out"); // filename bPrint->printColumns(); cout << "Query 2 took: " << stopWatch.stop() << " ms" << endl; delete ds1; delete am1; delete ds2; delete am2; return true; }