예제 #1
0
파일: command.c 프로젝트: embalint/akdb
/** 
 * @author Mario Kolmacic updated by Ivan Pusic and Tomislav Ilisevic
 * @brief Function for executing given commands (SELECT, UPDATE, DELETE AND INSERT)
 * @param komande Commands array to execute
 * @param brojkomandi Number of commands in array
 */
int AK_command(command * komande, int brojkomandi) {
    int i;
    AK_PRO;
    for (i = 0; i < brojkomandi; ++i) {
        switch(komande[i].id_command){
        case SELECT:
            printf("***SELECT***\n");
            char *ext = "_selection_tmp_table";
            char *dest_table = AK_malloc(strlen(ext) + strlen(komande[i].tblName)+1);
            strcpy(dest_table, komande[i].tblName);
            strcat(dest_table, ext);
            if(AK_selection(komande[i].tblName, dest_table, (struct list_node*)komande[i].parameters) == EXIT_ERROR){ // unutar funkcije je ispis privremene tablice
		AK_EPI;
                return EXIT_ERROR;
	    }

            break;
            
        case UPDATE:
            printf("***UPDATE***\n");
            if(Ak_update_row( ((struct list_node *) (komande[i].parameters))) == EXIT_ERROR){
                AK_EPI;
                return EXIT_ERROR;
            }
            AK_print_table(komande[i].tblName);

            break;
        case DELETE:
            printf("***DELETE***\n");        	 
            if(Ak_delete_row( ((struct list_node *) (komande[i].parameters))) == EXIT_ERROR){
		AK_EPI;
                return EXIT_ERROR;
	    }
            AK_print_table(komande[i].tblName);
            break;
           
        case INSERT:
            printf("***INSERT***\n");
            if(Ak_insert_row( ((struct list_node *) (komande[i].parameters))) == EXIT_ERROR){
		AK_EPI;
                return EXIT_ERROR;
	    }
            AK_print_table(komande[i].tblName);
            break;
        default:
            break;
        }
    }
    AK_EPI;
    return EXIT_SUCCESS;
}
예제 #2
0
파일: difference.c 프로젝트: mschatten/akdb
/**
 * @brief  Function for difference operator testing
 * @author Dino Laktašić
 */
TestResult Ak_op_difference_test() {
    AK_PRO;
    char *sys_table = "AK_relation";
    char *destTable = "difference_test";
    char *tblName1 = "professor";
    char *tblName2 = "assistant";
    int test_difference;

    printf("\n********** DIFFERENCE TEST **********\n\n");
    if (AK_if_exist(destTable, sys_table) == 0) {
    	printf("Table %s does not exist!\n", destTable);
	test_difference = AK_difference(tblName1, tblName2, destTable);
    }
    else {
	printf("Table %s already exists!\n", destTable);
	test_difference = EXIT_SUCCESS;
    }

    AK_print_table(destTable);
	
    if (test_difference == EXIT_SUCCESS){
		printf("\n\nTest succeeded!\n");
    }
    else{
		printf("\n\nTest failed!\n");
    }
	
    AK_EPI;
    return TEST_result(0,0);
}
예제 #3
0
파일: union.c 프로젝트: embalint/akdb
/**
 * @author Dino Laktašić
 * @brief  Function for union operator testing
 * @return No return value
 * 
 */
void AK_op_union_test() {
    AK_PRO;
    printf("\n********** UNION TEST **********\n\n");

    AK_union("professor", "assistant", "union_test");
    AK_print_table("union_test");
    AK_EPI;
}
예제 #4
0
파일: table.c 프로젝트: mschatten/akdb
/**
 * @author Mislav Čakarić, edited by Ljubo Barać
 * @brief Function for renaming operator testing (moved from rename.c)
 * @return No return value
 */
TestResult AK_op_rename_test() {
    AK_PRO;
    //printf( "rename_test: Present!\n" );
    printf("\n********** RENAME TEST **********\n\n");

    AK_print_table("AK_relation");
    int rename = AK_rename("student", "weight", "student2", "weight");
    AK_print_table("student2");
    //AK_print_table("student2");

    AK_print_table("AK_relation");
	
    AK_EPI;
	if (rename != EXIT_ERROR ){
	  return TEST_result(1,0);
    }
    else{
	  return TEST_result(0,1);
    }
}
예제 #5
0
파일: table.c 프로젝트: mschatten/akdb
/**
 * @author Unknown
 * @brief Function for testing table abstraction
 * @return No return value

    @update by Ana-Marija Balen - added getRow function to the test
 */
TestResult AK_table_test() {
    AK_PRO;
    printf("table.c: Present!\n");

    printf("\n********** TABLE ABSTRACTION TEST by Matija Šestak **********\n\n");

    printf("Table \"student\":AK_print_table\n");
    AK_print_table("student");
    printf("\n");

    printf("Table \"student\": AK_table_empty: ");
    if (AK_table_empty("student"))
        printf("true\n");
    else
        printf("false\n");
    printf("\n");

    printf("Table \"student\": AK_num_attr: ");
    printf("%d\n", AK_num_attr("student"));
    printf("\n");
	
    int get_num_records;
    printf("Table \"student\": AK_get_num_records: ");
    printf("%d\n", get_num_records = AK_get_num_records("student"));
    printf("\n");

    printf("Table \"student\": AK_get_row: ");
    
    int i;

    AK_header *head = AK_get_header("student");
    int num_attr = AK_num_attr("student");
    int len[num_attr];
    for (i = 0; i < num_attr; i++) {
            len[i] = strlen((head + i)->att_name);
    }

    AK_print_row(len, AK_get_row(0,"student"));
    printf("\n");

    printf("Table \"student\": AK_get_attr_name for index 3: ");
    int get_attr_name;
    printf("%s\n", get_attr_name = AK_get_attr_name("student", 3));
    printf("\n");

    int get_attr_index;
    printf("Table \"student\": AK_get_attr_index of \"year\": ");
    printf("%d\n", get_attr_index = AK_get_attr_index("student", "year"));
    printf("\n");
	
    int tuple_to_string;
    printf("Table \"student\": AK_get_tuple for row=0, column=1:");
    printf("%s\n", tuple_to_string = AK_tuple_to_string(AK_get_tuple(0, 1, "student")));
	
	if (get_num_records != EXIT_WARNING & get_attr_name != NULL & get_attr_index != EXIT_WARNING & tuple_to_string != NULL) {
	  printf("\nTest succeeded!\n");
    }
    else{
	  printf("\nTest failed!\n");
    }
	
    AK_EPI;
    return TEST_result(0,0);
}
예제 #6
0
파일: drop.c 프로젝트: mschatten/akdb
/**
 * @author unknown, Jurica Hlevnjak - added all tests except drop table test, updated by Tomislav Ilisevic, Maja Vračan
 * @brief Function for testing all DROP functions
 */
