📄 tsbtrins.c
字号:
mem_heap_t* heap; que_fork_t* fork; dict_table_t* table; que_thr_t* thr; trx_t* trx; ulint i; byte buf[100]; ins_node_t* node; ulint count = 0; ulint rnd; dtuple_t* row; dict_index_t* index;/* dict_tree_t* tree; dtuple_t* entry; btr_pcur_t pcur; mtr_t mtr; */ printf("-------------------------------------------------\n"); printf("TEST 2.1. MASSIVE ASCENDING INSERT\n"); heap = mem_heap_create(512); com_endpoint = (com_endpoint_t*)heap; /* This is a dummy non-NULL value */ mutex_enter(&kernel_mutex); sess = sess_open(ut_dulint_zero, com_endpoint, (byte*)"user1", 6); trx = sess->trx; mutex_exit(&kernel_mutex);loop: ut_a(trx_start(trx, ULINT_UNDEFINED)); /*-------------------------------------*/ /* MASSIVE INSERT */ fork = que_fork_create(NULL, NULL, QUE_FORK_INSERT, heap); fork->trx = trx; thr = que_thr_create(fork, fork, heap); table = dict_table_get("TS_TABLE1", trx); row = dtuple_create(heap, 3 + DATA_N_SYS_COLS); dict_table_copy_types(row, table); node = ins_node_create(fork, thr, row, table, heap); thr->child = node; row_ins_init_sys_fields_at_sql_compile(node->row, node->table, heap); row_ins_init_sys_fields_at_sql_prepare(node->row, node->table, trx); node->init_all_sys_fields = FALSE; mutex_enter(&kernel_mutex); que_graph_publish(fork, trx->sess); trx->graph = fork; mutex_exit(&kernel_mutex); rnd = 0; log_print(); oldtm = ut_clock(); for (i = 0; i < *((ulint*)arg); i++) { dtuple_gen_test_tuple3(row, rnd, DTUPLE_TEST_FIXED30, buf); mutex_enter(&kernel_mutex); ut_a( thr == que_fork_start_command(fork, SESS_COMM_EXECUTE, 0)); mutex_exit(&kernel_mutex); que_run_threads(thr); if (i % 5000 == 0) { /* ibuf_print(); */ /* buf_print(); */ /* buf_print_io(); */ /* tm = ut_clock(); printf("Wall time for %lu inserts %lu milliseconds\n", i, tm - oldtm); */ } rnd = rnd + 1; } tm = ut_clock(); printf("Wall time for %lu inserts %lu milliseconds\n", i, tm - oldtm); log_print();/* dict_table_print_by_name("TS_TABLE1"); *//* ibuf_print(); */ index = index; index = dict_table_get_first_index(table); if (zero) { btr_search_index_print_info(index); } btr_validate_tree(dict_index_get_tree(index)); #ifdef notdefined index = dict_table_get_next_index(index); if (zero) { btr_search_index_print_info(index); } btr_validate_tree(dict_index_get_tree(index)); index = dict_table_get_next_index(index);/* btr_search_index_print_info(index); */ btr_validate_tree(dict_index_get_tree(index));/* dict_table_print_by_name("TS_TABLE1"); */ /* Check inserted entries */ btr_search_print_info(); entry = dtuple_create(heap, 1); dtuple_gen_search_tuple3(entry, 0, buf); mtr_start(&mtr); index = dict_table_get_first_index(table); tree = dict_index_get_tree(index); btr_pcur_open(index, entry, PAGE_CUR_L, BTR_SEARCH_LEAF, &pcur, &mtr); ut_a(btr_pcur_is_before_first_in_tree(&pcur, &mtr)); for (i = 0; i < *((ulint*)arg); i++) { ut_a(btr_pcur_move_to_next(&pcur, &mtr)); dtuple_gen_search_tuple3(entry, i, buf); ut_a(0 == cmp_dtuple_rec(entry, btr_pcur_get_rec(&pcur))); } ut_a(!btr_pcur_move_to_next(&pcur, &mtr)); ut_a(btr_pcur_is_after_last_in_tree(&pcur, &mtr)); btr_pcur_close(&pcur); mtr_commit(&mtr); printf("Validating tree\n"); btr_validate_tree(tree); printf("Validated\n");#endif /*-------------------------------------*/ /* ROLLBACK */ #ifdef notdefined/* btr_validate_tree(tree); */ fork = que_fork_create(NULL, NULL, QUE_FORK_EXECUTE, heap); fork->trx = trx; thr = que_thr_create(fork, fork, heap); thr->child = roll_node_create(fork, thr, heap); mutex_enter(&kernel_mutex); que_graph_publish(fork, trx->sess); trx->graph = fork; ut_a(thr == que_fork_start_command(fork, SESS_COMM_EXECUTE, 0)); mutex_exit(&kernel_mutex); oldtm = ut_clock(); que_run_threads(thr); tm = ut_clock(); printf("Wall time for rollback of %lu inserts %lu milliseconds\n", i, tm - oldtm); os_thread_sleep(1000000);/* dict_table_print_by_name("TS_TABLE1"); */ dtuple_gen_search_tuple3(entry, 0, buf); mtr_start(&mtr); btr_pcur_open(index, entry, PAGE_CUR_L, BTR_SEARCH_LEAF, &pcur, &mtr); ut_a(btr_pcur_is_before_first_in_tree(&pcur, &mtr)); ut_a(!btr_pcur_move_to_next(&pcur, &mtr)); ut_a(btr_pcur_is_after_last_in_tree(&pcur, &mtr)); btr_pcur_close(&pcur); mtr_commit(&mtr); btr_search_print_info();#endif /*-------------------------------------*/ /* COMMIT */ fork = que_fork_create(NULL, NULL, QUE_FORK_EXECUTE, heap); fork->trx = trx; thr = que_thr_create(fork, fork, heap); thr->child = commit_node_create(fork, thr, heap); mutex_enter(&kernel_mutex); que_graph_publish(fork, trx->sess); trx->graph = fork; ut_a(thr == que_fork_start_command(fork, SESS_COMM_EXECUTE, 0)); mutex_exit(&kernel_mutex); oldtm = ut_clock(); que_run_threads(thr); tm = ut_clock(); printf("Wall time for commit %lu milliseconds\n", tm - oldtm); /*-------------------------------------*/ count++;/* btr_validate_tree(tree); */ if (count < 1) { goto loop; } mem_heap_free(heap); return(0);}/********************************************************************Main test function. */void main(void) /*======*/{ ulint tm, oldtm; os_thread_id_t id[10]; ulint n1000[10]; ulint i; ulint n5000 = 500; ulint n2;/* buf_debug_prints = TRUE; */ log_do_write = TRUE; srv_boot("initfile"); os_aio_init(576, 9, 100); fil_init(25); buf_pool_init(POOL_SIZE, POOL_SIZE); fsp_init(); log_init(); lock_sys_create(1024); create_files(); init_spaces(); sess_sys_init_at_db_start(); trx_sys_create(); dict_create();/* os_thread_sleep(500000); */ oldtm = ut_clock(); ut_rnd_set_seed(19); test1(NULL); /* for (i = 0; i < 2; i++) { n1000[i] = i; id[i] = id[i]; os_thread_create(test10mt, n1000 + i, id + i); }*/ i = 4; n1000[i] = i; id[i] = id[i];/* os_thread_create(test10_4, n1000 + i, id + i); */ i = 5; /* test10mt(&i); i = 6; test10mt(&i); trx_purge(); printf("%lu pages purged\n", purge_sys->n_pages_handled); dict_table_print_by_name("TS_TABLE1"); *//* os_thread_create(test_measure_cont, &n3, id + 0); *//* mem_print_info(); */ /* dict_table_print_by_name("TS_TABLE1"); */ log_flush_up_to(ut_dulint_zero); os_thread_sleep(500000); n2 = 10000; test2_1(&n2);/* test9A(&n2); test9(&n2); */ /* test6(&n2); *//* test2(&n2); *//* test2_2(&n2); *//* mem_print_info(); */ for (i = 0; i < 2; i++) { n1000[i] = 1000 + 10 * i; id[i] = id[i];/* os_thread_create(test2mt, n1000 + i, id + i); os_thread_create(test2_1mt, n1000 + i, id + i); os_thread_create(test2_2mt, n1000 + i, id + i); */ } n2 = 2000;/* test2mt(&n2); *//* buf_print(); ibuf_print(); rw_lock_list_print_info(); mutex_list_print_info(); dict_table_print_by_name("TS_TABLE1"); *//* mem_print_info(); */ n2 = 1000;/* test4_1(); test4_2(); for (i = 0; i < 2; i++) { n1000[i] = i; id[i] = id[i]; os_thread_create(test4mt, n1000 + i, id + i); } n2 = 4; test4mt(&n2); test4mt(&n2); test4_2(); lock_print_info(); *//* test7(&n2); *//* os_thread_sleep(25000000); */ tm = ut_clock(); printf("Wall time for test %lu milliseconds\n", tm - oldtm); printf("TESTS COMPLETED SUCCESSFULLY!\n");}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -