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,CHAR_TYPE,sizeof(char)); /* open the index */ printf("opening index\n"); sprintf(fname,"%s.0",RELNAME); fd = PF_OpenFile(fname); // gettime for (recnum=1; recnum < MAXRECS; recnum++){ char value; if(recnum%4==0) value=0; else if(recnum%4==1) value=1; else if(recnum%4==2) value=2; else value=3; AM_InsertEntry(fd,CHAR_TYPE,sizeof(char),(char *)&value, recnum); } // gettimeofday(&t2,NULL); t = clock(); numrec= 0; char val = 3; sd = AM_OpenIndexScan(fd,CHAR_TYPE,sizeof(char),LE_OP,(char*)&val); while((recnum=AM_FindNextEntry(sd))>= 0){ numrec++; } AM_CloseIndexScan(sd); t = clock()-t; double time_taken = ((double)t)/CLOCKS_PER_SEC; printf("Scan takes %f seconds to retreive records with repeating attributes\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; clock_t t; // timeval t1, t2; // double elapsedtime; /* init */ printf("initializing\n"); PF_Init(); /* create index */ printf("creating index\n"); AM_CreateIndex(RELNAME,0,CHAR_TYPE,sizeof(char)); /* open the index */ printf("opening index\n"); sprintf(fname,"%s.0",RELNAME); fd = PF_OpenFile(fname); t = clock(); // gettimeofday(&t1,NULL); for (recnum=1; recnum < MAXRECS; recnum++) { char value; if(recnum%4==0) value='a'; else if(recnum%4==1) value='b'; else if(recnum%4==2) value='c'; else value='d'; AM_InsertEntry(fd,CHAR_TYPE,sizeof(char),(char *)&value, recnum); } t = clock()-t; // gettimeofday(&t2,NULL); double time_taken = ((double)t)/CLOCKS_PER_SEC; // elapsedtime = (t2.tv_sec - t1.tv_sec) * 1000.0; // elapsedtime += (t2.tv_usec - t1.tv_usec) / 1000.0; printf("Insert takes %f seconds to insert records with repeating attributes\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; 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 */ int recnum; /* record number */ //~ printf("Initialising\n"); PF_Init(); //~ printf("Creating hashing structure\n"); HM_Create("test_hashing"); //~ printf("opening hashmap\n"); fd = PF_OpenFile("test_hashing"); //~ printf("doing insert\n"); loadFromFile(fd); /*printf("printing\n"); HM_Print(fd); printf("Searching\n"); if(HM_Search(fd, 555466)) printf("%d\n", HM_Search(fd, 555466)); printf("deleting\n"); HM_Delete(fd, 0, 555466); printf("deleting\n"); HM_Delete(fd, 1, 555466); printf("printing\n"); HM_Print(fd);*/ PF_CloseFile(fd); HM_Destroy("test_hashing"); }
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"); xAM_CreateIndex(RELNAME,0,INT_TYPE,sizeof(int)); /* open the index */ printf("opening index\n"); sprintf(fname,"%s.0",RELNAME); fd = xPF_OpenFile(fname); /* first, make sure that simple deletions work */ printf("inserting into index\n"); for (recnum=0; recnum < 20; recnum++){ xAM_InsertEntry(fd,INT_TYPE,sizeof(int),(char *)&recnum, IntToRecId(recnum)); } printf("deleting odd number records\n"); for (recnum=1; recnum < 20; recnum += 2) xAM_DeleteEntry(fd,INT_TYPE,sizeof(int),(char *)&recnum, IntToRecId(recnum)); printf("retrieving even number records\n"); numrec= 0; sd = xAM_OpenIndexScan(fd,INT_TYPE,sizeof(int),EQ_OP,NULL); while((recnum=RecIdToInt(xAM_FindNextEntry(sd)))>= 0){ printf("%d\n",recnum); numrec++; } printf("retrieved %d records\n",numrec); xAM_CloseIndexScan(sd); printf("deleting even number records\n"); for (recnum=0; recnum < 20; recnum += 2) xAM_DeleteEntry(fd,INT_TYPE,sizeof(int),(char *)&recnum, IntToRecId(recnum)); printf("retrieving from empty index\n"); numrec= 0; sd = xAM_OpenIndexScan(fd,INT_TYPE,sizeof(int),EQ_OP,NULL); while((recnum=RecIdToInt(xAM_FindNextEntry(sd)))>= 0){ printf("%d\n",recnum); numrec++; } printf("retrieved %d records\n",numrec); xAM_CloseIndexScan(sd); /* insert into index */ printf("begin test of complex delete\n"); printf("inserting into index\n"); for (recnum=0; recnum < MAXRECS; recnum+=2){ xAM_InsertEntry(fd,INT_TYPE,sizeof(int),(char *)&recnum, IntToRecId(recnum)); } for (recnum=1; recnum < MAXRECS; recnum+=2) xAM_InsertEntry(fd,INT_TYPE,sizeof(int),(char *)&recnum, IntToRecId(recnum)); /* delete everything */ printf("deleting everything\n"); for (recnum=1; recnum < MAXRECS; recnum += 2) xAM_DeleteEntry(fd,INT_TYPE,sizeof(int),(char *)&recnum, IntToRecId(recnum)); for (recnum=0; recnum < MAXRECS; recnum +=2) xAM_DeleteEntry(fd,INT_TYPE,sizeof(int),(char *)&recnum, IntToRecId(recnum)); /* print out what remains */ printf("printing empty index\n"); numrec= 0; sd = xAM_OpenIndexScan(fd,INT_TYPE,sizeof(int),EQ_OP,NULL); while((recnum=RecIdToInt(xAM_FindNextEntry(sd)))>= 0){ printf("%d\n",recnum); numrec++; } printf("retrieved %d records\n",numrec); xAM_CloseIndexScan(sd); /* insert everything back */ printf("inserting everything back\n"); for (recnum=0; recnum < MAXRECS; recnum++){ xAM_InsertEntry(fd,INT_TYPE,sizeof(int),(char *)&recnum, IntToRecId(recnum)); } /* delete records less than 100, using scan!! */ printf("delete records less than 100\n"); testval = 100; sd = xAM_OpenIndexScan(fd,INT_TYPE,sizeof(int),LT_OP,(char *)&testval); while((recnum=RecIdToInt(xAM_FindNextEntry(sd)))>= 0){ if (recnum >= 100){ printf("invalid recnum %d\n",recnum); exit(1); } xAM_DeleteEntry(fd,INT_TYPE,sizeof(int),(char *)&recnum,IntToRecId (recnum)); } xAM_CloseIndexScan(sd); /* delete records greater than 150, using scan */ printf("delete records greater than 150\n"); testval = 150; sd = xAM_OpenIndexScan(fd,INT_TYPE,sizeof(int),GT_OP,(char *)&testval); while((recnum=RecIdToInt(xAM_FindNextEntry(sd)))>= 0){ if (recnum <= 150){ printf("invalid recnum %d\n",recnum); exit(1); } xAM_DeleteEntry(fd,INT_TYPE,sizeof(int),(char *)&recnum, IntToRecId(recnum)); } xAM_CloseIndexScan(sd); /* print out what remains */ printf("printing between 100 and 150\n"); numrec= 0; sd = xAM_OpenIndexScan(fd,INT_TYPE,sizeof(int),EQ_OP,NULL); while((recnum=RecIdToInt(xAM_FindNextEntry(sd)))>= 0){ printf("%d\n",recnum); numrec++; } printf("retrieved %d records\n",numrec); xAM_CloseIndexScan(sd); /* destroy everything */ printf("closing down\n"); xPF_CloseFile(fd); xAM_DestroyIndex(RELNAME,0); printf("test3 done!\n"); }
main() { int id0,id1; /* index descriptor */ char ch; int sd0,sd1; /* scan descriptors */ int i; RecIdType recid; /* record id */ char buf[NAMELENGTH]; /* buffer to store chars */ char fnamebuf[MAX_FNAME_LENGTH]; /* file name buffer */ int recnum; /* record number */ int numrec; /* # of records retrieved*/ /* init */ printf("initializing\n"); PF_Init(); /* create index on the both field of the record*/ printf("creating indices\n"); xAM_CreateIndex(RELNAME,RECNAME_INDEXNO,CHAR_TYPE,NAMELENGTH); xAM_CreateIndex(RELNAME,RECVAL_INDEXNO,INT_TYPE,sizeof(int)); /* open the index */ printf("opening indices\n"); sprintf(fnamebuf,"%s.%d",RELNAME,RECNAME_INDEXNO); id0 = xPF_OpenFile(fnamebuf); sprintf(fnamebuf,"%s.%d",RELNAME,RECVAL_INDEXNO); id1 = xPF_OpenFile(fnamebuf); /* insert into index on character */ printf("inserting into index on char\n"); for( ch='a', recnum=0; ch <= 'z'; ch= succ(ch), recnum++){ sprintf(buf,"%c%d",ch,recnum); xAM_InsertEntry(id0,CHAR_TYPE,NAMELENGTH,buf,IntToRecId(recnum)); } printf("opening index scan on char\n"); sd0 = xAM_OpenIndexScan(id0,CHAR_TYPE,NAMELENGTH,EQ_OP,NULL); printf("retrieving recid's from scan descriptor %d\n",sd0); numrec = 0; while((recnum=RecIdToInt(xAM_FindNextEntry(sd0)))>= 0){ printf("%d\n",recnum); numrec++; } printf("retrieved %d records\n",numrec); /* insert into index on integer */ printf("inserting into index of integer\n"); for (recnum=0; recnum < MAXRECS; recnum++){ xAM_InsertEntry(id1,INT_TYPE,sizeof(int),&recnum,IntToRecId(recnum)); } /* Let's see if the insert works */ printf("opening index scan on integer\n"); sd1 = xAM_OpenIndexScan(id1,INT_TYPE,sizeof(int),EQ_OP,NULL); printf("retrieving recid's from scan descriptor %d\n",sd1); numrec = 0; while((recnum=RecIdToInt(xAM_FindNextEntry(sd1)))>= 0){ printf("%d\n",recnum); numrec++; } printf("retrieved %d records\n",numrec); /* destroy everything */ printf("closing down\n"); xAM_CloseIndexScan(sd0); xAM_CloseIndexScan(sd1); xPF_CloseFile(id0); xPF_CloseFile(id1); xAM_DestroyIndex(RELNAME,RECNAME_INDEXNO); xAM_DestroyIndex(RELNAME,RECVAL_INDEXNO); printf("test1 done!\n"); }