TestResult AK_drop_test() {
    AK_PRO;
    printf("=========================================================\n");
    printf("========================DROP_TEST========================\n");
    int results[114];
    AK_drop_arguments *drop_arguments = (AK_drop_arguments *)AK_malloc(sizeof (AK_drop_arguments));
    drop_arguments->next = (AK_drop_arguments *)AK_malloc(sizeof (AK_drop_arguments));
    drop_arguments->value=(char*)"\0";

    drop_arguments->next->next = (AK_drop_arguments *)AK_malloc(sizeof (AK_drop_arguments));
    drop_arguments->next->value=(char*)"\0";

    drop_arguments->next->next->next = (AK_drop_arguments *)AK_malloc(sizeof (AK_drop_arguments));
    drop_arguments->next->next->value=(char*)"\0";

    drop_arguments->next->next->next->next =NULL;

    printf("\n-----DROP TABLE-----\n");
    AK_print_table("AK_relation");
    drop_arguments->value = "department";
    results[1] = AK_drop(DROP_TABLE, drop_arguments);

    AK_print_table("AK_relation");

    printf("\n-----DROP CATALOG TABLE-----\n");
    drop_arguments->value = "AK_attribute";
    results[2] = AK_drop(DROP_TABLE, drop_arguments);
    AK_print_table("AK_attribute");
    AK_print_table("AK_relation");

    printf("\n-----DROP VIEW-----\n");
    AK_print_table("AK_view");
    drop_arguments->value = "view300";
    results[3] = AK_drop(DROP_VIEW, drop_arguments);
    AK_print_table("AK_view");

    printf("\n-----DROP HASH INDEX-----\n");
    drop_arguments->value = "student_hash_index";
    AK_print_table("AK_index");

    results[4] = AK_drop(DROP_INDEX, drop_arguments);

    printf("\n-----DROP BITMAP INDEX-----\n");
    drop_arguments->value = "assistantfirstname_bmapIndex";
    AK_print_table("AK_index");

    results[5] = AK_drop(DROP_INDEX, drop_arguments);

    AK_print_table("AK_index");

    printf("\n-----DROP SEQUENCE-----\n");
    drop_arguments->value = "sekvenca5";
    AK_print_table("AK_sequence");
    results[6] = AK_drop(DROP_SEQUENCE, drop_arguments);
    AK_print_table("AK_sequence");

    printf("\n-----DROP TRIGGER-----\n");
    AK_print_table("AK_trigger");
    AK_print_table("AK_trigger_conditions");
    drop_arguments->value = "trigg4";
    drop_arguments->next->value = "AK_reference";
    results[7] = AK_drop(DROP_TRIGGER, drop_arguments);
    AK_print_table("AK_trigger");
    AK_print_table("AK_trigger_conditions");

    printf("\n-----DROP FUNCTION-----\n");
    AK_print_table("AK_function");
    AK_print_table("AK_function_arguments");
    drop_arguments->value = "test_funkcija";
    drop_arguments->next->value = "date";
    drop_arguments->next->next->value = "number";
    drop_arguments->next->next->next->value = "int";
    drop_arguments->next->next->next->next = NULL;
    results[8] = AK_drop(DROP_FUNCTION, drop_arguments);
    AK_print_table("AK_function");
    AK_print_table("AK_function_arguments");

    printf("\n-----DROP USER-----\n");
    drop_arguments->value = "kritakac";
    drop_arguments->next->value = "CASCADE";
    AK_print_table("AK_user");
    AK_print_table("AK_user_group");
    AK_print_table("AK_user_right");
    results[9] = AK_drop(DROP_USER, drop_arguments);
    AK_print_table("AK_user");
    AK_print_table("AK_user_group");
    AK_print_table("AK_user_right");

    // to avoid problems with transfering the previous value for the drop group
    drop_arguments->next->value = "asdfghj"; // so that cascade doesn't stay

    printf("\n-----DROP GROUP-----\n");
    drop_arguments->value = "grupa1";

    AK_print_table("AK_group");
    AK_print_table("AK_user_group");
    AK_print_table("AK_group_right");
    results[10] = AK_drop(DROP_GROUP, drop_arguments);
    AK_print_table("AK_group");
    AK_print_table("AK_user_group");
    AK_print_table("AK_group_right");

    printf("\n-----DROP CONSTRAINT-----\n");
    
    printf("\n-----UNIQUE-----\n");
    char* tableName_1 = "student";
    char* attName_1 = "year";
    char* constraintName_1 = "yearUnique";
    Ak_set_constraint_unique(tableName_1, attName_1, constraintName_1);
    AK_print_table("AK_constraints_unique");
    
    drop_arguments->value = tableName_1;
    drop_arguments->next->value = attName_1;
    drop_arguments->next->next->value = constraintName_1;
    
    results[11] = AK_drop(DROP_CONSTRAINT, drop_arguments);
    AK_print_table("AK_constraints_unique");
    
    
    printf("\n-----NOT NULL-----\n");
    char* tableName_2 = "student";
    char* attName_2 = "firstname";
    char* constraintName_2 = "firstnameNotNull";
    AK_set_constraint_not_null(tableName_2, attName_2, constraintName_2);
    AK_print_table("AK_constraints_not_null");
    
    drop_arguments->value = tableName_2;
    drop_arguments->next->value = attName_2;
    drop_arguments->next->next->value = constraintName_2;
    
    results[12] = AK_drop(DROP_CONSTRAINT, drop_arguments);
    AK_print_table("AK_constraints_not_null");
    
    
    printf("\n-----BETWEEN-----\n");
    char* tableName_3 = "department";
    char* attName_3 = "manager";
    char* constraintName_3 = "manager_between";
    char* newValue_3 = "Kero";
    char* startValue_3 = "Hutinski";    
    char* endValue_3 = "Redep";
    AK_set_constraint_between(tableName_3, constraintName_3, attName_3, startValue_3, endValue_3);
    AK_print_constraints(tableName_3);
    
    drop_arguments->value = tableName_3;
    drop_arguments->next->value = attName_3;
    drop_arguments->next->next->value = constraintName_3;
    drop_arguments->next->next->next->value = newValue_3;
    
    results[13] = AK_drop(DROP_CONSTRAINT, drop_arguments);
    AK_print_constraints(tableName_3);
    

    printf("======================END_DROP_TEST======================\n");
    printf("Test results: \n");
    int x=1;
    for (x; x<14; x++){
        if(results[x]== EXIT_SUCCESS){
            printf("Test %d: EXIT_SUCCESS \n", x);
        }
        else{
            printf("Test %d: EXIT_ERROR \n", x);
        }
    }
    AK_EPI;
    return TEST_result(0,0);
}
예제 #7
0
파일: index.c 프로젝트: embalint/akdb
/**
 * @author Lovro Predovan
 * @brief  Test funtion for index structures(list) and printing table
 * @return No return value
 */
void AK_index_test() {

    AK_PRO;
    int position;
    printf("\n********** INDEX TEST **********\n\n");

    list_ad *add_root;
    add_root = (list_ad *) AK_malloc(sizeof (list_ad));


    Ak_InitializelistAd(add_root);

    Ak_Insert_NewelementAd(1, 1, "Alen", add_root);
    element_ad some_element;

    some_element = Ak_Get_First_elementAd(add_root);
    Ak_Insert_NewelementAd(2, 2, "Markus", some_element);

    element_ad some_elementt = Ak_Get_Last_elementAd(add_root);
    Ak_Insert_NewelementAd(3, 3, "Mirko", some_elementt);

    element_ad some_elementtt = Ak_Get_Last_elementAd(add_root);
    Ak_Insert_NewelementAd(4, 4, "Sandra", some_elementtt);

    element_ad some_elementttt = Ak_Get_Last_elementAd(add_root);
    Ak_Insert_NewelementAd(5, 5, "Tonimir", some_elementttt);


    printf("\n********** Printing all values **********\n\n");
    element_ad ele = Ak_Get_First_elementAd(add_root);
    while (ele != 0)
    {
        printf("Value : %s\n", ele->attName);
        ele = Ak_Get_Next_elementAd(ele);
    }

    printf("\n********** Printing position values **********\n\n");
     element_ad last = Ak_Get_Last_elementAd(add_root);   
     printf("Last element in list: %s \n",last->attName);

     element_ad previous = Ak_Get_Previous_elementAd(last,add_root);
     printf("Previous element from list: %s \n",previous->attName);

     element_ad first = Ak_Get_First_elementAd(add_root);
     printf("First element in list: %s \n",first->attName);

     element_ad next = Ak_Get_Next_elementAd(first);
     printf("Next element in list after '%s' is : %s \n",first->attName,next->attName);

     printf("Position of element '%s' above is : %i \n",next->attName,Ak_Get_Position_Of_elementAd(next, add_root));

    printf("\n********** Deleting values **********\n\n");

    printf("Deleting element: %s \n",previous->attName);
    Ak_Delete_elementAd(previous, add_root) ;
    element_ad elem = Ak_Get_First_elementAd(add_root);

    printf("\n********** Printing values after delete**********\n\n");

        while (elem != 0)
        {
            printf("Value : %s\n", elem->attName);
            elem = Ak_Get_Next_elementAd(elem);
        }

    printf("\n********** Printing values after deleting all values**********\n\n");
    void Ak_Delete_All_elementsAd(add_root) ;
    element_ad eleme = Ak_Get_First_elementAd(add_root);
    while (elem != 0)
        {
            printf("Value : %s\n", eleme->attName);
            eleme = Ak_Get_Next_elementAd(eleme);

        }

    printf("\n********** Index test **********\n\n");
        //CREATING BITMAP INDEXES ON ATTRIBUTE FIRSTNAME AS REFERENCE

    char *tblName = "assistant";
    char *indexTblName = "assistantfirstname_bmapIndex";

    char *notExistingIndexName = "assistantincome_bmapIndex";

    struct list_node *att_root = (struct list_node *) AK_malloc(sizeof (struct list_node));
    Ak_Init_L3(&att_root);
    Ak_Insert_New_Element(TYPE_VARCHAR, "firstname", tblName, "firstname", att_root);
 
    AK_create_Index_Table(tblName, att_root);

    AK_print_table(tblName);
    AK_print_table("AK_index");
    AK_print_index_table(indexTblName);

    printf("\n\nIndex table %s exists: %i\n\n",indexTblName,AK_index_table_exist(indexTblName));
    printf("Number of rows in index %s: %i\n\n",indexTblName,AK_get_index_num_records(indexTblName));
    printf("Number of attributes in index %s: %i\n\n",indexTblName,AK_num_index_attr(indexTblName));
    printf("Index table %s exists: %i\n\n\n",notExistingIndexName,AK_index_table_exist(notExistingIndexName));


    printf("\n********** Index test Passed**********\n\n");


    AK_EPI;
}
예제 #8
0
파일: selection.c 프로젝트: embalint/akdb
//int AK_selection(char *srcTable, char *dstTable, AK_list *expr) {
int AK_selection(char *srcTable, char *dstTable, struct list_node *expr) {
        AK_PRO;
	AK_header *t_header = (AK_header *) AK_get_header(srcTable);
	int num_attr = AK_num_attr(srcTable);

		int startAddress = AK_initialize_new_segment(dstTable, SEGMENT_TYPE_TABLE, t_header);
		if (startAddress == EXIT_ERROR) {
			AK_EPI;
			return EXIT_ERROR;
		}
		Ak_dbg_messg(LOW, REL_OP, "\nTABLE %s CREATED from %s!\n", dstTable, srcTable);
		table_addresses *src_addr = (table_addresses*) AK_get_table_addresses(srcTable);
		
		/*
		AK_list_elem row_root = (AK_list_elem) AK_malloc(sizeof (AK_list));
		Ak_Init_L3(&row_root);
		*/
		
		struct list_node * row_root = (struct list_node *) AK_malloc(sizeof(struct list_node));
		Ak_Init_L3(&row_root);
		
		int i, j, k, l, type, size, address;
		char data[MAX_VARCHAR_LENGTH];

		for (i = 0; src_addr->address_from[i] != 0; i++) {

			for (j = src_addr->address_from[i]; j < src_addr->address_to[i]; j++) {

				AK_mem_block *temp = (AK_mem_block *) AK_get_block(j);
				if (temp->block->last_tuple_dict_id == 0)
					break;
				for (k = 0; k < DATA_BLOCK_SIZE; k += num_attr) {

					if (temp->block->tuple_dict[k].type == FREE_INT)
						break;

					for (l = 0; l < num_attr; l++) {
						type = temp->block->tuple_dict[k + l].type;
						size = temp->block->tuple_dict[k + l].size;
						address = temp->block->tuple_dict[k + l].address;
						memcpy(data, &(temp->block->data[address]), size);
						data[size] = '\0';
						Ak_Insert_New_Element(type, data, dstTable, t_header[l].att_name, row_root);
					}

					if (AK_check_if_row_satisfies_expression(row_root, expr))
						Ak_insert_row(row_root);

					
					Ak_DeleteAll_L3(&row_root);
				}
			}
		}

		AK_free(src_addr);
		AK_free(t_header);
		AK_free(row_root);

		AK_print_table(dstTable);
	

	Ak_dbg_messg(LOW, REL_OP, "SELECTION_TEST_SUCCESS\n\n");
	AK_EPI;
	return EXIT_SUCCESS;
}
예제 #9
0
파일: test.c 프로젝트: mschatten/akdb
/**
 * @author Dino Laktašić
 * @brief Function for creating test tables
 * @return No return value
 */
