コード例 #1
0
ファイル: test.c プロジェクト: mschatten/akdb
/**
 * @author Luka Rajcevic
 * @brief Function for creating test table header
 * @param tbl_name - name of the table for which the header will be created
 * @param attr_name - array of attribute names
 * @param _num - number of attributes
 * @param _type - array of attribute types (eg. TYPE_INT, TYPE_VARCHAR, etc.)
 * @return 1 if ok, 0 otherwise
 */
int create_header_test(char* tbl_name, char** attr_name, int _num, int* _type){
    
    int i;
    
    AK_header t_header[ MAX_ATTRIBUTES ];
    AK_header* temp;
    AK_PRO;
    for (i = 0; i < _num; i++){
        temp = (AK_header*) AK_create_header(attr_name[i], _type[i], FREE_INT, FREE_CHAR, FREE_CHAR);
        memcpy(t_header + i, temp, sizeof ( AK_header));
    }

    memset(t_header + _num, 0, MAX_ATTRIBUTES - _num);

    int startAddress = AK_initialize_new_segment(tbl_name, SEGMENT_TYPE_TABLE, t_header);

    if (startAddress != EXIT_ERROR){
        AK_EPI;
        return 1;
    }
    else{
	AK_EPI;
        return 0;
    }
    AK_EPI;
}
コード例 #2
0
ファイル: table.c プロジェクト: mschatten/akdb
//TODO: Add description of the function
void AK_create_table(char* tblName, AK_create_table_parameter* parameters, int attribute_count) {
    int i;
    AK_header t_header[ MAX_ATTRIBUTES ];
    AK_header* temp;
    AK_PRO;
    for (i = 0; i < attribute_count; i++) {
        switch (parameters[i].type) {
            case TYPE_INT:
                temp = (AK_header*) AK_create_header(parameters[i].name, TYPE_INT, FREE_INT, FREE_CHAR, FREE_CHAR);
                memcpy(t_header + i, temp, sizeof ( AK_header));
                break;
            case TYPE_VARCHAR:
                temp = (AK_header*) AK_create_header(parameters[i].name, TYPE_VARCHAR, FREE_INT, FREE_CHAR, FREE_CHAR);
                memcpy(t_header + i, temp, sizeof ( AK_header));
                break;
            case TYPE_FLOAT:
                temp = (AK_header*) AK_create_header(parameters[i].name, TYPE_FLOAT, FREE_INT, FREE_CHAR, FREE_CHAR);
                memcpy(t_header + i, temp, sizeof ( AK_header));
                break;
        }
    }
    memset(t_header + attribute_count, 0, MAX_ATTRIBUTES - attribute_count);
    AK_EPI;
}
コード例 #3
0
ファイル: filesearch.c プロジェクト: embalint/akdb
/**
  * @author Miroslav Policki
  * @brief Function for testing file search
  * @return No return value
  */
