/** * @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; }
/** * @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); }
/** * @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; }
/** * @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); } }
/** * @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); }
/** * @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); }
/** * @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; }
//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; }
/** * @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; }