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.
This commit is contained in:
unknown 2001-05-23 23:47:08 +03:00
commit a542f858bf
9 changed files with 308 additions and 69 deletions

View file

@ -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);
};