void Ak_filesearch_test() {
    int i;
    double f;
    AK_mem_block *mem_block, tmp;
    AK_header hBroj_int[4], *hTmp;
    struct list_node *row_root;
    AK_PRO;
    // create table and fill it for testing purposes
    hTmp = (AK_header *) AK_create_header("Number int", TYPE_INT, FREE_INT, FREE_CHAR, FREE_CHAR);
    hBroj_int[0] = *hTmp;
    hTmp = (AK_header *) AK_create_header("Number float", TYPE_FLOAT, FREE_INT, FREE_CHAR, FREE_CHAR);
    hBroj_int[1] = *hTmp;
    hTmp = (AK_header *) AK_create_header("Varchar column", TYPE_VARCHAR, FREE_INT, FREE_CHAR, FREE_CHAR);
    hBroj_int[2] = *hTmp;
    memset(&hBroj_int[3], 0, sizeof (AK_header));

    if (EXIT_ERROR == AK_initialize_new_segment("filesearch test table", SEGMENT_TYPE_TABLE, hBroj_int)) {
        printf("filesearch_test: ERROR. Unable to create \"filesearch test table \"\n");
        AK_EPI;
        exit(EXIT_ERROR);
    }

    row_root = AK_malloc(sizeof (struct list_node));
    if (row_root == NULL) {
        printf("filesearch_test: ERROR. Cannot allocate row_root.\n");
        AK_EPI;
        exit(EXIT_ERROR);
    }

    for (i = -10, f = -i; i < 10; i++, f = -i) {
        Ak_Init_L3(&row_root);
        Ak_Insert_New_Element(TYPE_INT, &i, "filesearch test table", "Number int", row_root);
        Ak_Insert_New_Element(TYPE_FLOAT, &f, "filesearch test table", "Number float", row_root);
        Ak_Insert_New_Element(TYPE_VARCHAR, "test text", "filesearch test table", "Varchar column", row_root);
        Ak_insert_row(row_root);
        Ak_DeleteAll_L3(&row_root);
    }

    AK_free(row_root);

    // filesearch usage example starts here
    {
        char *szTmp;
        search_params sp[3];
        search_result sr;
        int iLower, iUpper;
        double dTmp;

        sp[0].szAttribute = "Varchar column";
        sp[0].iSearchType = SEARCH_ALL;

        sp[1].szAttribute = "Number int";
        sp[1].iSearchType = SEARCH_RANGE;
        iLower = -5;
        iUpper = 5;
        sp[1].pData_lower = &iLower;
        sp[1].pData_upper = &iUpper;

        sp[2].szAttribute = "Number float";
        sp[2].iSearchType = SEARCH_PARTICULAR;
        dTmp = 2;
        sp[2].pData_lower = &dTmp;

        Ak_dbg_messg(LOW, FILE_MAN, "Calling AK_search_unsorted");
        sr = AK_search_unsorted("filesearch test table", sp, 3);

        for (i = 0; i < sr.iNum_tuple_addresses; i++) {
            //mem_block = AK_get_block (sr.aiBlocks[i]); // caching should be used when available
            mem_block = &tmp;
            mem_block->block = (AK_block *) AK_read_block(sr.aiBlocks[i]);

            printf("Found:%d\n", *((int *) (mem_block->block->data + mem_block->block->tuple_dict[sr.aiTuple_addresses[i] + 0].address)));
            printf("Found:%f\n", *((double *) (mem_block->block->data + mem_block->block->tuple_dict[sr.aiTuple_addresses[i] + 1].address)));

            szTmp = AK_malloc(mem_block->block->tuple_dict[sr.aiTuple_addresses[i] + 2].size + 1);
            memcpy(szTmp, mem_block->block->data + mem_block->block->tuple_dict[sr.aiTuple_addresses[i] + 2].address, mem_block->block->tuple_dict[sr.aiTuple_addresses[i] + 2].size);
            szTmp[mem_block->block->tuple_dict[sr.aiTuple_addresses[i] + 2].size] = '\0';
            printf("Found:%s\n", szTmp);
            AK_free(szTmp);
        }

        AK_deallocate_search_result(sr);
    }
    AK_EPI;
}
コード例 #4
0
ファイル: rel_eq_selection.c プロジェクト: embalint/akdb
/**
 * @author Dino Laktašić.
 * @brief Function for testing rel_eq_selection
 * @return No return value
 */
