//Υποπεριπτωση της εκτελεσης WHERE οπου το attr2 χαρακτηριστικο υποδεικνυει ονομα στηλης t_rc SSQLM::whereAttrCase(REM_RecordFileHandle &rfh, queue<REM_RecordID> &ridQ, struct relAttr RAttr1, t_compOp compOp, struct relAttr RAttr2) { t_rc rc; REM_RecordFileScan rfs; //Ανοιξε scan για τις δυο στηλες rc = rfs.OpenRecordScan(rfh, RAttr1.type, RAttr1.attr_Length, RAttr1.offset, NO_OP, NULL); if(rc != OK) return rc; REM_RecordHandle rh; //Για καθε γραμμη στον πινακα //Παρε τον χειριστη while(rfs.GetNextRecord(rh)==OK) { //Παρε τα δεδομενα της καθε στηλης απο τους χειριστες char* data; rc = rh.GetData(data); if(rc!=OK) return rc; //Ελεγξε αν ικανοποιουν τις συνθηκες και αν ναι βαλτα στην ουρα if(makeComp(data + RAttr1.offset,RAttr1,compOp,data + RAttr2.offset,true)) { REM_RecordID rid; rh.GetRecordID(rid); ridQ.push(rid); } } rc = rfs.CloseRecordScan(); return rc; }
int main() { Component* compList; Net** net; Placed* placed; compList = malloc(NUM_COMP * sizeof(Component)); net = malloc(NUM_NETS * sizeof(Net*)); placed = malloc(NUM_COMP * sizeof(Placed)); int* ordering = malloc(NUM_COMP * sizeof(int)); int pinCount = makeComp(compList, net, NUM_COMP, NUM_NETS, time(NULL)); shuffleOrdering(ordering, NUM_COMP, net, NUM_NETS); placeParts(compList, net, placed, ordering, NUM_COMP, NUM_NETS); printf("test\n"); return 0; }