diff options
author | unknown <monty@donna.mysql.fi> | 2001-05-23 23:47:08 +0300 |
---|---|---|
committer | unknown <monty@donna.mysql.fi> | 2001-05-23 23:47:08 +0300 |
commit | a542f858bf9f14da04f58223933b992749922d32 (patch) | |
tree | d871d522f4bdb89a0c46ec4f8d1428c0bafdbcc2 /sql/sql_class.h | |
parent | 4b799725034bd5f2d7cda76d8a5bcb3b42cb88f3 (diff) | |
download | mariadb-git-a542f858bf9f14da04f58223933b992749922d32.tar.gz |
Added Unique class to be used for duplicate removal in multi-table delete.
mysys/ptr_cmp.c:
Removed old comments
pstack/bucomm.c:
Change to use mkstemp.
sql/Makefile.am:
Added Unique class
sql/filesort.cc:
Changes to let the Unique class use the old filesort code.
sql/sql_class.h:
Added Unique class
sql/sql_handler.cc:
Removed warning.
sql/sql_select.cc:
Cleaned up typo.
Diffstat (limited to 'sql/sql_class.h')
-rw-r--r-- | sql/sql_class.h | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/sql/sql_class.h b/sql/sql_class.h index a67c0d13682..603e4bdeeb9 100644 --- a/sql/sql_class.h +++ b/sql/sql_class.h @@ -567,3 +567,32 @@ class user_var_entry Item_result type; }; +/* Class for unique (removing of duplicates) */ + +class Unique :public Sql_alloc +{ + DYNAMIC_ARRAY file_ptrs; + ulong max_elements, max_in_memory_size; + IO_CACHE file; + TREE tree; + char *record_pointers; + bool flush(); + +public: + ulong elements; + Unique(qsort_cmp2 comp_func, uint size, ulong max_in_memory_size_arg); + ~Unique(); + inline bool Unique::unique_add(gptr ptr) + { + if (tree.elements_in_tree > max_elements && flush()) + return 1; + return tree_insert(&tree,ptr,0); + } + + bool get(TABLE *table); + + friend int unique_write_to_file(gptr key, Unique *unique, + element_count count); + friend int unique_write_to_ptrs(gptr key, Unique *unique, + element_count count); +}; |