void AK_rel_eq_selection_test() {
    AK_PRO;
    printf("rel_eq_selection.c: Present!\n");
    printf("\n********** REL_EQ_SELECTION TEST by Dino Laktašić **********\n");

    //create header
    AK_header t_header[MAX_ATTRIBUTES];
    AK_header *temp;

    temp = (AK_header*) AK_create_header("id", TYPE_INT, FREE_INT, FREE_CHAR, FREE_CHAR);
    memcpy(t_header, temp, sizeof (AK_header));
    temp = (AK_header*) AK_create_header("firstname", TYPE_VARCHAR, FREE_INT, FREE_CHAR, FREE_CHAR);
    memcpy(t_header + 1, temp, sizeof (AK_header));
    temp = (AK_header*) AK_create_header("job", TYPE_VARCHAR, FREE_INT, FREE_CHAR, FREE_CHAR);
    memcpy(t_header + 2, temp, sizeof (AK_header));
    temp = (AK_header*) AK_create_header("year", TYPE_INT, FREE_INT, FREE_CHAR, FREE_CHAR);
    memcpy(t_header + 3, temp, sizeof (AK_header));
    temp = (AK_header*) AK_create_header("tezina", TYPE_FLOAT, FREE_INT, FREE_CHAR, FREE_CHAR);
    memcpy(t_header + 4, temp, sizeof (AK_header));
    memset(t_header + 5, '\0', MAX_ATTRIBUTES - 5);

    //create table
    char *tblName = "profesor";

    int startAddress = AK_initialize_new_segment(tblName, SEGMENT_TYPE_TABLE, t_header);

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

    printf("rel_eq_selection_test: After segment initialization: %d\n", AK_num_attr(tblName));

    //create header
    AK_header t_header2[MAX_ATTRIBUTES];
    AK_header *temp2;

    temp2 = (AK_header*) AK_create_header("mbr", TYPE_INT, FREE_INT, FREE_CHAR, FREE_CHAR);
    memcpy(t_header2, temp2, sizeof (AK_header));
    temp2 = (AK_header*) AK_create_header("firstname", TYPE_VARCHAR, FREE_INT, FREE_CHAR, FREE_CHAR);
    memcpy(t_header2 + 1, temp2, sizeof (AK_header));
    temp2 = (AK_header*) AK_create_header("lastname", TYPE_VARCHAR, FREE_INT, FREE_CHAR, FREE_CHAR);
    memcpy(t_header2 + 2, temp2, sizeof (AK_header));
    temp2 = (AK_header*) AK_create_header("year", TYPE_INT, FREE_INT, FREE_CHAR, FREE_CHAR);
    memcpy(t_header2 + 3, temp2, sizeof (AK_header));
    temp2 = (AK_header*) AK_create_header("weight", TYPE_FLOAT, FREE_INT, FREE_CHAR, FREE_CHAR);
    memcpy(t_header2 + 4, temp2, sizeof (AK_header));
    memset(t_header2 + 5, '\0', MAX_ATTRIBUTES - 5);

    //create table
    char *tblName2 = "student";

    int startAddress2 = AK_initialize_new_segment(tblName2, SEGMENT_TYPE_TABLE, t_header2);

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

    printf("rel_eq_selection_test: After segment initialization: %d\n", AK_num_attr(tblName2));
    //-----------------------------------------------------------------------------------------

    //Init list and insert elements (Query parser output)
    struct list_node *expr = (struct list_node *) AK_malloc(sizeof (struct list_node));
    Ak_Init_L3(&expr);

    //Commutativity of Selection and Projection
    Ak_InsertAtEnd_L3(TYPE_OPERATOR, "s", sizeof ("s"), expr);
    Ak_InsertAtEnd_L3(TYPE_CONDITION, "`L1` 100 >", sizeof ("`L1` 100 >"), expr);
    Ak_InsertAtEnd_L3(TYPE_OPERATOR, "p", sizeof ("p"), expr);
    Ak_InsertAtEnd_L3(TYPE_ATTRIBS, "L1;L2;L3;L4", sizeof ("L1;L2;L3;L4"), expr); //projection attribute
    Ak_InsertAtEnd_L3(TYPE_OPERATOR, "p", sizeof ("p"), expr);
    Ak_InsertAtEnd_L3(TYPE_ATTRIBS, "L1;L4;L3;L2;L5", sizeof ("L1;L4;L3;L2;L5"), expr);

    //Cascade of Selection and Commutativity of Selection
    Ak_InsertAtEnd_L3(TYPE_OPERATOR, "s", sizeof ("s"), expr);
    Ak_InsertAtEnd_L3(TYPE_CONDITION, "`L1` 100 >", sizeof ("`L1` 100 >"), expr);
    //
    //Commutativity of Selection and set operations (Union, Intersection, and Set difference)
    Ak_InsertAtEnd_L3(TYPE_OPERATOR, "s", sizeof ("s"), expr);
    Ak_InsertAtEnd_L3(TYPE_CONDITION, "`L2` 100 > `L3` 50 < OR", sizeof ("`L2` 100 > `L3` 50 < OR"), expr);
    Ak_InsertAtEnd_L3(TYPE_OPERAND, "R", sizeof ("R"), expr);
    Ak_InsertAtEnd_L3(TYPE_OPERAND, "S", sizeof ("S"), expr);
    Ak_InsertAtEnd_L3(TYPE_OPERATOR, "u", sizeof ("u"), expr); //u, i, e

    //Commutativity of Selection and Theta join (or Cartesian product)
    Ak_InsertAtEnd_L3(TYPE_OPERATOR, "s", sizeof ("s"), expr);
    Ak_InsertAtEnd_L3(TYPE_CONDITION, "`job` 'teacher' = `mbr` 50 < AND", sizeof ("`job` 'teacher' = `mbr` 50 < AND"), expr);
    Ak_InsertAtEnd_L3(TYPE_OPERAND, "student", sizeof ("student"), expr);
    Ak_InsertAtEnd_L3(TYPE_OPERAND, "profesor", sizeof ("profesor"), expr);
    Ak_InsertAtEnd_L3(TYPE_OPERATOR, "t", sizeof ("t"), expr);
    Ak_InsertAtEnd_L3(TYPE_CONDITION, "`mbr` 50 = `job` 'teacher' = AND", sizeof ("`mbr` 50 = `job` 'teacher' = AND"), expr); //theta join attribute

    //printf("\nRA expr. before rel_eq optimization:\n");
    //AK_print_rel_eq_projection(expr);
    AK_print_rel_eq_selection(AK_rel_eq_selection(expr));

    if (DEBUG_ALL) {
        printf("\n------------------> TEST_SELECTION_FUNCTIONS <------------------\n\n");

        char *test_cond1, *test_cond2;
        char *test_table;
        char *cond_attr1, *cond_attr2;

        test_table = "profesor";
        test_cond1 = "`mbr` 100 > `firstname` 50 < AND `id` 'A' > OR";
        test_cond2 = "`id` 100 > `firstname` 50 < AND `job` 'teacher' = AND";

        cond_attr1 = AK_rel_eq_cond_attributes(test_cond1);
        cond_attr2 = AK_rel_eq_cond_attributes(test_cond2);

        printf("IS_SET_SUBSET_OF_LARGER_SET_TEST: (%i)\n\n", AK_rel_eq_is_attr_subset(cond_attr1, cond_attr2));
        printf("GET_ALL_TABLE_ATTRIBUTES_TEST   : (%s)\n\n", AK_rel_eq_get_atrributes_char(test_table));
        printf("GET_CONDITION_ATTRIBUTES_TEST   : (%s)\n\n", AK_rel_eq_cond_attributes(test_cond1));
        printf("COMMUTE_WITH_THETA_JOIN_TEST    : (%s)\n\n", AK_rel_eq_commute_with_theta_join(test_cond1, test_table));
        printf("CONDITION_SHARE_ATTRIBUTES_TEST : (%i)\n", AK_rel_eq_share_attributes(cond_attr1, cond_attr2));
        /**/
    } else {
        printf("...\n");
    }

    Ak_DeleteAll_L3(&expr);
    //dealocate variables ;)
    AK_EPI;
}
コード例 #5
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;
}