Loading mysql-test/r/csv.result +47 −0 Original line number Diff line number Diff line Loading @@ -4929,3 +4929,50 @@ Warnings: Note 1051 Unknown table 't2' Note 1051 Unknown table 't3' Note 1051 Unknown table 't4' DROP TABLE IF EXISTS bug13894; CREATE TABLE bug13894 ( val integer ) ENGINE = CSV; INSERT INTO bug13894 VALUES (5); INSERT INTO bug13894 VALUES (10); INSERT INTO bug13894 VALUES (11); INSERT INTO bug13894 VALUES (10); SELECT * FROM bug13894; val 5 10 11 10 UPDATE bug13894 SET val=6 WHERE val=10; SELECT * FROM bug13894; val 5 11 6 6 DROP TABLE bug13894; DROP TABLE IF EXISTS bug14672; CREATE TABLE bug14672 (c1 integer) engine = CSV; INSERT INTO bug14672 VALUES (1), (2), (3); SELECT * FROM bug14672; c1 1 2 3 DELETE FROM bug14672 WHERE c1 = 2; SELECT * FROM bug14672; c1 1 3 INSERT INTO bug14672 VALUES (4); SELECT * FROM bug14672; c1 1 3 4 INSERT INTO bug14672 VALUES (5); SELECT * FROM bug14672; c1 1 3 4 5 DROP TABLE bug14672; mysql-test/t/csv.test +37 −0 Original line number Diff line number Diff line Loading @@ -1314,4 +1314,41 @@ select period from t1; drop table if exists t1,t2,t3,t4; # # Bug #13894 Server crashes on update of CSV table # --disable_warnings DROP TABLE IF EXISTS bug13894; --enable_warnings CREATE TABLE bug13894 ( val integer ) ENGINE = CSV; INSERT INTO bug13894 VALUES (5); INSERT INTO bug13894 VALUES (10); INSERT INTO bug13894 VALUES (11); INSERT INTO bug13894 VALUES (10); SELECT * FROM bug13894; UPDATE bug13894 SET val=6 WHERE val=10; SELECT * FROM bug13894; DROP TABLE bug13894; # # Bug #14672 Bug in deletion # --disable_warnings DROP TABLE IF EXISTS bug14672; --enable_warnings CREATE TABLE bug14672 (c1 integer) engine = CSV; INSERT INTO bug14672 VALUES (1), (2), (3); SELECT * FROM bug14672; DELETE FROM bug14672 WHERE c1 = 2; SELECT * FROM bug14672; INSERT INTO bug14672 VALUES (4); SELECT * FROM bug14672; INSERT INTO bug14672 VALUES (5); SELECT * FROM bug14672; DROP TABLE bug14672; # End of 4.1 tests sql/examples/ha_tina.cc +11 −11 Original line number Diff line number Diff line Loading @@ -59,11 +59,15 @@ static int tina_init= 0; *****************************************************************************/ /* Used for sorting chains. Used for sorting chains with qsort(). */ int sort_set (tina_set *a, tina_set *b) { return ( a->begin > b->begin ? 1 : ( a->begin < b->begin ? -1 : 0 ) ); /* We assume that intervals do not intersect. So, it is enought to compare any two points. Here we take start of intervals for comparison. */ return ( a->begin > b->begin ? -1 : ( a->begin < b->begin ? 1 : 0 ) ); } static byte* tina_get_key(TINA_SHARE *share,uint *length, Loading Loading @@ -162,7 +166,8 @@ static TINA_SHARE *get_share(const char *table_name, TABLE *table) thr_lock_init(&share->lock); pthread_mutex_init(&share->mutex,MY_MUTEX_INIT_FAST); if ((share->data_file= my_open(data_file_name, O_RDWR, MYF(0))) == -1) if ((share->data_file= my_open(data_file_name, O_RDWR|O_APPEND, MYF(0))) == -1) goto error2; /* We only use share->data_file for writing, so we scan to the end to append */ Loading Loading @@ -739,13 +744,8 @@ int ha_tina::rnd_end() qsort(chain, (size_t)(chain_ptr - chain), sizeof(tina_set), (qsort_cmp)sort_set); for (ptr= chain; ptr < chain_ptr; ptr++) { /* We peek a head to see if this is the last chain */ if (ptr+1 == chain_ptr) memmove(share->mapped_file + ptr->begin, share->mapped_file + ptr->end, length - (size_t)ptr->end); else memmove((caddr_t)share->mapped_file + ptr->begin, (caddr_t)share->mapped_file + ptr->end, (size_t)((ptr++)->begin - ptr->end)); length= length - (size_t)(ptr->end - ptr->begin); } Loading Loading
mysql-test/r/csv.result +47 −0 Original line number Diff line number Diff line Loading @@ -4929,3 +4929,50 @@ Warnings: Note 1051 Unknown table 't2' Note 1051 Unknown table 't3' Note 1051 Unknown table 't4' DROP TABLE IF EXISTS bug13894; CREATE TABLE bug13894 ( val integer ) ENGINE = CSV; INSERT INTO bug13894 VALUES (5); INSERT INTO bug13894 VALUES (10); INSERT INTO bug13894 VALUES (11); INSERT INTO bug13894 VALUES (10); SELECT * FROM bug13894; val 5 10 11 10 UPDATE bug13894 SET val=6 WHERE val=10; SELECT * FROM bug13894; val 5 11 6 6 DROP TABLE bug13894; DROP TABLE IF EXISTS bug14672; CREATE TABLE bug14672 (c1 integer) engine = CSV; INSERT INTO bug14672 VALUES (1), (2), (3); SELECT * FROM bug14672; c1 1 2 3 DELETE FROM bug14672 WHERE c1 = 2; SELECT * FROM bug14672; c1 1 3 INSERT INTO bug14672 VALUES (4); SELECT * FROM bug14672; c1 1 3 4 INSERT INTO bug14672 VALUES (5); SELECT * FROM bug14672; c1 1 3 4 5 DROP TABLE bug14672;
mysql-test/t/csv.test +37 −0 Original line number Diff line number Diff line Loading @@ -1314,4 +1314,41 @@ select period from t1; drop table if exists t1,t2,t3,t4; # # Bug #13894 Server crashes on update of CSV table # --disable_warnings DROP TABLE IF EXISTS bug13894; --enable_warnings CREATE TABLE bug13894 ( val integer ) ENGINE = CSV; INSERT INTO bug13894 VALUES (5); INSERT INTO bug13894 VALUES (10); INSERT INTO bug13894 VALUES (11); INSERT INTO bug13894 VALUES (10); SELECT * FROM bug13894; UPDATE bug13894 SET val=6 WHERE val=10; SELECT * FROM bug13894; DROP TABLE bug13894; # # Bug #14672 Bug in deletion # --disable_warnings DROP TABLE IF EXISTS bug14672; --enable_warnings CREATE TABLE bug14672 (c1 integer) engine = CSV; INSERT INTO bug14672 VALUES (1), (2), (3); SELECT * FROM bug14672; DELETE FROM bug14672 WHERE c1 = 2; SELECT * FROM bug14672; INSERT INTO bug14672 VALUES (4); SELECT * FROM bug14672; INSERT INTO bug14672 VALUES (5); SELECT * FROM bug14672; DROP TABLE bug14672; # End of 4.1 tests
sql/examples/ha_tina.cc +11 −11 Original line number Diff line number Diff line Loading @@ -59,11 +59,15 @@ static int tina_init= 0; *****************************************************************************/ /* Used for sorting chains. Used for sorting chains with qsort(). */ int sort_set (tina_set *a, tina_set *b) { return ( a->begin > b->begin ? 1 : ( a->begin < b->begin ? -1 : 0 ) ); /* We assume that intervals do not intersect. So, it is enought to compare any two points. Here we take start of intervals for comparison. */ return ( a->begin > b->begin ? -1 : ( a->begin < b->begin ? 1 : 0 ) ); } static byte* tina_get_key(TINA_SHARE *share,uint *length, Loading Loading @@ -162,7 +166,8 @@ static TINA_SHARE *get_share(const char *table_name, TABLE *table) thr_lock_init(&share->lock); pthread_mutex_init(&share->mutex,MY_MUTEX_INIT_FAST); if ((share->data_file= my_open(data_file_name, O_RDWR, MYF(0))) == -1) if ((share->data_file= my_open(data_file_name, O_RDWR|O_APPEND, MYF(0))) == -1) goto error2; /* We only use share->data_file for writing, so we scan to the end to append */ Loading Loading @@ -739,13 +744,8 @@ int ha_tina::rnd_end() qsort(chain, (size_t)(chain_ptr - chain), sizeof(tina_set), (qsort_cmp)sort_set); for (ptr= chain; ptr < chain_ptr; ptr++) { /* We peek a head to see if this is the last chain */ if (ptr+1 == chain_ptr) memmove(share->mapped_file + ptr->begin, share->mapped_file + ptr->end, length - (size_t)ptr->end); else memmove((caddr_t)share->mapped_file + ptr->begin, (caddr_t)share->mapped_file + ptr->end, (size_t)((ptr++)->begin - ptr->end)); length= length - (size_t)(ptr->end - ptr->begin); } Loading