📄 tscli.c
字号:
thr = UT_LIST_GET_FIRST(query->thrs); mutex_enter(&kernel_mutex); ut_a(thr == que_fork_start_command(query, SESS_COMM_EXECUTE, 0)); mutex_exit(&kernel_mutex); oldtm = ut_clock(); que_run_threads(thr); tm = ut_clock(); printf("Wall time for delete test %lu milliseconds\n", tm - oldtm); /*------------------------------------------------------*/ /*------------------------------------------------------*/ os_thread_sleep(2000000); query = pars_sql(" PROCEDURE CONSISTENT_READ_TEST () IS"" int1 INT;"" int2 INT;"" "" BEGIN"" SELECT COUNT(*), SUM(COL22) INTO int1, int2"" FROM TS_TABLE2"" CONSISTENT READ;"" ASSERT(int2 = 999 * 500);"" ASSERT(int1 = 1000);"" "" "" END;" ); query->trx = trx2; thr = UT_LIST_GET_FIRST(query->thrs); mutex_enter(&kernel_mutex); ut_a(thr == que_fork_start_command(query, SESS_COMM_EXECUTE, 0)); mutex_exit(&kernel_mutex); oldtm = ut_clock(); que_run_threads(thr); tm = ut_clock(); printf("Wall time for consistent read test %lu milliseconds\n", tm - oldtm); /*------------------------------------------------------*/ query = pars_sql(" PROCEDURE ROLLBACK_SPEED_TEST () IS"" "" BEGIN"" ROLLBACK WORK;"" END;" ); query->trx = trx; thr = UT_LIST_GET_FIRST(query->thrs); mutex_enter(&kernel_mutex); ut_a(thr == que_fork_start_command(query, SESS_COMM_EXECUTE, 0)); mutex_exit(&kernel_mutex); oldtm = ut_clock(); que_run_threads(thr); tm = ut_clock(); printf("Wall time for rollback %lu milliseconds\n", tm - oldtm); /*------------------------------------------------------*/ query = pars_sql(" PROCEDURE UPDATE_SPEED_TEST () IS"" int1 INT;"" int2 INT;"" "" BEGIN"" UPDATE TS_TABLE2 SET COL21 = COL21 + 1000, COL22 = COL22 + 1"" WHERE COL21 < 1000;"" UPDATE TS_TABLE2 SET COL21 = COL21, COL22 = COL22;"" UPDATE TS_TABLE2 SET COL21 = COL21, COL22 = COL22;"" UPDATE TS_TABLE2 SET COL21 = COL21, COL22 = COL22;"" UPDATE TS_TABLE2 SET COL21 = COL21, COL22 = COL22;"" UPDATE TS_TABLE2 SET COL21 = COL21, COL22 = COL22;"" UPDATE TS_TABLE2 SET COL21 = COL21, COL22 = COL22;"" UPDATE TS_TABLE2 SET COL21 = COL21, COL22 = COL22;"" UPDATE TS_TABLE2 SET COL21 = COL21, COL22 = COL22;"" "" SELECT SUM(COL21), SUM(COL22) INTO int1, int2"" FROM TS_TABLE2"" CONSISTENT READ;"" ASSERT(int2 = 1000 + 999 * 500);"" ASSERT(int1 = 1000000 + 999 * 500);"" UPDATE TS_TABLE2 SET COL21 = COL21 + 1000, COL22 = COL22 + 1"" WHERE COL21 < 2000;"" UPDATE TS_TABLE2 SET COL21 = COL21 + 1000, COL22 = COL22 + 1"" WHERE COL21 < 3000;"" COMMIT WORK;"" END;" ); query->trx = trx; thr = UT_LIST_GET_FIRST(query->thrs); mutex_enter(&kernel_mutex); ut_a(thr == que_fork_start_command(query, SESS_COMM_EXECUTE, 0)); mutex_exit(&kernel_mutex); oldtm = ut_clock(); que_run_threads(thr); tm = ut_clock(); printf("Wall time for update test %lu milliseconds\n", tm - oldtm); /*------------------------------------------------------*/ /*------------------------------------------------------*/ os_thread_sleep(2000000); query = pars_sql(" PROCEDURE CONSISTENT_READ_TEST () IS"" int1 INT;"" int2 INT;"" "" BEGIN"" SELECT COUNT(*), SUM(COL22) INTO int1, int2"" FROM TS_TABLE2"" CONSISTENT READ;"" ASSERT(int1 = 1000);"" ASSERT(int2 = 999 * 500);"" "" "" END;" ); query->trx = trx2; thr = UT_LIST_GET_FIRST(query->thrs); mutex_enter(&kernel_mutex); ut_a(thr == que_fork_start_command(query, SESS_COMM_EXECUTE, 0)); mutex_exit(&kernel_mutex); oldtm = ut_clock(); que_run_threads(thr); tm = ut_clock(); printf("Wall time for consistent read test %lu milliseconds\n", tm - oldtm); /*------------------------------------------------------*/ /*------------------------------------------------------*/ query = pars_sql(" PROCEDURE COMMIT_SPEED_TEST () IS"" "" BEGIN"" COMMIT WORK;"" END;" ); query->trx = trx; thr = UT_LIST_GET_FIRST(query->thrs); mutex_enter(&kernel_mutex); ut_a(thr == que_fork_start_command(query, 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);/* dict_table_print_by_name("TS_TABLE2"); */ /*------------------------------------------------------*/ /*------------------------------------------------------*/ os_thread_sleep(2000000); query = pars_sql(" PROCEDURE CONSISTENT_READ_TEST () IS"" int1 INT;"" int2 INT;"" "" BEGIN"" SELECT COUNT(*), SUM(COL22) INTO int1, int2"" FROM TS_TABLE2"" CONSISTENT READ;"" ASSERT(int1 = 1000);"" ASSERT(int2 = 999 * 500);"" "" "" END;" ); query->trx = trx2; thr = UT_LIST_GET_FIRST(query->thrs); mutex_enter(&kernel_mutex); ut_a(thr == que_fork_start_command(query, SESS_COMM_EXECUTE, 0)); mutex_exit(&kernel_mutex); oldtm = ut_clock(); que_run_threads(thr); tm = ut_clock(); printf("Wall time for consistent read test %lu milliseconds\n", tm - oldtm); /*------------------------------------------------------*/ printf("Will start insert test2\n"); os_thread_sleep(2000000); query = pars_sql(" PROCEDURE INSERT_SPEED_TEST2 () IS"" int1 INT;"" int2 INT;"" "" BEGIN"" INSERT INTO TS_TABLE3 SELECT * FROM TS_TABLE2;"" "" SELECT COUNT(*) INTO int1"" FROM TS_TABLE2;"" SELECT COUNT(*) INTO int2"" FROM TS_TABLE3;"" ASSERT(int1 = int2);"" "" COMMIT WORK;"" "" END;" ); query->trx = trx; thr = UT_LIST_GET_FIRST(query->thrs); mutex_enter(&kernel_mutex); ut_a(thr == que_fork_start_command(query, SESS_COMM_EXECUTE, 0)); mutex_exit(&kernel_mutex); oldtm = ut_clock(); que_run_threads(thr); tm = ut_clock(); printf("Wall time for insert test2 %lu milliseconds\n", tm - oldtm);/* sync_print(); */ /*------------------------------------------------------*/ query = pars_sql(" PROCEDURE COMMIT_SPEED_TEST () IS"" "" BEGIN"" COMMIT WORK;"" END;" ); query->trx = trx; thr = UT_LIST_GET_FIRST(query->thrs); mutex_enter(&kernel_mutex); ut_a(thr == que_fork_start_command(query, 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); /*------------------------------------------------------*/ query = pars_sql(" PROCEDURE JOIN_SPEED_TEST () IS"" int1 INT;"" "" BEGIN"" SELECT COUNT(*) INTO int1"" FROM TS_TABLE2, TS_TABLE3"" WHERE COL21 = COL31;"" ASSERT(int1 = 1000);"" "" COMMIT WORK;"" "" END;" ); query->trx = trx; thr = UT_LIST_GET_FIRST(query->thrs); mutex_enter(&kernel_mutex); ut_a(thr == que_fork_start_command(query, SESS_COMM_EXECUTE, 0)); mutex_exit(&kernel_mutex); oldtm = ut_clock(); que_run_threads(thr); tm = ut_clock(); printf("Wall time for join test %lu milliseconds\n", tm - oldtm); /*------------------------------------------------------*/ dict_table_print_by_name("TS_TABLE1"); dict_table_print_by_name("TS_TABLE2");/* dict_table_print_by_name("SYS_TABLES"); dict_table_print_by_name("SYS_COLUMNS"); dict_table_print_by_name("SYS_INDEXES"); dict_table_print_by_name("SYS_FIELDS");*/ query = pars_sql(" PROCEDURE INSERT_TEST () IS"" var1 CHAR;"" var2 CHAR;"" int1 INT;"" int2 INT;"" sum1 INT;"" finished INT;"" rnd_var1 INT;"" rnd_var2 INT;"" "" DECLARE CURSOR cursor2"" IS SELECT COL21, COL22"" FROM TS_TABLE2"" WHERE COL21 > 5;"" "" BEGIN"" int1 := 0;"" WHILE int1 < 10 LOOP"" rnd_var1 := int1;"" PRINTF('Round '); PRINTF(int1);"" INSERT INTO TS_TABLE2 VALUES (int1, rnd_var1,"" '123456789012345678901234567890');"" SELECT COL22 INTO rnd_var2 FROM TS_TABLE2"" WHERE COL21 = int1;"" ASSERT(rnd_var1 = rnd_var2);"" int1 := int1 + 1;"" END LOOP;"" "" PRINTF('First explicit cursor loop:');"" OPEN cursor2;" " finished := 0;"" "" WHILE finished = 0 LOOP"" FETCH cursor2 INTO int1, int2;"" IF cursor2 % NOTFOUND THEN"" finished := 1;"" PRINTF('Loop now finished');"" ELSE"" PRINTF('Row fetched, values:');"" PRINTF(int1); PRINTF(int2);"" ASSERT(int1 = int2);"" UPDATE TS_TABLE2 SET COL22 = COL22 + 100"" WHERE CURRENT OF cursor2;"" END IF;"" END LOOP;"" CLOSE cursor2;"" "" PRINTF('Second explicit cursor loop:');"" OPEN cursor2;" " finished := 0;"" "" WHILE finished = 0 LOOP"" FETCH cursor2 INTO int1, int2;"" IF cursor2 % NOTFOUND THEN"" finished := 1;"" ELSE"" PRINTF('Row fetched, values:');"" PRINTF(int1); PRINTF(int2);"" ASSERT(int1 + 100 = int2);"" UPDATE TS_TABLE2 SET COL22 = int2 + 100"" WHERE CURRENT OF cursor2;"" END IF;"" END LOOP;"" CLOSE cursor2;"" "" SELECT COUNT(*), SUM(COL22) INTO int1, sum1"" FROM TS_TABLE2;"" PRINTF('Now table 2 has this many rows: '); PRINTF(int1);"" PRINTF('and the sum of COL22: '); PRINTF(sum1);"" "" INSERT INTO TS_TABLE3"" SELECT COL21, COL22 + 10, COL23 FROM TS_TABLE2;"" "" SELECT COUNT(*), SUM(COL32) INTO int1, sum1"" FROM TS_TABLE2, TS_TABLE3"" WHERE COL21 + 2 = COL31;"" PRINTF('Join table has this many rows: '); PRINTF(int1);"" PRINTF('and the sum of COL32: '); PRINTF(sum1);"" "" ROLLBACK WORK;"" "" SELECT COUNT(*), SUM(COL21) INTO int1, sum1 FROM TS_TABLE2;"" PRINTF('Now table 2 has this many rows: '); PRINTF(int1);"" PRINTF('and the sum of COL21: '); PRINTF(sum1);"" "" "" END;" ); query->trx = trx; thr = UT_LIST_GET_FIRST(query->thrs); mutex_enter(&kernel_mutex); ut_a(thr == que_fork_start_command(query, SESS_COMM_EXECUTE, 0)); mutex_exit(&kernel_mutex); que_run_threads(thr); dict_table_print_by_name("TS_TABLE1"); dict_table_print_by_name("TS_TABLE2"); query = pars_sql(" PROCEDURE DELETE_TEST () IS"" int1 INT;"" sum1 INT;"" finished INT;"" "" DECLARE CURSOR cursor2"" IS SELECT"" FROM TS_TABLE2"" WHERE COL21 < 10;"" "" BEGIN"" int1 := 0;"" WHILE int1 < 10 LOOP"" PRINTF('Round '); PRINTF(int1);"" INSERT INTO TS_TABLE2 VALUES (int1, int1, TO_CHAR(int1));"" int1 := int1 + 1;"" END LOOP;"" COMMIT WORK;"" PRINTF('Delete all the rows:');"" OPEN cursor2;" " finished := 0;"" "" WHILE finished = 0 LOOP"" FETCH cursor2 INTO;"" IF cursor2 % NOTFOUND THEN"" finished := 1;"" PRINTF('Loop now finished: all rows deleted');"" ELSE"" DELETE FROM TS_TABLE2"" WHERE CURRENT OF cursor2;"" END IF;"" END LOOP;"" CLOSE cursor2;"" "" SELECT COUNT(*), SUM(COL22) INTO int1, sum1"" FROM TS_TABLE2;"" PRINTF('Now table 2 has this many rows, and their sum is: ');"" PRINTF(int1); PRINTF(sum1);"" ASSERT((int1 = 0) AND (sum1 = 0));"" "" ROLLBACK WORK;"" "" SELECT COUNT(*), SUM(COL22) INTO int1, sum1"" FROM TS_TABLE2;"" "" PRINTF(int1); PRINTF(sum1);"" ASSERT((int1 = 10) AND (sum1 = 45));"" COMMIT WORK;"" DELETE FROM TS_TABLE2 WHERE COL22 = 5;"" SELECT COUNT(*), SUM(COL22) INTO int1, sum1"" FROM TS_TABLE2;"" PRINTF(int1); PRINTF(sum1);"" ASSERT((int1 = 9) AND (sum1 = 40));"" DELETE FROM TS_TABLE2 WHERE COL23 = TO_CHAR(6);"" SELECT COUNT(*), SUM(COL22) INTO int1, sum1"" FROM TS_TABLE2;"" PRINTF(int1);"" PRINTF(sum1);"" ASSERT((int1 = 8) AND (sum1 = 34));"" DELETE FROM TS_TABLE2 WHERE COL23 = TO_CHAR(6);"" SELECT COUNT(*), SUM(COL22) INTO int1, sum1"" FROM TS_TABLE2;"" PRINTF(int1);"" PRINTF(sum1);"" ASSERT((int1 = 8) AND (sum1 = 34));"" COMMIT WORK;"" END;" ); query->trx = trx; thr = UT_LIST_GET_FIRST(query->thrs); mutex_enter(&kernel_mutex); ut_a(thr == que_fork_start_command(query, SESS_COMM_EXECUTE, 0)); mutex_exit(&kernel_mutex); que_run_threads(thr); return(0);}#endif/********************************************************************Main test function. */void main(void) /*======*/{ ulint tm, oldtm; oldtm = ut_clock(); test_c(NULL); 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 + -