void AK_create_test_tables() {
    int mbr, year, id_prof, id_department;
    float weight;

    //---------------------------------------> CREATE TABLE 'STUDENT' <---------------------------------------
    //create header
    AK_header t_header[ MAX_ATTRIBUTES ];
    AK_header* temp;
    AK_PRO;
    temp = (AK_header*) AK_create_header("mbr", TYPE_INT, FREE_INT, FREE_CHAR, FREE_CHAR);
    memcpy(t_header, temp, sizeof ( AK_header));
	AK_free(temp);
    temp = (AK_header*) AK_create_header("firstname", TYPE_VARCHAR, FREE_INT, FREE_CHAR, FREE_CHAR);
    memcpy(t_header + 1, temp, sizeof ( AK_header));
	AK_free(temp);
    temp = (AK_header*) AK_create_header("lastname", TYPE_VARCHAR, FREE_INT, FREE_CHAR, FREE_CHAR);
    memcpy(t_header + 2, temp, sizeof ( AK_header));
	AK_free(temp);
    temp = (AK_header*) AK_create_header("year", TYPE_INT, FREE_INT, FREE_CHAR, FREE_CHAR);
    memcpy(t_header + 3, temp, sizeof ( AK_header));
	AK_free(temp);
    temp = (AK_header*) AK_create_header("weight", TYPE_FLOAT, FREE_INT, FREE_CHAR, FREE_CHAR);
    memcpy(t_header + 4, temp, sizeof ( AK_header));
	AK_free(temp);
    memset(t_header + 5, 0, MAX_ATTRIBUTES - 5);

    //create table
    char *tblName = "student";
    int startAddress = AK_initialize_new_segment(tblName, SEGMENT_TYPE_TABLE, t_header);

    if (startAddress != EXIT_ERROR)
        printf("\nTABLE %s CREATED!\n", tblName);

    struct list_node *row_root = (struct list_node *) AK_malloc(sizeof (struct list_node));
    Ak_Init_L3(&row_root);

    mbr = 35890;
    year = 1999;
    weight = 80.00;

    //insert rows in table student
    mbr++;
    year++;
    weight += 0.75;
    Ak_DeleteAll_L3(&row_root);
    Ak_Insert_New_Element(TYPE_INT, &mbr, tblName, "mbr", row_root);
    Ak_Insert_New_Element(TYPE_VARCHAR, "Dino", tblName, "firstname", row_root);
    Ak_Insert_New_Element(TYPE_VARCHAR, "Laktasic", tblName, "lastname", row_root);
    Ak_Insert_New_Element(TYPE_INT, &year, tblName, "year", row_root);
    Ak_Insert_New_Element(TYPE_FLOAT, &weight, tblName, "weight", row_root);
    Ak_insert_row(row_root);

    mbr++;
    year++;
    weight += 0.75;
    Ak_DeleteAll_L3(&row_root);
    Ak_Insert_New_Element(TYPE_INT, &mbr, tblName, "mbr", row_root);
    Ak_Insert_New_Element(TYPE_VARCHAR, "Netko", tblName, "firstname", row_root);
    Ak_Insert_New_Element(TYPE_VARCHAR, "Netkic", tblName, "lastname", row_root);
    Ak_Insert_New_Element(TYPE_INT, &year, tblName, "year", row_root);
    Ak_Insert_New_Element(TYPE_FLOAT, &weight, tblName, "weight", row_root);
    Ak_insert_row(row_root);

    mbr++;
    year++;
    weight += 0.75;
    Ak_DeleteAll_L3(&row_root);
    Ak_Insert_New_Element(TYPE_INT, &mbr, tblName, "mbr", row_root);
    Ak_Insert_New_Element(TYPE_VARCHAR, "Mislav", tblName, "firstname", row_root);
    Ak_Insert_New_Element(TYPE_VARCHAR, "Cakaric", tblName, "lastname", row_root);
    Ak_Insert_New_Element(TYPE_INT, &year, tblName, "year", row_root);
    Ak_Insert_New_Element(TYPE_FLOAT, &weight, tblName, "weight", row_root);
    Ak_insert_row(row_root);

    mbr++;
    year++;
    weight += 0.75;
    Ak_DeleteAll_L3(&row_root);
    Ak_Insert_New_Element(TYPE_INT, &mbr, tblName, "mbr", row_root);
    Ak_Insert_New_Element(TYPE_VARCHAR, "Ivan", tblName, "firstname", row_root);
    Ak_Insert_New_Element(TYPE_VARCHAR, "Horvat", tblName, "lastname", row_root);
    Ak_Insert_New_Element(TYPE_INT, &year, tblName, "year", row_root);
    Ak_Insert_New_Element(TYPE_FLOAT, &weight, tblName, "weight", row_root);
    Ak_insert_row(row_root);

    mbr++;
    year++;
    weight += 0.75;
    Ak_DeleteAll_L3(&row_root);
    Ak_Insert_New_Element(TYPE_INT, &mbr, tblName, "mbr", row_root);
    Ak_Insert_New_Element(TYPE_VARCHAR, "Ivo", tblName, "firstname", row_root);
    Ak_Insert_New_Element(TYPE_VARCHAR, "Ivic", tblName, "lastname", row_root);
    Ak_Insert_New_Element(TYPE_INT, &year, tblName, "year", row_root);
    Ak_Insert_New_Element(TYPE_FLOAT, &weight, tblName, "weight", row_root);
    Ak_insert_row(row_root);

    mbr++;
    year++;
    weight += 0.75;
    Ak_DeleteAll_L3(&row_root);
    Ak_Insert_New_Element(TYPE_INT, &mbr, tblName, "mbr", row_root);
    Ak_Insert_New_Element(TYPE_VARCHAR, "Marko", tblName, "firstname", row_root);
    Ak_Insert_New_Element(TYPE_VARCHAR, "Markovic", tblName, "lastname", row_root);
    Ak_Insert_New_Element(TYPE_INT, &year, tblName, "year", row_root);
    Ak_Insert_New_Element(TYPE_FLOAT, &weight, tblName, "weight", row_root);
    Ak_insert_row(row_root);

    mbr++;
    year++;
    weight += 0.75;
    Ak_DeleteAll_L3(&row_root);
    Ak_Insert_New_Element(TYPE_INT, &mbr, tblName, "mbr", row_root);
    Ak_Insert_New_Element(TYPE_VARCHAR, "Ivan", tblName, "firstname", row_root);
    Ak_Insert_New_Element(TYPE_VARCHAR, "Ivanovic", tblName, "lastname", row_root);
    Ak_Insert_New_Element(TYPE_INT, &year, tblName, "year", row_root);
    Ak_Insert_New_Element(TYPE_FLOAT, &weight, tblName, "weight", row_root);
    Ak_insert_row(row_root);

    mbr++;
    year++;
    weight += 0.75;
    Ak_DeleteAll_L3(&row_root);
    Ak_Insert_New_Element(TYPE_INT, &mbr, tblName, "mbr", row_root);
    Ak_Insert_New_Element(TYPE_VARCHAR, "Josip", tblName, "firstname", row_root);
    Ak_Insert_New_Element(TYPE_VARCHAR, "Josipovic", tblName, "lastname", row_root);
    Ak_Insert_New_Element(TYPE_INT, &year, tblName, "year", row_root);
    Ak_Insert_New_Element(TYPE_FLOAT, &weight, tblName, "weight", row_root);
    Ak_insert_row(row_root);

    mbr++;
    year++;
    weight += 0.75;
    Ak_DeleteAll_L3(&row_root);
    Ak_Insert_New_Element(TYPE_INT, &mbr, tblName, "mbr", row_root);
    Ak_Insert_New_Element(TYPE_VARCHAR, "Ivan", tblName, "firstname", row_root);
    Ak_Insert_New_Element(TYPE_VARCHAR, "Ankovic", tblName, "lastname", row_root);
    Ak_Insert_New_Element(TYPE_INT, &year, tblName, "year", row_root);
    Ak_Insert_New_Element(TYPE_FLOAT, &weight, tblName, "weight", row_root);
    Ak_insert_row(row_root);

    mbr++;
    year++;
    weight += 0.75;
    Ak_DeleteAll_L3(&row_root);
    Ak_Insert_New_Element(TYPE_INT, &mbr, tblName, "mbr", row_root);
    Ak_Insert_New_Element(TYPE_VARCHAR, "Marina", tblName, "firstname", row_root);
    Ak_Insert_New_Element(TYPE_VARCHAR, "Marovic", tblName, "lastname", row_root);
    Ak_Insert_New_Element(TYPE_INT, &year, tblName, "year", row_root);
    Ak_Insert_New_Element(TYPE_FLOAT, &weight, tblName, "weight", row_root);
    Ak_insert_row(row_root);

    mbr++;
    year++;
    weight += 0.75;
    Ak_DeleteAll_L3(&row_root);
    Ak_Insert_New_Element(TYPE_INT, &mbr, tblName, "mbr", row_root);
    Ak_Insert_New_Element(TYPE_VARCHAR, "Mario", tblName, "firstname", row_root);
    Ak_Insert_New_Element(TYPE_VARCHAR, "Maric", tblName, "lastname", row_root);
    Ak_Insert_New_Element(TYPE_INT, &year, tblName, "year", row_root);
    Ak_Insert_New_Element(TYPE_FLOAT, &weight, tblName, "weight", row_root);
    Ak_insert_row(row_root);

    mbr++;
    year++;
    weight += 0.75;
    Ak_DeleteAll_L3(&row_root);
    Ak_Insert_New_Element(TYPE_INT, &mbr, tblName, "mbr", row_root);
    Ak_Insert_New_Element(TYPE_VARCHAR, "Matija", tblName, "firstname", row_root);
    Ak_Insert_New_Element(TYPE_VARCHAR, "Matkovic", tblName, "lastname", row_root);
    Ak_Insert_New_Element(TYPE_INT, &year, tblName, "year", row_root);
    Ak_Insert_New_Element(TYPE_FLOAT, &weight, tblName, "weight", row_root);
    Ak_insert_row(row_root);

    mbr++;
    year++;
    weight += 0.75;
    Ak_DeleteAll_L3(&row_root);
    Ak_Insert_New_Element(TYPE_INT, &mbr, tblName, "mbr", row_root);
    Ak_Insert_New_Element(TYPE_VARCHAR, "Ivana", tblName, "firstname", row_root);
    Ak_Insert_New_Element(TYPE_VARCHAR, "Ivic", tblName, "lastname", row_root);
    Ak_Insert_New_Element(TYPE_INT, &year, tblName, "year", row_root);
    Ak_Insert_New_Element(TYPE_FLOAT, &weight, tblName, "weight", row_root);
    Ak_insert_row(row_root);

    mbr++;
    year++;
    weight += 0.75;
    Ak_DeleteAll_L3(&row_root);
    Ak_Insert_New_Element(TYPE_INT, &mbr, tblName, "mbr", row_root);
    Ak_Insert_New_Element(TYPE_VARCHAR, "John", tblName, "firstname", row_root);
    Ak_Insert_New_Element(TYPE_VARCHAR, "Smith", tblName, "lastname", row_root);
    Ak_Insert_New_Element(TYPE_INT, &year, tblName, "year", row_root);
    Ak_Insert_New_Element(TYPE_FLOAT, &weight, tblName, "weight", row_root);
    Ak_insert_row(row_root);

    mbr++;
    year++;
    weight += 0.75;
    Ak_DeleteAll_L3(&row_root);
    Ak_Insert_New_Element(TYPE_INT, &mbr, tblName, "mbr", row_root);
    Ak_Insert_New_Element(TYPE_VARCHAR, "William", tblName, "firstname", row_root);
    Ak_Insert_New_Element(TYPE_VARCHAR, "Brown", tblName, "lastname", row_root);
    Ak_Insert_New_Element(TYPE_INT, &year, tblName, "year", row_root);
    Ak_Insert_New_Element(TYPE_FLOAT, &weight, tblName, "weight", row_root);
    Ak_insert_row(row_root);

    mbr++;
    year++;
    weight += 0.75;
    Ak_DeleteAll_L3(&row_root);
    Ak_Insert_New_Element(TYPE_INT, &mbr, tblName, "mbr", row_root);
    Ak_Insert_New_Element(TYPE_VARCHAR, "David", tblName, "firstname", row_root);
    Ak_Insert_New_Element(TYPE_VARCHAR, "Jones", tblName, "lastname", row_root);
    Ak_Insert_New_Element(TYPE_INT, &year, tblName, "year", row_root);
    Ak_Insert_New_Element(TYPE_FLOAT, &weight, tblName, "weight", row_root);
    Ak_insert_row(row_root);

    mbr++;
    year++;
    weight += 0.75;
    Ak_DeleteAll_L3(&row_root);
    Ak_Insert_New_Element(TYPE_INT, &mbr, tblName, "mbr", row_root);
    Ak_Insert_New_Element(TYPE_VARCHAR, "Robert", tblName, "firstname", row_root);
    Ak_Insert_New_Element(TYPE_VARCHAR, "White", tblName, "lastname", row_root);
    Ak_Insert_New_Element(TYPE_INT, &year, tblName, "year", row_root);
    Ak_Insert_New_Element(TYPE_FLOAT, &weight, tblName, "weight", row_root);
    Ak_insert_row(row_root);

    mbr++;
    year++;
    weight += 0.75;
    Ak_DeleteAll_L3(&row_root);
    Ak_Insert_New_Element(TYPE_INT, &mbr, tblName, "mbr", row_root);
    Ak_Insert_New_Element(TYPE_VARCHAR, "James", tblName, "firstname", row_root);
    Ak_Insert_New_Element(TYPE_VARCHAR, "Jones", tblName, "lastname", row_root);
    Ak_Insert_New_Element(TYPE_INT, &year, tblName, "year", row_root);
    Ak_Insert_New_Element(TYPE_FLOAT, &weight, tblName, "weight", row_root);
    Ak_insert_row(row_root);

    mbr++;
    year++;
    weight += 0.75;
    Ak_DeleteAll_L3(&row_root);
    Ak_Insert_New_Element(TYPE_INT, &mbr, tblName, "mbr", row_root);
    Ak_Insert_New_Element(TYPE_VARCHAR, "Jack", tblName, "firstname", row_root);
    Ak_Insert_New_Element(TYPE_VARCHAR, "Moore", tblName, "lastname", row_root);
    Ak_Insert_New_Element(TYPE_INT, &year, tblName, "year", row_root);
    Ak_Insert_New_Element(TYPE_FLOAT, &weight, tblName, "weight", row_root);
    Ak_insert_row(row_root);

    mbr++;
    year++;
    weight += 0.75;
    Ak_DeleteAll_L3(&row_root);
    Ak_Insert_New_Element(TYPE_INT, &mbr, tblName, "mbr", row_root);
    Ak_Insert_New_Element(TYPE_VARCHAR, "Joseph", tblName, "firstname", row_root);
    Ak_Insert_New_Element(TYPE_VARCHAR, "Harris", tblName, "lastname", row_root);
    Ak_Insert_New_Element(TYPE_INT, &year, tblName, "year", row_root);
    Ak_Insert_New_Element(TYPE_FLOAT, &weight, tblName, "weight", row_root);
    Ak_insert_row(row_root);

    mbr++;
    year++;
    weight += 0.75;
    Ak_DeleteAll_L3(&row_root);
    Ak_Insert_New_Element(TYPE_INT, &mbr, tblName, "mbr", row_root);
    Ak_Insert_New_Element(TYPE_VARCHAR, "Richard", tblName, "firstname", row_root);
    Ak_Insert_New_Element(TYPE_VARCHAR, "Thomas", tblName, "lastname", row_root);
    Ak_Insert_New_Element(TYPE_INT, &year, tblName, "year", row_root);
    Ak_Insert_New_Element(TYPE_FLOAT, &weight, tblName, "weight", row_root);
    Ak_insert_row(row_root);

    mbr++;
    year++;
    weight += 0.75;
    Ak_DeleteAll_L3(&row_root);
    Ak_Insert_New_Element(TYPE_INT, &mbr, tblName, "mbr", row_root);
    Ak_Insert_New_Element(TYPE_VARCHAR, "Daniel", tblName, "firstname", row_root);
    Ak_Insert_New_Element(TYPE_VARCHAR, "Jackson", tblName, "lastname", row_root);
    Ak_Insert_New_Element(TYPE_INT, &year, tblName, "year", row_root);
    Ak_Insert_New_Element(TYPE_FLOAT, &weight, tblName, "weight", row_root);
    Ak_insert_row(row_root);

    mbr++;
    year++;
    weight += 0.75;
    Ak_DeleteAll_L3(&row_root);
    Ak_Insert_New_Element(TYPE_INT, &mbr, tblName, "mbr", row_root);
    Ak_Insert_New_Element(TYPE_VARCHAR, "Martin", tblName, "firstname", row_root);
    Ak_Insert_New_Element(TYPE_VARCHAR, "Clark", tblName, "lastname", row_root);
    Ak_Insert_New_Element(TYPE_INT, &year, tblName, "year", row_root);
    Ak_Insert_New_Element(TYPE_FLOAT, &weight, tblName, "weight", row_root);
    Ak_insert_row(row_root);

    mbr++;
    year++;
    weight += 0.75;
    Ak_DeleteAll_L3(&row_root);
    Ak_Insert_New_Element(TYPE_INT, &mbr, tblName, "mbr", row_root);
    Ak_Insert_New_Element(TYPE_VARCHAR, "Joe", tblName, "firstname", row_root);
    Ak_Insert_New_Element(TYPE_VARCHAR, "Davis", tblName, "lastname", row_root);
    Ak_Insert_New_Element(TYPE_INT, &year, tblName, "year", row_root);
    Ak_Insert_New_Element(TYPE_FLOAT, &weight, tblName, "weight", row_root);
    Ak_insert_row(row_root);

    mbr++;
    year++;
    weight += 0.75;
    Ak_DeleteAll_L3(&row_root);
    Ak_Insert_New_Element(TYPE_INT, &mbr, tblName, "mbr", row_root);
    Ak_Insert_New_Element(TYPE_VARCHAR, "Paul", tblName, "firstname", row_root);
    Ak_Insert_New_Element(TYPE_VARCHAR, "Lee", tblName, "lastname", row_root);
    Ak_Insert_New_Element(TYPE_INT, &year, tblName, "year", row_root);
    Ak_Insert_New_Element(TYPE_FLOAT, &weight, tblName, "weight", row_root);
    Ak_insert_row(row_root);

    mbr++;
    year++;
    weight += 0.75;
    Ak_DeleteAll_L3(&row_root);
    Ak_Insert_New_Element(TYPE_INT, &mbr, tblName, "mbr", row_root);
    Ak_Insert_New_Element(TYPE_VARCHAR, "Steve", tblName, "firstname", row_root);
    Ak_Insert_New_Element(TYPE_VARCHAR, "Parker", tblName, "lastname", row_root);
    Ak_Insert_New_Element(TYPE_INT, &year, tblName, "year", row_root);
    Ak_Insert_New_Element(TYPE_FLOAT, &weight, tblName, "weight", row_root);
    Ak_insert_row(row_root);

    AK_print_table(tblName);
	Ak_DeleteAll_L3(&row_root);

    //-------------------------------------------------------------------------------------------------------


    //--------------------------------------> CREATE TABLE 'PROFESSOR' <-------------------------------------
    //create header
    AK_header t_header2[ MAX_ATTRIBUTES ];

    temp = (AK_header*) AK_create_header("id_prof", TYPE_INT, FREE_INT, FREE_CHAR, FREE_CHAR);
    memcpy(t_header2, temp, sizeof ( AK_header));
	AK_free(temp);
    temp = (AK_header*) AK_create_header("firstname", TYPE_VARCHAR, FREE_INT, FREE_CHAR, FREE_CHAR);
    memcpy(t_header2 + 1, temp, sizeof ( AK_header));
	AK_free(temp);
    temp = (AK_header*) AK_create_header("lastname", TYPE_VARCHAR, FREE_INT, FREE_CHAR, FREE_CHAR);
    memcpy(t_header2 + 2, temp, sizeof ( AK_header));
	AK_free(temp);
    temp = (AK_header*) AK_create_header("tel", TYPE_INT, FREE_INT, FREE_CHAR, FREE_CHAR);
    memcpy(t_header2 + 3, temp, sizeof ( AK_header));
	AK_free(temp);
    temp = (AK_header*) AK_create_header("email", TYPE_VARCHAR, FREE_INT, FREE_CHAR, FREE_CHAR);
    memcpy(t_header2 + 4, temp, sizeof ( AK_header));
	AK_free(temp);
    temp = (AK_header*) AK_create_header("web_page", TYPE_VARCHAR, FREE_INT, FREE_CHAR, FREE_CHAR);
    memcpy(t_header2 + 5, temp, sizeof ( AK_header));
	AK_free(temp);
    memset(t_header2 + 6, 0, MAX_ATTRIBUTES - 6);

    //create table
    tblName = "professor";
    startAddress = AK_initialize_new_segment(tblName, SEGMENT_TYPE_TABLE, t_header2);

    if (startAddress != EXIT_ERROR)
        printf("\nTABLE %s CREATED!\n", tblName);

    //row_root = (element) AK_malloc(sizeof (list));
    Ak_Init_L3(&row_root);

    id_prof = 35890;
    id_prof++;
    Ak_DeleteAll_L3(&row_root);
    Ak_Insert_New_Element(TYPE_INT, &id_prof, tblName, "id_prof", row_root);
    Ak_Insert_New_Element(TYPE_VARCHAR, "Miroslav", tblName, "firstname", row_root);
    Ak_Insert_New_Element(TYPE_VARCHAR, "Baca", tblName, "lastname", row_root);
    Ak_Insert_New_Element(TYPE_INT, "042390873", tblName, "tel", row_root);
    Ak_Insert_New_Element(TYPE_VARCHAR, "*****@*****.**", tblName, "email", row_root);
    Ak_Insert_New_Element(TYPE_VARCHAR, "www.foi.hr/nastavnici/baca.miroslav/", tblName, "web_page", row_root);
    Ak_insert_row(row_root);

    id_prof++;
    Ak_DeleteAll_L3(&row_root);
    Ak_Insert_New_Element(TYPE_INT, &id_prof, tblName, "id_prof", row_root);
    Ak_Insert_New_Element(TYPE_VARCHAR, "Igor", tblName, "firstname", row_root);
    Ak_Insert_New_Element(TYPE_VARCHAR, "Balaban", tblName, "lastname", row_root);
    Ak_Insert_New_Element(TYPE_INT, "000000000", tblName, "tel", row_root);
    Ak_Insert_New_Element(TYPE_VARCHAR, "*****@*****.**", tblName, "email", row_root);
    Ak_Insert_New_Element(TYPE_VARCHAR, "www.foi.hr/nastavnici/balaban.igor/", tblName, "web_page", row_root);
    Ak_insert_row(row_root);

    id_prof++;
    Ak_DeleteAll_L3(&row_root);
    Ak_Insert_New_Element(TYPE_INT, &id_prof, tblName, "id_prof", row_root);
    Ak_Insert_New_Element(TYPE_VARCHAR, "Antun", tblName, "firstname", row_root);
    Ak_Insert_New_Element(TYPE_VARCHAR, "Brumnic", tblName, "lastname", row_root);
    Ak_Insert_New_Element(TYPE_INT, "042213777", tblName, "tel", row_root);
    Ak_Insert_New_Element(TYPE_VARCHAR, "*****@*****.**", tblName, "email", row_root);
    Ak_Insert_New_Element(TYPE_VARCHAR, "www.foi.hr/nastavnici/brumnic.antun/", tblName, "web_page", row_root);
    Ak_insert_row(row_root);

    id_prof++;
    Ak_DeleteAll_L3(&row_root);
    Ak_Insert_New_Element(TYPE_INT, &id_prof, tblName, "id_prof", row_root);
    Ak_Insert_New_Element(TYPE_VARCHAR, "Mirko", tblName, "firstname", row_root);
    Ak_Insert_New_Element(TYPE_VARCHAR, "Cubrilo", tblName, "lastname", row_root);
    Ak_Insert_New_Element(TYPE_INT, "042213777", tblName, "tel", row_root);
    Ak_Insert_New_Element(TYPE_VARCHAR, "*****@*****.**", tblName, "email", row_root);
    Ak_Insert_New_Element(TYPE_VARCHAR, "www.foi.hr/nastavnici/cubrilo.mirko/", tblName, "web_page", row_root);
    Ak_insert_row(row_root);

    id_prof++;
    Ak_DeleteAll_L3(&row_root);
    Ak_Insert_New_Element(TYPE_INT, &id_prof, tblName, "id_prof", row_root);
    Ak_Insert_New_Element(TYPE_VARCHAR, "Dragutin", tblName, "firstname", row_root);
    Ak_Insert_New_Element(TYPE_VARCHAR, "Kermek", tblName, "lastname", row_root);
    Ak_Insert_New_Element(TYPE_INT, "042213777", tblName, "tel", row_root);
    Ak_Insert_New_Element(TYPE_VARCHAR, "*****@*****.**", tblName, "email", row_root);
    Ak_Insert_New_Element(TYPE_VARCHAR, "www.foi.hr/nastavnici/kermek.dragutin/", tblName, "web_page", row_root);
    Ak_insert_row(row_root);

    id_prof++;
    Ak_DeleteAll_L3(&row_root);
    Ak_Insert_New_Element(TYPE_INT, &id_prof, tblName, "id_prof", row_root);
    Ak_Insert_New_Element(TYPE_VARCHAR, "Tonimir", tblName, "firstname", row_root);
    Ak_Insert_New_Element(TYPE_VARCHAR, "Kisasondi", tblName, "lastname", row_root);
    Ak_Insert_New_Element(TYPE_INT, "042213777", tblName, "tel", row_root);
    Ak_Insert_New_Element(TYPE_VARCHAR, "*****@*****.**", tblName, "email", row_root);
    Ak_Insert_New_Element(TYPE_VARCHAR, "www.foi.hr/nastavnici/kisasondi.tonimir/", tblName, "web_page", row_root);
    Ak_insert_row(row_root);

    id_prof++;
    Ak_DeleteAll_L3(&row_root);
    Ak_Insert_New_Element(TYPE_INT, &id_prof, tblName, "id_prof", row_root);
    Ak_Insert_New_Element(TYPE_VARCHAR, "Alen", tblName, "firstname", row_root);
    Ak_Insert_New_Element(TYPE_VARCHAR, "Lovrencic", tblName, "lastname", row_root);
    Ak_Insert_New_Element(TYPE_INT, "042390866", tblName, "tel", row_root);
    Ak_Insert_New_Element(TYPE_VARCHAR, "*****@*****.**", tblName, "email", row_root);
    Ak_Insert_New_Element(TYPE_VARCHAR, "www.foi.hr/nastavnici/lovrencic.alen/", tblName, "web_page", row_root);
    Ak_insert_row(row_root);

    id_prof++;
    Ak_DeleteAll_L3(&row_root);
    Ak_Insert_New_Element(TYPE_INT, &id_prof, tblName, "id_prof", row_root);
    Ak_Insert_New_Element(TYPE_VARCHAR, "Markus", tblName, "firstname", row_root);
    Ak_Insert_New_Element(TYPE_VARCHAR, "Schatten", tblName, "lastname", row_root);
    Ak_Insert_New_Element(TYPE_INT, "042390892", tblName, "tel", row_root);
    Ak_Insert_New_Element(TYPE_VARCHAR, "*****@*****.**", tblName, "email", row_root);
    Ak_Insert_New_Element(TYPE_VARCHAR, "www.foi.hr/nastavnici/schatten.markus/", tblName, "web_page", row_root);
    Ak_insert_row(row_root);

    id_prof++;
	Ak_DeleteAll_L3(&row_root);
	Ak_Insert_New_Element(TYPE_INT, &id_prof, tblName, "id_prof", row_root);
	Ak_Insert_New_Element(TYPE_VARCHAR, "Neven", tblName, "firstname", row_root);
	Ak_Insert_New_Element(TYPE_VARCHAR, "Vrcek", tblName, "lastname", row_root);
	Ak_Insert_New_Element(TYPE_INT, "042390892", tblName, "tel", row_root);
	Ak_Insert_New_Element(TYPE_VARCHAR, "*****@*****.**", tblName, "email", row_root);
	Ak_Insert_New_Element(TYPE_VARCHAR, "www.foi.hr/nastavnici/vrcek.neven/", tblName, "web_page", row_root);
	Ak_insert_row(row_root);

    AK_print_table(tblName);
	
    //-------------------------------------------------------------------------------------------------------


	//--------------------------------------> CREATE TABLE 'PROFESSOR2' <-------------------------------------
	//create header
	
	temp = (AK_header*) AK_create_header("id_prof", TYPE_INT, FREE_INT, FREE_CHAR, FREE_CHAR);
	memcpy(t_header2, temp, sizeof ( AK_header));
	AK_free(temp);
	temp = (AK_header*) AK_create_header("firstname", TYPE_VARCHAR, FREE_INT, FREE_CHAR, FREE_CHAR);
	memcpy(t_header2 + 1, temp, sizeof ( AK_header));
	AK_free(temp);
	temp = (AK_header*) AK_create_header("lastname", TYPE_VARCHAR, FREE_INT, FREE_CHAR, FREE_CHAR);
	memcpy(t_header2 + 2, temp, sizeof ( AK_header));
	AK_free(temp);
	temp = (AK_header*) AK_create_header("tel", TYPE_INT, FREE_INT, FREE_CHAR, FREE_CHAR);
	memcpy(t_header2 + 3, temp, sizeof ( AK_header));
	AK_free(temp);
	memset(t_header2 + 4, 0, MAX_ATTRIBUTES - 4);

	//create table
	tblName = "professor2";
	startAddress = AK_initialize_new_segment(tblName, SEGMENT_TYPE_TABLE, t_header2);

	if (startAddress != EXIT_ERROR)
		printf("\nTABLE %s CREATED!\n", tblName);

	//row_root = (element) AK_malloc(sizeof (list));
	
	Ak_DeleteAll_L3(&row_root);
	Ak_Init_L3(&row_root);

	id_prof = 35890;
	id_prof++;
	//Ak_DeleteAll_L3(&row_root);
	Ak_Insert_New_Element(TYPE_INT, &id_prof, tblName, "id_prof", row_root);
	Ak_Insert_New_Element(TYPE_VARCHAR, "Miroslav", tblName, "firstname", row_root);
	Ak_Insert_New_Element(TYPE_VARCHAR, "Baca", tblName, "lastname", row_root);
	Ak_Insert_New_Element(TYPE_INT, "042390873", tblName, "tel", row_root);
	Ak_insert_row(row_root);

	id_prof++;
	Ak_DeleteAll_L3(&row_root);
	Ak_Insert_New_Element(TYPE_INT, &id_prof, tblName, "id_prof", row_root);
	Ak_Insert_New_Element(TYPE_VARCHAR, "Igor", tblName, "firstname", row_root);
	Ak_Insert_New_Element(TYPE_VARCHAR, "Balaban", tblName, "lastname", row_root);
	Ak_Insert_New_Element(TYPE_INT, "000000000", tblName, "tel", row_root);
	Ak_insert_row(row_root);

	id_prof++;
	Ak_DeleteAll_L3(&row_root);
	Ak_Insert_New_Element(TYPE_INT, &id_prof, tblName, "id_prof", row_root);
	Ak_Insert_New_Element(TYPE_VARCHAR, "Antun", tblName, "firstname", row_root);
	Ak_Insert_New_Element(TYPE_VARCHAR, "Brumnic", tblName, "lastname", row_root);
	Ak_Insert_New_Element(TYPE_INT, "042213777", tblName, "tel", row_root);
	Ak_insert_row(row_root);

	id_prof++;
	Ak_DeleteAll_L3(&row_root);
	Ak_Insert_New_Element(TYPE_INT, &id_prof, tblName, "id_prof", row_root);
	Ak_Insert_New_Element(TYPE_VARCHAR, "Mirko", tblName, "firstname", row_root);
	Ak_Insert_New_Element(TYPE_VARCHAR, "Cubrilo", tblName, "lastname", row_root);
	Ak_Insert_New_Element(TYPE_INT, "042213777", tblName, "tel", row_root);
	Ak_insert_row(row_root);

	id_prof++;
	Ak_DeleteAll_L3(&row_root);
	Ak_Insert_New_Element(TYPE_INT, &id_prof, tblName, "id_prof", row_root);
	Ak_Insert_New_Element(TYPE_VARCHAR, "Dragutin", tblName, "firstname", row_root);
	Ak_Insert_New_Element(TYPE_VARCHAR, "Kermek", tblName, "lastname", row_root);
	Ak_Insert_New_Element(TYPE_INT, "042213777", tblName, "tel", row_root);
	Ak_insert_row(row_root);

	id_prof++;
	Ak_DeleteAll_L3(&row_root);
	Ak_Insert_New_Element(TYPE_INT, &id_prof, tblName, "id_prof", row_root);
	Ak_Insert_New_Element(TYPE_VARCHAR, "Tonimir", tblName, "firstname", row_root);
	Ak_Insert_New_Element(TYPE_VARCHAR, "Kisasondi", tblName, "lastname", row_root);
	Ak_Insert_New_Element(TYPE_INT, "042213777", tblName, "tel", row_root);
	Ak_insert_row(row_root);

	id_prof++;
	Ak_DeleteAll_L3(&row_root);
	Ak_Insert_New_Element(TYPE_INT, &id_prof, tblName, "id_prof", row_root);
	Ak_Insert_New_Element(TYPE_VARCHAR, "Alen", tblName, "firstname", row_root);
	Ak_Insert_New_Element(TYPE_VARCHAR, "Lovrencic", tblName, "lastname", row_root);
	Ak_Insert_New_Element(TYPE_INT, "042390866", tblName, "tel", row_root);
	Ak_insert_row(row_root);

	id_prof++;
	Ak_DeleteAll_L3(&row_root);
	Ak_Insert_New_Element(TYPE_INT, &id_prof, tblName, "id_prof", row_root);
	Ak_Insert_New_Element(TYPE_VARCHAR, "Markus", tblName, "firstname", row_root);
	Ak_Insert_New_Element(TYPE_VARCHAR, "Schatten", tblName, "lastname", row_root);
	Ak_Insert_New_Element(TYPE_INT, "042390892", tblName, "tel", row_root);
	Ak_insert_row(row_root);

	id_prof++;
	Ak_DeleteAll_L3(&row_root);
	Ak_Insert_New_Element(TYPE_INT, &id_prof, tblName, "id_prof", row_root);
	Ak_Insert_New_Element(TYPE_VARCHAR, "Neven", tblName, "firstname", row_root);
	Ak_Insert_New_Element(TYPE_VARCHAR, "Vrcek", tblName, "lastname", row_root);
	Ak_Insert_New_Element(TYPE_INT, "042390892", tblName, "tel", row_root);
	Ak_insert_row(row_root);

	AK_print_table(tblName);
	Ak_DeleteAll_L3(&row_root);
    //-------------------------------------------------------------------------------------------------------


    //--------------------------------------> CREATE TABLE 'ASSISTANT' <-------------------------------------
    //create table, same header as professor for intersect test
    AK_header t_header3[ MAX_ATTRIBUTES ];

    temp = (AK_header*) AK_create_header("id_prof", TYPE_INT, FREE_INT, FREE_CHAR, FREE_CHAR);
    memcpy(t_header3, temp, sizeof ( AK_header));
	AK_free(temp);
    temp = (AK_header*) AK_create_header("firstname", TYPE_VARCHAR, FREE_INT, FREE_CHAR, FREE_CHAR);
    memcpy(t_header3 + 1, temp, sizeof ( AK_header));
	AK_free(temp);
    temp = (AK_header*) AK_create_header("lastname", TYPE_VARCHAR, FREE_INT, FREE_CHAR, FREE_CHAR);
    memcpy(t_header3 + 2, temp, sizeof ( AK_header));
	AK_free(temp);
    temp = (AK_header*) AK_create_header("tel", TYPE_INT, FREE_INT, FREE_CHAR, FREE_CHAR);
    memcpy(t_header3 + 3, temp, sizeof ( AK_header));
	AK_free(temp);
    temp = (AK_header*) AK_create_header("email", TYPE_VARCHAR, FREE_INT, FREE_CHAR, FREE_CHAR);
    memcpy(t_header3 + 4, temp, sizeof ( AK_header));
	AK_free(temp);
    temp = (AK_header*) AK_create_header("web_page", TYPE_VARCHAR, FREE_INT, FREE_CHAR, FREE_CHAR);
    memcpy(t_header3 + 5, temp, sizeof ( AK_header));
	AK_free(temp);
    memset(t_header3 + 6, 0, MAX_ATTRIBUTES - 6);

    tblName = "assistant";
    startAddress = AK_initialize_new_segment(tblName, SEGMENT_TYPE_TABLE, t_header3);

    if (startAddress != EXIT_ERROR)
        printf("\nTABLE %s CREATED!\n", tblName);

	
    //row_root = (element) AK_malloc(sizeof (list));
    Ak_Init_L3(&row_root);

    id_prof = 35892;
    Ak_DeleteAll_L3(&row_root);
    Ak_Insert_New_Element(TYPE_INT, &id_prof, tblName, "id_prof", row_root);
    Ak_Insert_New_Element(TYPE_VARCHAR, "Igor", tblName, "firstname", row_root);
    Ak_Insert_New_Element(TYPE_VARCHAR, "Balaban", tblName, "lastname", row_root);
    Ak_Insert_New_Element(TYPE_INT, "000000000", tblName, "tel", row_root);
    Ak_Insert_New_Element(TYPE_VARCHAR, "*****@*****.**", tblName, "email", row_root);
    Ak_Insert_New_Element(TYPE_VARCHAR, "www.foi.hr/nastavnici/balaban.igor/", tblName, "web_page", row_root);
    Ak_insert_row(row_root);

    id_prof = 35896;
    Ak_DeleteAll_L3(&row_root);
    Ak_Insert_New_Element(TYPE_INT, &id_prof, tblName, "id_prof", row_root);
    Ak_Insert_New_Element(TYPE_VARCHAR, "Tonimir", tblName, "firstname", row_root);
    Ak_Insert_New_Element(TYPE_VARCHAR, "Kisasondi", tblName, "lastname", row_root);
    Ak_Insert_New_Element(TYPE_INT, "042213777", tblName, "tel", row_root);
    Ak_Insert_New_Element(TYPE_VARCHAR, "*****@*****.**", tblName, "email", row_root);
    Ak_Insert_New_Element(TYPE_VARCHAR, "www.foi.hr/nastavnici/kisasondi.tonimir/", tblName, "web_page", row_root);
    Ak_insert_row(row_root);

    id_prof = 35898;
    Ak_DeleteAll_L3(&row_root);
    Ak_Insert_New_Element(TYPE_INT, &id_prof, tblName, "id_prof", row_root);
    Ak_Insert_New_Element(TYPE_VARCHAR, "Markus", tblName, "firstname", row_root);
    Ak_Insert_New_Element(TYPE_VARCHAR, "Schatten", tblName, "lastname", row_root);
    Ak_Insert_New_Element(TYPE_INT, "042390892", tblName, "tel", row_root);
    Ak_Insert_New_Element(TYPE_VARCHAR, "*****@*****.**", tblName, "email", row_root);
    Ak_Insert_New_Element(TYPE_VARCHAR, "www.foi.hr/nastavnici/schatten.markus/", tblName, "web_page", row_root);
    Ak_insert_row(row_root);
	
	id_prof = 35899;
    Ak_DeleteAll_L3(&row_root);
    Ak_Insert_New_Element(TYPE_INT, &id_prof, tblName, "id_prof", row_root);
    Ak_Insert_New_Element(TYPE_VARCHAR, "Miran", tblName, "firstname", row_root);
    Ak_Insert_New_Element(TYPE_VARCHAR, "Zlatović", tblName, "lastname", row_root);
    Ak_Insert_New_Element(TYPE_INT, "042390858", tblName, "tel", row_root);
    Ak_Insert_New_Element(TYPE_VARCHAR, "*****@*****.**", tblName, "email", row_root);
    Ak_Insert_New_Element(TYPE_VARCHAR, "www.foi.hr/nastavnici/zlatovic.miran/index.html", tblName, "web_page", row_root);
    Ak_insert_row(row_root);

    AK_print_table(tblName);
    //-------------------------------------------------------------------------------------------------------


    //--------------------------------------> CREATE TABLE 'EMPLOYEE' <--------------------------------------
    //create header
    AK_header t_header4[ MAX_ATTRIBUTES ];

    temp = (AK_header*) AK_create_header("id_prof", TYPE_INT, FREE_INT, FREE_CHAR, FREE_CHAR);
    memcpy(t_header4, temp, sizeof ( AK_header));
	AK_free(temp);
    temp = (AK_header*) AK_create_header("id_department", TYPE_INT, FREE_INT, FREE_CHAR, FREE_CHAR);
    memcpy(t_header4 + 1, temp, sizeof ( AK_header));
	AK_free(temp);
    memset(t_header4 + 2, 0, MAX_ATTRIBUTES - 2);

    //create table
    tblName = "employee";
    startAddress = AK_initialize_new_segment(tblName, SEGMENT_TYPE_TABLE, t_header4);

    if (startAddress != EXIT_ERROR)
        printf("\nTABLE %s CREATED!\n", tblName);

    //row_root = (element) AK_malloc(sizeof (list));
	Ak_DeleteAll_L3(&row_root);
    Ak_Init_L3(&row_root);

    id_prof = 35890;
    id_department = 1;
    id_prof++;
    Ak_DeleteAll_L3(&row_root);
    Ak_Insert_New_Element(TYPE_INT, &id_prof, tblName, "id_prof", row_root);
    Ak_Insert_New_Element(TYPE_INT, &id_department, tblName, "id_department", row_root);
    Ak_insert_row(row_root);

    id_prof++;
    id_department++;
    Ak_DeleteAll_L3(&row_root);
    Ak_Insert_New_Element(TYPE_INT, &id_prof, tblName, "id_prof", row_root);
    Ak_Insert_New_Element(TYPE_INT, &id_department, tblName, "id_department", row_root);
    Ak_insert_row(row_root);

    id_prof++;
    id_department++;
    Ak_DeleteAll_L3(&row_root);
    Ak_Insert_New_Element(TYPE_INT, &id_prof, tblName, "id_prof", row_root);
    Ak_Insert_New_Element(TYPE_INT, &id_department, tblName, "id_department", row_root);
    Ak_insert_row(row_root);

    id_prof++;
    id_department++;
    Ak_DeleteAll_L3(&row_root);
    Ak_Insert_New_Element(TYPE_INT, &id_prof, tblName, "id_prof", row_root);
    Ak_Insert_New_Element(TYPE_INT, &id_department, tblName, "id_department", row_root);
    Ak_insert_row(row_root);

    id_prof++;
    id_department++;
    Ak_DeleteAll_L3(&row_root);
    Ak_Insert_New_Element(TYPE_INT, &id_prof, tblName, "id_prof", row_root);
    Ak_Insert_New_Element(TYPE_INT, &id_department, tblName, "id_department", row_root);
    Ak_insert_row(row_root);

    id_prof++;
    id_department++;
    Ak_DeleteAll_L3(&row_root);
    Ak_Insert_New_Element(TYPE_INT, &id_prof, tblName, "id_prof", row_root);
    Ak_Insert_New_Element(TYPE_INT, &id_department, tblName, "id_department", row_root);
    Ak_insert_row(row_root);

    id_prof++;
    id_department++;
    Ak_DeleteAll_L3(&row_root);
    Ak_Insert_New_Element(TYPE_INT, &id_prof, tblName, "id_prof", row_root);
    Ak_Insert_New_Element(TYPE_INT, &id_department, tblName, "id_department", row_root);
    Ak_insert_row(row_root);

    //don't need id_prof++ here
    id_prof++;
    //id_department++;
    Ak_DeleteAll_L3(&row_root);
    Ak_Insert_New_Element(TYPE_INT, &id_prof, tblName, "id_prof", row_root);
    Ak_Insert_New_Element(TYPE_INT, &id_department, tblName, "id_department", row_root);
    Ak_insert_row(row_root);

    AK_print_table(tblName);
	
    //-------------------------------------------------------------------------------------------------------


    //-------------------------------------> CREATE TABLE 'DEPARTMENT' <-------------------------------------
    //create header
    AK_header t_header5[ MAX_ATTRIBUTES ];

    temp = (AK_header*) AK_create_header("id_department", TYPE_INT, FREE_INT, FREE_CHAR, FREE_CHAR);
    memcpy(t_header5, temp, sizeof ( AK_header));
	AK_free(temp);
    temp = (AK_header*) AK_create_header("dep_name", TYPE_VARCHAR, FREE_INT, FREE_CHAR, FREE_CHAR);
    memcpy(t_header5 + 1, temp, sizeof ( AK_header));
	AK_free(temp);
    temp = (AK_header*) AK_create_header("manager", TYPE_VARCHAR, FREE_INT, FREE_CHAR, FREE_CHAR);
    memcpy(t_header5 + 2, temp, sizeof ( AK_header));
	AK_free(temp);
    memset(t_header5 + 3, 0, MAX_ATTRIBUTES - 3);

    //create table
    tblName = "department";
    startAddress = AK_initialize_new_segment(tblName, SEGMENT_TYPE_TABLE, t_header5);

    if (startAddress != EXIT_ERROR)
        printf("\nTABLE %s CREATED!\n", tblName);

	/* not needed - row_root is still allocated 
		AK_free(row_root);
    	row_root = (struct list_node *) AK_malloc(sizeof (struct list_node));
	*/
	Ak_DeleteAll_L3(&row_root);
    Ak_Init_L3(&row_root);

    id_department = 1;
    Ak_DeleteAll_L3(&row_root);
    Ak_Insert_New_Element(TYPE_INT, &id_department, tblName, "id_department", row_root);
    Ak_Insert_New_Element(TYPE_VARCHAR, "Department of Economics", tblName, "dep_name", row_root);
    Ak_Insert_New_Element(TYPE_VARCHAR, "Redep", tblName, "manager", row_root);
    Ak_insert_row(row_root);

    //id_department++;
    Ak_DeleteAll_L3(&row_root);
    Ak_Insert_New_Element(TYPE_INT, &id_department, tblName, "id_department", row_root);
    Ak_Insert_New_Element(TYPE_VARCHAR, "Department of Organization", tblName, "dep_name", row_root);
    Ak_Insert_New_Element(TYPE_VARCHAR, "Zugaj", tblName, "manager", row_root);
    Ak_insert_row(row_root);

    id_department++;
    Ak_DeleteAll_L3(&row_root);
    Ak_Insert_New_Element(TYPE_INT, &id_department, tblName, "id_department", row_root);
    Ak_Insert_New_Element(TYPE_VARCHAR, "Department of Quantitative Methods", tblName, "dep_name", row_root);
    Ak_Insert_New_Element(TYPE_VARCHAR, "Kero", tblName, "manager", row_root);
    Ak_insert_row(row_root);

    /* too long
    id_department++;
    DeleteAllElements(row_root);
    InsertNewElement(TYPE_INT, &id_department, tblName, "id_department", row_root);
    InsertNewElement(TYPE_VARCHAR, "Department of theoretical and applied foundations of Information Science", tblName, "dep_name", row_root);
    InsertNewElement(TYPE_VARCHAR, "", tblName, "manager", row_root);
    insert_row(row_root);*/

    //id_department++;
    Ak_DeleteAll_L3(&row_root);
    Ak_Insert_New_Element(TYPE_INT, &id_department, tblName, "id_department", row_root);
    Ak_Insert_New_Element(TYPE_VARCHAR, "Department of Information Technology and Computing", tblName, "dep_name", row_root);
    Ak_Insert_New_Element(TYPE_VARCHAR, "Hutinski", tblName, "manager", row_root);
    Ak_insert_row(row_root);

    id_department++;
    Ak_DeleteAll_L3(&row_root);
    Ak_Insert_New_Element(TYPE_INT, &id_department, tblName, "id_department", row_root);
    Ak_Insert_New_Element(TYPE_VARCHAR, "Department of Information Systems Development", tblName, "dep_name", row_root);
    Ak_Insert_New_Element(TYPE_VARCHAR, "Vrcek", tblName, "manager", row_root);
    Ak_insert_row(row_root);

    /* too long
    id_department++;
    DeleteAllElements(row_root);
    InsertNewElement(TYPE_INT, &id_department, tblName, "id_department", row_root);
    InsertNewElement(TYPE_VARCHAR, "Department of foreign languages and general education discipline", tblName, "dep_name", row_root);
    InsertNewElement(TYPE_VARCHAR, "", tblName, "manager", row_root);
    insert_row(row_root);*/

    AK_print_table(tblName);
    //-------------------------------------------------------------------------------------------------------


    
    
    
    
    //---------------------------------------> CREATE TABLE 'COURSE' <---------------------------------------
    //create header
    AK_header t_header6[MAX_ATTRIBUTES];

    temp = (AK_header*) AK_create_header("id_course", TYPE_INT, FREE_INT, FREE_CHAR, FREE_CHAR);
    memcpy(t_header6, temp, sizeof (AK_header));
	AK_free(temp);
    temp = (AK_header*) AK_create_header("name", TYPE_VARCHAR, FREE_INT, FREE_CHAR, FREE_CHAR);
    memcpy(t_header6 + 1, temp, sizeof (AK_header));
	AK_free(temp);
    temp = (AK_header*) AK_create_header("category", TYPE_VARCHAR, FREE_INT, FREE_CHAR, FREE_CHAR);
    memcpy(t_header6 + 2, temp, sizeof (AK_header));
	AK_free(temp);
    temp = (AK_header*) AK_create_header("lecturer", TYPE_VARCHAR, FREE_INT, FREE_CHAR, FREE_CHAR);
    memcpy(t_header6 + 3, temp, sizeof (AK_header));
	AK_free(temp);
    temp = (AK_header*) AK_create_header("active", TYPE_INT, FREE_INT, FREE_CHAR, FREE_CHAR);
    memcpy(t_header6 + 4, temp, sizeof (AK_header));
	AK_free(temp);
    memset(t_header6 + 5, '\0', MAX_ATTRIBUTES - 5);

    //create table
    tblName = "course";
    startAddress = AK_initialize_new_segment(tblName, SEGMENT_TYPE_TABLE, t_header6);

    if (startAddress != EXIT_ERROR)
        printf("\nTABLE %s CREATED!\n", tblName);

    Ak_DeleteAll_L3(&row_root);
    AK_free(row_root);

    AK_EPI;
}