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);
}
Example #3
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);
}
Example #4
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");
	
}
Example #5
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");
	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");
}
Example #6
0
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");
}