summaryrefslogtreecommitdiff
path: root/sql/sql_class.h
diff options
context:
space:
mode:
authorunknown <monty@donna.mysql.fi>2001-05-23 23:47:08 +0300
committerunknown <monty@donna.mysql.fi>2001-05-23 23:47:08 +0300
commita542f858bf9f14da04f58223933b992749922d32 (patch)
treed871d522f4bdb89a0c46ec4f8d1428c0bafdbcc2 /sql/sql_class.h
parent4b799725034bd5f2d7cda76d8a5bcb3b42cb88f3 (diff)
downloadmariadb-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.h29
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);
+};