diff options
author | bell@sanja.is.com.ua <> | 2003-01-25 02:25:52 +0200 |
---|---|---|
committer | bell@sanja.is.com.ua <> | 2003-01-25 02:25:52 +0200 |
commit | d56e23f64e131c979f13965e65662ea76886c935 (patch) | |
tree | 043b4b5b889f0d8173b87b17f3de8dc3fbbb1dd2 /sql/sql_list.h | |
parent | 710881e4fbc3a4586507bbf1eb3a85a7adfe0048 (diff) | |
download | mariadb-git-d56e23f64e131c979f13965e65662ea76886c935.tar.gz |
fixed subselects with temporary tables (SCRUM)
fixed memory leacks
Diffstat (limited to 'sql/sql_list.h')
-rw-r--r-- | sql/sql_list.h | 17 |
1 files changed, 14 insertions, 3 deletions
diff --git a/sql/sql_list.h b/sql/sql_list.h index 56e6528f214..c9f569accf6 100644 --- a/sql/sql_list.h +++ b/sql/sql_list.h @@ -147,12 +147,20 @@ protected: class base_list_iterator { +protected: base_list *list; list_node **el,**prev,*current; + void sublist(base_list &ls, uint elm) + { + ls.first= *el; + ls.last= list->last; + ls.elements= elm; + } public: - base_list_iterator(base_list &list_par) :list(&list_par),el(&list_par.first), - prev(0),current(0) + base_list_iterator(base_list &list_par) + :list(&list_par), el(&list_par.first), prev(0), current(0) {} + inline void *next(void) { prev=el; @@ -212,7 +220,6 @@ public: friend class error_list_iterator; }; - template <class T> class List :public base_list { public: @@ -260,6 +267,10 @@ public: List_iterator_fast(List<T> &a) : base_list_iterator(a) {} inline T* operator++(int) { return (T*) base_list_iterator::next_fast(); } inline void rewind(void) { base_list_iterator::rewind(); } + void sublist(List<T> &list, uint el) + { + base_list_iterator::sublist(list, el); + } }; |