main(){ int fd; /* file descriptor for the index */ char fname[FNAME_LENGTH]; /* file name */ int recnum; /* record number */ int sd; /* scan descriptor */ int numrec; /* # of records retrieved */ int testval; clock_t t; // timeval t1, t2; // double elapsedtime; /* init */ printf("initializing\n"); PF_Init(); /* create index */ printf("creating index\n"); AM_CreateIndex(RELNAME,0,INT_TYPE,sizeof(int)); /* open the index */ printf("opening index\n"); sprintf(fname,"%s.0",RELNAME); fd = PF_OpenFile(fname); int value = 1; for (recnum=0; recnum < MAXRECS; recnum++){ AM_InsertEntry(fd,INT_TYPE,sizeof(int),(char *)&recnum, recnum); } t = clock(); for(recnum=0;recnum < MAXRECS; recnum++){ AM_DeleteEntry(fd,INT_TYPE,sizeof(int),(char*)&recnum,recnum); } t = clock()-t; double time_taken = ((double)t)/CLOCKS_PER_SEC; printf("Delete takes %f seconds to delete records\n", time_taken); printf("Number of pages used %d\n",totalNumberOfPages); printf("closing down\n"); PF_CloseFile(fd); AM_DestroyIndex(RELNAME,0); }
main() { int fd; /* file descriptor for the index */ char fname[FNAME_LENGTH]; /* file name */ int recnum; /* record number */ int sd; /* scan descriptor */ int numrec; /* # of records retrieved */ int testval; /* init */ printf("initializing\n"); PF_Init(); /* create index */ printf("creating index\n"); AM_CreateIndex(RELNAME,0,INT_TYPE,sizeof(int)); /* open the index */ printf("opening index\n"); sprintf(fname,"%s.0",RELNAME); fd = PF_OpenFile(fname); /* first, make sure that simple deletions work */ printf("inserting into index\n"); for (recnum=0; recnum < 20; recnum++){ AM_InsertEntry(fd,INT_TYPE,sizeof(int),(char *)&recnum, recnum); } printf("deleting odd number records\n"); for (recnum=1; recnum < 20; recnum += 2) AM_DeleteEntry(fd,INT_TYPE,sizeof(int),(char *)&recnum, recnum); printf("retrieving even number records\n"); numrec= 0; sd = AM_OpenIndexScan(fd,INT_TYPE,sizeof(int),EQ_OP,NULL); while((recnum=AM_FindNextEntry(sd))>= 0){ printf("%d\n",recnum); numrec++; } printf("retrieved %d records\n",numrec); AM_CloseIndexScan(sd); printf("deleting even number records\n"); for (recnum=0; recnum < 20; recnum += 2) AM_DeleteEntry(fd,INT_TYPE,sizeof(int),(char *)&recnum, recnum); printf("retrieving from empty index\n"); numrec= 0; sd = AM_OpenIndexScan(fd,INT_TYPE,sizeof(int),EQ_OP,NULL); while((recnum=AM_FindNextEntry(sd))>= 0){ printf("%d\n",recnum); numrec++; } printf("retrieved %d records\n",numrec); AM_CloseIndexScan(sd); /* insert into index */ printf("begin test of complex delete\n"); printf("inserting into index\n"); for (recnum=0; recnum < MAXRECS; recnum+=2){ AM_InsertEntry(fd,INT_TYPE,sizeof(int),(char *)&recnum, recnum); } for (recnum=1; recnum < MAXRECS; recnum+=2) AM_InsertEntry(fd,INT_TYPE,sizeof(int),(char *)&recnum, recnum); /* delete everything */ printf("deleting everything\n"); for (recnum=1; recnum < MAXRECS; recnum += 2) AM_DeleteEntry(fd,INT_TYPE,sizeof(int),(char *)&recnum, recnum); for (recnum=0; recnum < MAXRECS; recnum +=2) AM_DeleteEntry(fd,INT_TYPE,sizeof(int),(char *)&recnum, recnum); /* print out what remains */ printf("printing empty index\n"); numrec= 0; sd = AM_OpenIndexScan(fd,INT_TYPE,sizeof(int),EQ_OP,NULL); while((recnum=AM_FindNextEntry(sd))>= 0){ printf("%d\n",recnum); numrec++; } printf("retrieved %d records\n",numrec); AM_CloseIndexScan(sd); /* insert everything back */ printf("inserting everything back\n"); for (recnum=0; recnum < MAXRECS; recnum++){ AM_InsertEntry(fd,INT_TYPE,sizeof(int),(char *)&recnum, recnum); } /* delete records less than 100, using scan!! */ printf("delete records less than 100\n"); testval = 100; sd = AM_OpenIndexScan(fd,INT_TYPE,sizeof(int),LT_OP,(char *)&testval); while((recnum=AM_FindNextEntry(sd))>= 0){ if (recnum >= 100){ printf("invalid recnum %d\n",recnum); exit(1); } AM_DeleteEntry(fd,INT_TYPE,sizeof(int),(char *)&recnum, recnum); } AM_CloseIndexScan(sd); /* delete records greater than 150, using scan */ printf("delete records greater than 150\n"); testval = 150; sd = AM_OpenIndexScan(fd,INT_TYPE,sizeof(int),GT_OP,(char *)&testval); while((recnum=AM_FindNextEntry(sd))>= 0){ if (recnum <= 150){ printf("invalid recnum %d\n",recnum); exit(1); } AM_DeleteEntry(fd,INT_TYPE,sizeof(int),(char *)&recnum, recnum); } AM_CloseIndexScan(sd); /* print out what remains */ printf("printing between 100 and 150\n"); numrec= 0; sd = AM_OpenIndexScan(fd,INT_TYPE,sizeof(int),EQ_OP,NULL); while((recnum=AM_FindNextEntry(sd))>= 0){ printf("%d\n",recnum); numrec++; } printf("retrieved %d records\n",numrec); AM_CloseIndexScan(sd); /* destroy everything */ printf("closing down\n"); PF_CloseFile(fd); AM_DestroyIndex(RELNAME,0); printf("test3 done!\n"); }