Hello Sergei! Sir please review the prototype at https://github.com/SachinSetiya/server/tree/unique_index_sachin this is half code I guess it will be complete by tomorrow Regards sachin
On Mon, May 2, 2016 at 8:42 PM, Sergei Golubchik <s...@mariadb.org> wrote: > Hi, Sachin! > > On May 02, Sachin Setia wrote: > > Hi Sergei! > > > > As i told you i was prototyping for hash table > > It is done around 90% apart from one thing when hash is same > > how to get record from .myd file when i have offset of record > > so currently i am skipping it > > But it is very fast i do not know why this is so fast here are > > results of employee database > > salary table definition > > CREATE TABLE salaries ( > > emp_no INT NOT NULL, > > salary blob NOT NULL, > > from_date DATE NOT NULL, > > to_date DATE NOT NULL, > > FOREIGN KEY (emp_no) REFERENCES employees (emp_no) ON DELETE CASCADE, > > PRIMARY KEY (emp_no, from_date) > > ) > > I presume, you had ENGINE=Aria here? Because your code patch is for Aria. > > > ; > > And query is > > MariaDB [employees]> select distinct salary from salaries; > > > > Result with out using hash table > > > > +--------+ > > 85814 rows in set (2 min 24.76 sec) > > > > > > Result with using hash table > > > > | 39420 | > > +--------+ > > 85809 rows in set (6.24 sec) > > > > ( number of rows are not equal but this can be solved if i get record by > > offset) > > > > I am sure there is something wrong.The whole hash table is in memory > > like wise the b tree of hash is in memory but why there is so much > > improvement. Please sir check the prototype and tell if i am wrong > > .thanks > > Sure. > > But still, please put your code on github and commit often. > Let's use a proper development process instead of sending patches back > and forth. If you need help with that, feel free to ping me on irc. > > And using // comments makes the code more difficult to review - you > change every line in a big block. Better use > > #if 0 > ... > #endif > > > diff --git a/storage/maria/ma_hash_table.h > b/storage/maria/ma_hash_table.h > > new file mode 100644 > > index 0000000..c8e4578 > > --- /dev/null > > +++ b/storage/maria/ma_hash_table.h > > why are you doing it in Aria? I thought we've agreed to do it on the > upper level, in sql/ > > > @@ -0,0 +1,45 @@ > > +#include"../../mysys/my_malloc.c" > > +#include"../../include/my_global.h" > > +typedef struct ma_hash_table_element{ > > + unsigned int hash_code; > > + unsigned int record_offset; > > + struct ma_hash_table * next; //we will use single link list > because no delete operations > > +} ma_hash_table_element; > > Did you look at reusing the HASH data structure? include/hash.h, > mysys/hash.c? > > > + > > +typedef struct ma_hash_table{ > > + unsigned int size; > > + ma_hash_table_element * h_t_e; > > +}ma_hash_table; > > Because of the above (on the wrong level, ma_hash_table instead of HASH, > using // comments to disable code) I've only quickly looked through the > patch. > But I didn't notice anything obviously wrong. > > Regards, > Sergei > Chief Architect MariaDB > and secur...@mariadb.org >
_______________________________________________ Mailing list: https://launchpad.net/~maria-developers Post to : maria-developers@lists.launchpad.net Unsubscribe : https://launchpad.net/~maria-developers More help : https://help.launchpad.net/ListHelp