summaryrefslogtreecommitdiff
path: root/innobase/btr/ts/trash/TSIT.C
diff options
context:
space:
mode:
Diffstat (limited to 'innobase/btr/ts/trash/TSIT.C')
-rw-r--r--innobase/btr/ts/trash/TSIT.C483
1 files changed, 483 insertions, 0 deletions
diff --git a/innobase/btr/ts/trash/TSIT.C b/innobase/btr/ts/trash/TSIT.C
new file mode 100644
index 00000000000..775d4036c6d
--- /dev/null
+++ b/innobase/btr/ts/trash/TSIT.C
@@ -0,0 +1,483 @@
+/************************************************************************
+The test module for the record manager of MVB.
+
+(c) 1994 Heikki Tuuri
+
+Created 1/25/1994 Heikki Tuuri
+*************************************************************************/
+
+
+#include "rm0phr.h"
+#include "rm0lgr.h"
+#include "ut0ut.h"
+#include "buf0mem.h"
+#include "rm0ipg.h"
+#include "../it0it.h"
+#include "../it0hi.h"
+#include "../it0ads.h"
+
+byte buf[100];
+byte buf2[100];
+lint lintbuf[2048];
+
+byte numbuf[6000];
+byte numlogrecbuf[100];
+phr_record_t* qs_table[100000];
+
+lint qs_comp = 0;
+
+extern
+void
+test1(void);
+
+#ifdef NOT_DEFINED
+
+void
+q_sort(lint low, lint up)
+{
+ phr_record_t* temp, *pivot;
+ lint i, j;
+
+
+ pivot = qs_table[(low + up) / 2];
+
+ i = low;
+ j = up;
+
+ while (i < j) {
+ qs_comp++;
+ if (cmp_phr_compare(qs_table[i], pivot)<= 0) {
+ i++;
+ } else {
+ j--;
+ temp = qs_table[i];
+ qs_table[i] = qs_table[j];
+ qs_table[j] = temp;
+ }
+ }
+
+ if (j == up) {
+ temp = qs_table[(low + up) / 2];
+ qs_table[(low + up) / 2] = qs_table[up - 1];
+ qs_table[up - 1] = temp;
+ j--;
+ }
+
+
+ if (j - low <= 1) {
+ /* do nothing */
+ } else if (j - low == 2) {
+ qs_comp++;
+ if (cmp_phr_compare(qs_table[low],
+ qs_table[low + 1])
+ <= 0) {
+ /* do nothing */
+ } else {
+ temp = qs_table[low];
+ qs_table[low] = qs_table[low + 1];
+ qs_table[low + 1] = temp;
+ }
+ } else {
+ q_sort(low, j);
+ }
+
+ if (up - j <= 1) {
+ /* do nothing */
+ } else if (up - j == 2) {
+ qs_comp++;
+ if (cmp_phr_compare(qs_table[j],
+ qs_table[j + 1])
+ <= 0) {
+ /* do nothing */
+ } else {
+ temp = qs_table[j];
+ qs_table[j] = qs_table[j + 1];
+ qs_table[j + 1] = temp;
+ }
+ } else {
+ q_sort(j, up);
+ }
+}
+
+#endif
+
+extern
+void
+test1(void)
+{
+ phr_record_t* physrec;
+ phr_record_t* rec1;
+ phr_record_t* rec2;
+ lgr_record_t* logrec;
+ lgrf_field_t* logfield;
+ lint len;
+ byte* str;
+ lint len2;
+ lint tm;
+ lint oldtm;
+ lint i, j, k, l, m;
+ bool b;
+ it_cur_cursor_t cursor;
+ ipg_cur_cursor_t* page_cursor;
+ ipg_page_t* page;
+
+ byte c4, c3, c2, c1, c0;
+ lint rand, rnd1, rnd2;
+ byte* nb;
+ lgr_record_t* numlogrec;
+ byte* pgbuf;
+ mem_stream_t* stream;
+ lint tree1, tree2, tree3;
+ lint dummy1, dummy2;
+
+ pgbuf = (byte*)lintbuf;
+
+ stream = mem_stream_create(0);
+
+ printf("-------------------------------------------\n");
+ printf("TEST 1. Speed and basic tests.\n");
+
+ logrec = lgr_create_logical_record(stream, 2);
+
+ nb = numbuf;
+
+ c4 = '0';
+ c3 = '0';
+ for (c2 = '0'; c2 <= '9'; c2++) {
+ for (c1 = '0'; c1 <= '9'; c1++) {
+ for (c0 = '0'; c0 <= '9'; c0++) {
+ *nb = c4; nb++;
+ *nb = c3; nb++;
+ *nb = c2; nb++;
+ *nb = c1; nb++;
+ *nb = c0; nb++;
+ *nb = '\0'; nb++;
+ }
+ }
+ }
+
+ numlogrec = lgr_create_logical_record(stream, 2);
+
+
+ tree1 = it_create_index_tree();
+
+ oldtm = ut_clock();
+
+ rand = 99900;
+ rnd1 = 67;
+ for (j = 0; j < 1; j++) {
+ for (i = 0 ; i < 100000; i++) {
+
+ rand = (rand + 1) % 100000;
+
+ logfield = lgr_get_nth_field(numlogrec, 0);
+ lgrf_set_data(logfield, numbuf + 6 * (rand / 300));
+ lgrf_set_len(logfield, 6);
+
+ logfield = lgr_get_nth_field(numlogrec, 1);
+ lgrf_set_data(logfield, numbuf + 6 * (rand % 300));
+ lgrf_set_len(logfield, 6);
+/*
+ it_insert(tree1, numlogrec);
+*/
+
+
+
+ it_cur_search_tree_to_nth_level(tree1, 1, numlogrec,
+ IPG_SE_L_GE, &cursor, &dummy1, &dummy2);
+
+/*
+ it_cur_set_to_first(tree1, &cursor);
+*/
+
+ it_cur_insert_record(&cursor, numlogrec);
+
+ }
+ }
+ tm = ut_clock();
+ printf("Time for inserting %ld recs = %ld \n", i* j, tm - oldtm);
+
+/* it_print_tree(tree1, 10);*/
+ hi_print_info();
+ ads_print_info();
+/*
+ oldtm = ut_clock();
+
+ rand = 11113;
+ for (i = 0; i < 5000; i++) {
+
+ rand = (rand + 57123) % 100000;
+
+ logfield = lgr_get_nth_field(numlogrec, 0);
+ lgrf_set_data(logfield, numbuf + 6 * (rand / 300));
+ lgrf_set_len(logfield, 6);
+
+ logfield = lgr_get_nth_field(numlogrec, 1);
+ lgrf_set_data(logfield, numbuf + 6 * (rand % 300));
+ lgrf_set_len(logfield, 6);
+
+ it_cur_search_tree_to_nth_level(tree1, 1, numlogrec,
+ IPG_SE_L_GE, &cursor, &dummy1, &dummy2);
+
+ }
+ tm = ut_clock();
+ printf("Time for searching %ld recs = %ld \n", i, tm - oldtm);
+*/
+
+ it_cur_set_to_first(tree1, &cursor);
+
+ rec1 = ipg_cur_get_record(it_cur_get_page_cursor(&cursor));
+
+ for (i = 0;; i++) {
+ it_cur_move_to_next(&cursor);
+ if (it_cur_end_of_level(&cursor)) {
+ break;
+ }
+ rec2 = ipg_cur_get_record(it_cur_get_page_cursor(&cursor));
+ ut_a(cmp_phr_compare(rec1, rec2) == -1);
+ rec1 = rec2;
+ }
+
+ printf("tree1 checked for right sorted order!\n");
+
+#ifdef not_defined
+
+ oldtm = ut_clock();
+
+ for (j = 0; j < 1; j++) {
+ rand = 11113;
+ for (i = 0; i < 3000; i++) {
+
+ rand = (rand + 57123) % 100000;
+
+ logfield = lgr_get_nth_field(numlogrec, 0);
+ lgrf_set_data(logfield, numbuf + 6 * (rand / 300));
+ lgrf_set_len(logfield, 6);
+
+ logfield = lgr_get_nth_field(numlogrec, 1);
+ lgrf_set_data(logfield, numbuf + 6 * (rand % 300));
+ lgrf_set_len(logfield, 6);
+
+ physrec = hi_search(numlogrec);
+
+ ut_a(physrec);
+ }
+
+ }
+ ut_a(physrec);
+ tm = ut_clock();
+ printf("Time for hi_search %ld recs = %ld \n", i * j,
+ tm - oldtm);
+
+
+
+ oldtm = ut_clock();
+
+ for (i = 0; i < 100000; i++) {
+/* j += lgr_fold(numlogrec, -1, -1);*/
+/* b += phr_lgr_equal(physrec, numlogrec, -1);*/
+ k += ut_hash_lint(j, HI_TABLE_SIZE);
+ }
+
+
+/* ut_a(b);*/
+ tm = ut_clock();
+ printf("Time for fold + equal %ld recs %s = %ld \n", i, physrec,
+ tm - oldtm);
+
+ printf("%ld %ld %ld\n", j, b, k);
+
+ hi_print_info();
+
+ tree2 = it_create_index_tree();
+
+ rand = 90000;
+ for (i = 0; i < 300; i++) {
+
+ rand = (rand + 1) % 100000;
+
+ logfield = lgr_get_nth_field(numlogrec, 0);
+ lgrf_set_data(logfield, numbuf + 6 * (rand / 300));
+ lgrf_set_len(logfield, 6);
+
+ logfield = lgr_get_nth_field(numlogrec, 1);
+ lgrf_set_data(logfield, numbuf + 6 * (rand % 300));
+ lgrf_set_len(logfield, 6);
+
+ it_cur_search_tree_to_nth_level(tree2, 1, numlogrec,
+ IPG_SE_L_GE, &cursor);
+
+ it_cur_insert_record(&cursor, numlogrec);
+
+ }
+
+ oldtm = ut_clock();
+
+ rand = 10000;
+ for (i = 0; i < 3000; i++) {
+
+ rand = (rand + 1) % 100000;
+
+ logfield = lgr_get_nth_field(numlogrec, 0);
+ lgrf_set_data(logfield, numbuf + 6 * (rand / 300));
+ lgrf_set_len(logfield, 6);
+
+ logfield = lgr_get_nth_field(numlogrec, 1);
+ lgrf_set_data(logfield, numbuf + 6 * (rand % 300));
+ lgrf_set_len(logfield, 6);
+
+ it_cur_search_tree_to_nth_level(tree2, 1, numlogrec,
+ IPG_SE_L_GE, &cursor);
+
+ it_cur_insert_record(&cursor, numlogrec);
+
+ }
+ tm = ut_clock();
+ printf("Time for inserting sequentially %ld recs = %ld \n",
+ i, tm - oldtm);
+
+
+/* it_print_tree(tree2, 10); */
+
+
+ tree3 = it_create_index_tree();
+
+ rand = 0;
+ for (i = 0; i < 300; i++) {
+
+ rand = (rand + 1) % 100000;
+
+ logfield = lgr_get_nth_field(numlogrec, 0);
+ lgrf_set_data(logfield, numbuf + 6 * (rand / 300));
+ lgrf_set_len(logfield, 6);
+
+ logfield = lgr_get_nth_field(numlogrec, 1);
+ lgrf_set_data(logfield, numbuf + 6 * (rand % 300));
+ lgrf_set_len(logfield, 6);
+
+ it_cur_search_tree_to_nth_level(tree3, 1, numlogrec,
+ IPG_SE_L_GE, &cursor);
+
+ it_cur_insert_record(&cursor, numlogrec);
+
+ }
+
+ oldtm = ut_clock();
+
+ rand = 100000;
+ for (i = 0; i < 3000; i++) {
+
+ rand = (rand - 1) % 100000;
+
+ logfield = lgr_get_nth_field(numlogrec, 0);
+ lgrf_set_data(logfield, numbuf + 6 * (rand / 300));
+ lgrf_set_len(logfield, 6);
+
+ logfield = lgr_get_nth_field(numlogrec, 1);
+ lgrf_set_data(logfield, numbuf + 6 * (rand % 300));
+ lgrf_set_len(logfield, 6);
+
+ it_cur_search_tree_to_nth_level(tree3, 1, numlogrec,
+ IPG_SE_L_GE, &cursor);
+
+ it_cur_insert_record(&cursor, numlogrec);
+
+ }
+ tm = ut_clock();
+ printf("Time for inserting sequentially downw. %ld recs = %ld \n",
+ i, tm - oldtm);
+
+
+/* it_print_tree(tree3, 10); */
+
+#endif
+
+}
+
+#ifdef NOT_DEFINED
+
+/* Test of quicksort */
+void
+test2(void)
+{
+ mem_stream_t* stream;
+ byte* stbuf;
+ lgrf_field_t* logfield;
+ lint tm;
+ lint oldtm;
+ lint i, j, k, l, m;
+ lint rand;
+ lgr_record_t* numlogrec;
+ phr_record_t* ph_rec;
+
+ stream = mem_stream_create(1000);
+
+ numlogrec = lgr_create_logical_record(stream, 2);
+
+ oldtm = ut_clock();
+
+ rand = 11113;
+ for (i = 0; i < 50000; i++) {
+ stbuf = mem_stream_alloc(stream, 30);
+
+ rand = (rand + 57123) % 100000;
+
+ logfield = lgr_get_nth_field(numlogrec, 0);
+ lgrf_set_data(logfield, numbuf + 6 * (rand / 300));
+ lgrf_set_len(logfield, 6);
+
+ logfield = lgr_get_nth_field(numlogrec, 1);
+ lgrf_set_data(logfield, numbuf + 6 * (rand % 300));
+ lgrf_set_len(logfield, 6);
+
+ ph_rec = phr_create_physical_record(stbuf, 30, numlogrec);
+
+ qs_table[i] = ph_rec;
+
+ }
+ tm = ut_clock();
+ printf("Time for inserting %ld recs to mem stream = %ld \n",
+ i, tm - oldtm);
+
+
+ oldtm = ut_clock();
+
+ q_sort(0, 50000);
+
+ tm = ut_clock();
+ printf("Time for quicksort of %ld recs = %ld, comps: %ld \n",
+ i, tm - oldtm, qs_comp);
+
+
+
+ for (i = 1; i < 49999; i++) {
+ ut_a(-1 ==
+ cmp_phr_compare(qs_table[i], qs_table[i+1]
+ ));
+ }
+ tm = ut_clock();
+
+
+ oldtm = ut_clock();
+ for (i = 1; i < 50000; i++) {
+ k += cmp_phr_compare(qs_table[i & 0xF],
+ qs_table[5]);
+ }
+ tm = ut_clock();
+ printf("%ld\n", k);
+
+ printf("Time for cmp of %ld ph_recs = %ld \n",
+ i, tm - oldtm);
+
+ mem_stream_free(stream);
+
+}
+#endif
+
+void
+main(void)
+{
+ test1();
+/* test2(); */
+}
+