コード例 #1
0
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();

}
コード例 #2
0
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();
}
コード例 #3
0
/* 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;
}
コード例 #4
0
ファイル: Query4Prime.cpp プロジェクト: plusql/cstore
/* 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;
}
コード例 #5
0
ファイル: Query2U.cpp プロジェクト: plusql/cstore
/* 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;
}