diff options
author | unknown <monty@mashka.mysql.fi> | 2004-02-22 11:01:28 +0200 |
---|---|---|
committer | unknown <monty@mashka.mysql.fi> | 2004-02-22 11:01:28 +0200 |
commit | 089e573beddc17160d8fa1409e32165a56bfcec0 (patch) | |
tree | 5cbf5acd9871f4013aae8ed412d72912dbc4706f /innobase/rem | |
parent | 490e2fd740eade3cb13527912ffaf4c18726b719 (diff) | |
parent | c7c7cb78141f6be7a2e10e2195f4e0d1fc6ffa29 (diff) | |
download | mariadb-git-089e573beddc17160d8fa1409e32165a56bfcec0.tar.gz |
Merge bk-internal.mysql.com:/home/bk/mysql-4.1
into mashka.mysql.fi:/home/my/mysql-4.1
innobase/rem/rem0cmp.c:
Auto merged
libmysql/libmysql.c:
Auto merged
sql-common/client.c:
Auto merged
sql/ha_innodb.cc:
Auto merged
sql/sql_base.cc:
Auto merged
Diffstat (limited to 'innobase/rem')
-rw-r--r-- | innobase/rem/rem0cmp.c | 2 | ||||
-rw-r--r-- | innobase/rem/ts/makefile | 16 | ||||
-rw-r--r-- | innobase/rem/ts/tsrem.c | 464 |
3 files changed, 1 insertions, 481 deletions
diff --git a/innobase/rem/rem0cmp.c b/innobase/rem/rem0cmp.c index 86818168db9..fb8732f35be 100644 --- a/innobase/rem/rem0cmp.c +++ b/innobase/rem/rem0cmp.c @@ -58,7 +58,7 @@ cmp_debug_dtuple_rec_with_match( This function is used to compare two data fields for which the data type is such that we must use MySQL code to compare them. The prototype here must be a copy of the the one in ha_innobase.cc! */ - +extern int innobase_mysql_cmp( /*===============*/ diff --git a/innobase/rem/ts/makefile b/innobase/rem/ts/makefile deleted file mode 100644 index c429afa273e..00000000000 --- a/innobase/rem/ts/makefile +++ /dev/null @@ -1,16 +0,0 @@ - - - -include ..\..\makefile.i - -tsrem: ..\rem.lib tsrem.c - $(CCOM) $(CFL) -I.. -I..\.. ..\rem.lib ..\..\page.lib ..\..\mtr.lib ..\..\btr.lib ..\..\log.lib ..\..\dyn.lib ..\..\fil.lib ..\..\buf.lib ..\..\dict.lib ..\..\data.lib ..\..\mach.lib ..\..\ha.lib ..\..\ut.lib ..\..\sync.lib ..\..\mem.lib ..\..\os.lib tsrem.c $(LFL) - - - - - - - - - diff --git a/innobase/rem/ts/tsrem.c b/innobase/rem/ts/tsrem.c deleted file mode 100644 index 4f2bdde0068..00000000000 --- a/innobase/rem/ts/tsrem.c +++ /dev/null @@ -1,464 +0,0 @@ -/************************************************************************ -The test for the record manager - -(c) 1994-1996 Innobase Oy - -Created 1/25/1994 Heikki Tuuri -*************************************************************************/ - -#include "sync0sync.h" -#include "mem0mem.h" -#include "data0data.h" -#include "data0type.h" -#include "dict0dict.h" -#include "buf0buf.h" -#include "fil0fil.h" -#include "../rem0rec.h" -#include "../rem0cmp.h" - -byte buf1[100000]; - -/********************************************************************* -Test for data tuples. */ - -void -test1(void) -/*=======*/ -{ - dtype_t* type; - dtuple_t* tuple, *tuple2; - dfield_t* field; - mem_heap_t* heap; - ulint i, j; - ulint n; - char* p_Pascal; - char* p_Cobol; - - heap = mem_heap_create(0); - - printf("-------------------------------------------\n"); - printf("DATA TUPLE-TEST 1. Basic tests.\n"); - - tuple = dtuple_create(heap, 2); - - field = dtuple_get_nth_field(tuple, 0); - dfield_set_data(field, "Pascal", 7); - dtype_set(dfield_get_type(field), DATA_CHAR, DATA_ENGLISH, 7, 0); - - field = dtuple_get_nth_field(tuple, 1); - dfield_set_data(field, "Cobol", 6); - dtype_set(dfield_get_type(field), DATA_CHAR, DATA_ENGLISH, 6, 0); - - dtuple_validate(tuple); - dtuple_print(tuple); - - tuple2 = dtuple_create(heap, 10); - - for (i = 0; i < 10; i++) { - field = dtuple_get_nth_field(tuple2, i); - dfield_set_data(field, NULL, UNIV_SQL_NULL); - dtype_set(dfield_get_type(field), DATA_CHAR, DATA_ENGLISH, - 6, 0); - } - - dtuple_print(tuple2); - - printf("-------------------------------------------\n"); - printf("DATA TUPLE-TEST 2. Accessor function tests.\n"); - - tuple = dtuple_create(heap, 2); - - p_Pascal = "Pascal"; - p_Cobol = "Cobol"; - - field = dtuple_get_nth_field(tuple, 0); - dfield_set_data(field, p_Pascal, 7); - dtype_set(dfield_get_type(field), DATA_CHAR, DATA_ENGLISH, 7, 0); - - field = dtuple_get_nth_field(tuple, 1); - dfield_set_data(field, p_Cobol, 6); - dtype_set(dfield_get_type(field), DATA_VARCHAR, DATA_ENGLISH, 16, 3); - - ut_a(dtuple_get_n_fields(tuple) == 2); - - field = dtuple_get_nth_field(tuple, 0); - ut_a(p_Pascal == dfield_get_data(field)); - ut_a(7 == dfield_get_len(field)); - type = dfield_get_type(field); - ut_a(type->mtype == DATA_CHAR); - ut_a(type->prtype == DATA_ENGLISH); - ut_a(type->len == 7); - ut_a(type->prec == 0); - - field = dtuple_get_nth_field(tuple, 1); - ut_a(p_Cobol == dfield_get_data(field)); - ut_a(6 == dfield_get_len(field)); - type = dfield_get_type(field); - ut_a(type->mtype == DATA_VARCHAR); - ut_a(type->prtype == DATA_ENGLISH); - ut_a(type->len == 16); - ut_a(type->prec == 3); - - printf("-------------------------------------------\n"); - printf("DATA TYPE-TEST 3. Other function tests\n"); - - ut_a(dtuple_get_data_size(tuple) == 13); - - ut_a(dtuple_fold(tuple, 2) == dtuple_fold(tuple, 2)); - ut_a(dtuple_fold(tuple, 1) != dtuple_fold(tuple, 2)); - - printf("-------------------------------------------\n"); - printf("DATA TUPLE-TEST 4. Random tuple generation test\n"); - - for (i = 0; i < 500; i++) { - tuple = dtuple_gen_rnd_tuple(heap); - printf("%lu ", i); - - dtuple_validate(tuple); - n = dtuple_get_n_fields(tuple); - - if (n < 25) { - tuple2 = dtuple_create(heap, n); - for (j = 0; j < n; j++) { - dfield_copy( - dtuple_get_nth_field(tuple2, j), - dtuple_get_nth_field(tuple, j)); - } - dtuple_validate(tuple2); - - ut_a(dtuple_fold(tuple, n) == - dtuple_fold(tuple2, n)); - } - } - - mem_print_info(); - mem_heap_free(heap); -} - -/********************************************************************** -Test for physical records. */ - -void -test2(void) -/*=======*/ -{ - dtuple_t* tuple, *tuple2; - dfield_t* field; - mem_heap_t* heap; - ulint i, n; - char* p_Pascal; - char* p_Cobol; - rec_t* rec, *rec2; - byte* data; - ulint len; - byte* buf; - - heap = mem_heap_create(0); - - printf("-------------------------------------------\n"); - printf("REC-TEST 1. Basic tests.\n"); - - tuple = dtuple_create(heap, 2); - - p_Pascal = "Pascal"; - p_Cobol = "Cobol"; - - field = dtuple_get_nth_field(tuple, 0); - dfield_set_data(field, "Pascal", 7); - dtype_set(dfield_get_type(field), DATA_CHAR, DATA_ENGLISH, 7, 0); - - field = dtuple_get_nth_field(tuple, 1); - dfield_set_data(field, "Cobol", 6); - dtype_set(dfield_get_type(field), DATA_CHAR, DATA_ENGLISH, 6, 0); - - tuple2 = dtuple_create(heap, 37); - - for (i = 0; i < 37; i++) { - field = dtuple_get_nth_field(tuple2, i); - dfield_set_data(field, NULL, UNIV_SQL_NULL); - dtype_set(dfield_get_type(field), DATA_CHAR, - DATA_ENGLISH, 6, 0); - } - - rec = rec_convert_dtuple_to_rec(buf1, tuple); - - rec_validate(rec); - rec_print(rec); - - rec2 = rec_convert_dtuple_to_rec(buf1 + 1000, tuple2); - - rec_validate(rec2); - - data = rec_get_nth_field(rec, 0, &len); - - ut_a(0 == memcmp(p_Pascal, data, 7)); - ut_a(len == 7); - - data = rec_get_nth_field(rec, 1, &len); - - ut_a(0 == memcmp(p_Cobol, data, 6)); - ut_a(len == 6); - - ut_a(2 == rec_get_n_fields(rec)); - - for (i = 0; i < 37; i++) { - data = rec_get_nth_field(rec2, i, &len); - ut_a(len == UNIV_SQL_NULL); - } - - printf("-------------------------------------------\n"); - printf("REC-TEST 2. Test of accessor functions\n"); - - rec_set_next_offs(rec, 8190); - rec_set_n_owned(rec, 15); - rec_set_heap_no(rec, 0); - - ut_a(rec_get_next_offs(rec) == 8190); - ut_a(rec_get_n_owned(rec) == 15); - ut_a(rec_get_heap_no(rec) == 0); - - rec_set_next_offs(rec, 1); - rec_set_n_owned(rec, 1); - rec_set_heap_no(rec, 8190); - - ut_a(rec_get_next_offs(rec) == 1); - ut_a(rec_get_n_owned(rec) == 1); - ut_a(rec_get_heap_no(rec) == 8190); - - buf = mem_heap_alloc(heap, 6); - - rec_copy_nth_field(buf, rec, 1, &len); - - ut_a(ut_memcmp(p_Cobol, buf, len) == 0); - ut_a(len == 6); - - rec_set_nth_field(rec, 1, "Algol", 6); - - rec_validate(rec); - - rec_copy_nth_field(buf, rec, 1, &len); - - ut_a(ut_memcmp("Algol", buf, len) == 0); - ut_a(len == 6); - - ut_a(rec_get_data_size(rec) == 13); - ut_a((ulint)(rec_get_end(rec) - rec) == 13); - ut_a(14 == (ulint)(rec - rec_get_start(rec))); - - ut_a(rec_get_size(rec) == 27); - - mem_heap_free(heap); - - printf("-------------------------------------------\n"); - printf("REC-TEST 3. Massive test of conversions \n"); - - heap = mem_heap_create(0); - - for (i = 0; i < 100; i++) { - - tuple = dtuple_gen_rnd_tuple(heap); - - if (i % 10 == 0) { - printf("%lu ", i); - } - - if (i % 10 == 0) { - printf( - "data tuple generated: %lu fields, data size %lu\n", - dtuple_get_n_fields(tuple), - dtuple_get_data_size(tuple)); - } - - dtuple_validate(tuple); - - rec = rec_convert_dtuple_to_rec(buf1, tuple); - - rec_validate(rec); - - n = dtuple_get_n_fields(tuple); - - ut_a(cmp_dtuple_rec_prefix_equal(tuple, rec, n)); - ut_a(dtuple_fold(tuple, n) == rec_fold(rec, n)); - ut_a(rec_get_converted_size(tuple) == rec_get_size(rec)); - ut_a(rec_get_data_size(rec) == dtuple_get_data_size(tuple)); - } - - mem_print_info(); - mem_heap_free(heap); -} - -/********************************************************************** -Test for comparisons. */ - -void -test3(void) -/*=======*/ -{ - dtuple_t* tuple, *tuple2, *tuple3; - dfield_t* field; - mem_heap_t* heap; - ulint i, j; - ulint field_match, byte_match; - rec_t* rec; - rec_t* rec2; - ulint tm, oldtm; - dict_index_t* index; - dict_table_t* table; - - heap = mem_heap_create(0); - - printf("-------------------------------------------\n"); - printf("CMP-TEST 1. Basic tests.\n"); - - tuple = dtuple_create(heap, 2); - - field = dtuple_get_nth_field(tuple, 0); - dfield_set_data(field, "Pascal", 7); - dtype_set(dfield_get_type(field), DATA_CHAR, DATA_ENGLISH, 7, 0); - - field = dtuple_get_nth_field(tuple, 1); - dfield_set_data(field, "Cobol", 6); - dtype_set(dfield_get_type(field), DATA_CHAR, DATA_ENGLISH, 6, 0); - - tuple2 = dtuple_create(heap, 2); - - field = dtuple_get_nth_field(tuple2, 0); - dfield_set_data(field, "Pascal", 7); - dtype_set(dfield_get_type(field), DATA_CHAR, DATA_ENGLISH, 7, 0); - - field = dtuple_get_nth_field(tuple2, 1); - dfield_set_data(field, "Cobom", 6); - dtype_set(dfield_get_type(field), DATA_CHAR, DATA_ENGLISH, 6, 0); - - tuple3 = dtuple_create(heap, 2); - - field = dtuple_get_nth_field(tuple3, 0); - dfield_set_data(field, "PaSCal", 7); - dtype_set(dfield_get_type(field), DATA_CHAR, DATA_ENGLISH, 7, 0); - - field = dtuple_get_nth_field(tuple3, 1); - dfield_set_data(field, "CobOL", 6); - dtype_set(dfield_get_type(field), DATA_CHAR, DATA_ENGLISH, 6, 0); - - rec = rec_convert_dtuple_to_rec(buf1, tuple); - - rec_validate(rec); - - ut_a(!cmp_dtuple_rec_prefix_equal(tuple2, rec, 2)); - ut_a(cmp_dtuple_rec_prefix_equal(tuple, rec, 2)); - ut_a(cmp_dtuple_rec_prefix_equal(tuple3, rec, 2)); - - oldtm = ut_clock(); - j = 0; - for (i = 0; i < 1000; i++) { - field_match = 1; - byte_match = 4; - if (1 == cmp_dtuple_rec_with_match(tuple2, rec, - &field_match, &byte_match)) { - j++; - } - } - tm = ut_clock(); - printf("Time for fast comp. %lu records = %lu\n", j, tm - oldtm); - - ut_a(field_match == 1); - ut_a(byte_match == 4); - - oldtm = ut_clock(); - j = 0; - for (i = 0; i < 1000; i++) { - field_match = 0; - byte_match = 0; - if (1 == cmp_dtuple_rec_with_match(tuple2, rec, - &field_match, &byte_match)) { - j++; - } - } - tm = ut_clock(); - printf("Time for test comp. %lu records = %lu\n", j, tm - oldtm); - - ut_a(field_match == 1); - ut_a(byte_match == 4); - - printf("-------------------------------------------\n"); - printf( - "CMP-TEST 2. A systematic test of comparisons and conversions\n"); - - tuple = dtuple_create(heap, 3); - tuple2 = dtuple_create(heap, 3); - - table = dict_table_create("TS_TABLE1", 3); - - dict_table_add_col(table, "COL1", DATA_VARCHAR, DATA_ENGLISH, 10, 0); - dict_table_add_col(table, "COL2", DATA_VARCHAR, DATA_ENGLISH, 10, 0); - dict_table_add_col(table, "COL3", DATA_VARCHAR, DATA_ENGLISH, 10, 0); - - ut_a(0 == dict_table_publish(table)); - - index = dict_index_create("TS_TABLE1", "IND1", 0, 3, 0); - - dict_index_add_field(index, "COL1", 0); - dict_index_add_field(index, "COL2", 0); - dict_index_add_field(index, "COL3", 0); - - ut_a(0 == dict_index_publish(index)); - - index = dict_index_get("TS_TABLE1", "IND1"); - ut_a(index); - - /* Compare all test data tuples to each other */ - for (i = 0; i < 512; i++) { - dtuple_gen_test_tuple(tuple, i); - rec = rec_convert_dtuple_to_rec(buf1, tuple); - ut_a(rec_validate(rec)); - - ut_a(0 == cmp_dtuple_rec(tuple, rec)); - - for (j = 0; j < 512; j++) { - dtuple_gen_test_tuple(tuple2, j); - ut_a(dtuple_validate(tuple2)); - - rec2 = rec_convert_dtuple_to_rec(buf1 + 500, tuple2); - - if (j < i) { - ut_a(-1 == cmp_dtuple_rec(tuple2, rec)); - ut_a(-1 == cmp_rec_rec(rec2, rec, index)); - } else if (j == i) { - ut_a(0 == cmp_dtuple_rec(tuple2, rec)); - ut_a(0 == cmp_rec_rec(rec2, rec, index)); - } else if (j > i) { - ut_a(1 == cmp_dtuple_rec(tuple2, rec)); - ut_a(1 == cmp_rec_rec(rec2, rec, index)); - } - } - } - mem_heap_free(heap); -} - -/******************************************************************** -Main test function. */ - -void -main(void) -/*======*/ -{ - ulint tm, oldtm; - - sync_init(); - mem_init(); - fil_init(25); - buf_pool_init(100, 100); - dict_init(); - - oldtm = ut_clock(); - - ut_rnd_set_seed(19); - - test1(); - test2(); - test3(); - - tm = ut_clock(); - printf("CPU time for test %lu microseconds\n", tm - oldtm); - printf("TESTS COMPLETED SUCCESSFULLY!\n"); -} |