Merge lp:~vjsamuel/drizzle/convert-rollup-to-class into lp:drizzle/7.0

Proposed by Vijay Samuel
Status: Merged
Approved by: Brian Aker
Approved revision: 2084
Merged at revision: 2096
Proposed branch: lp:~vjsamuel/drizzle/convert-rollup-to-class
Merge into: lp:drizzle/7.0
Diff against target: 286 lines (+93/-30)
4 files modified
drizzled/join.cc (+24/-23)
drizzled/join.h (+3/-3)
drizzled/sql_select.cc (+2/-2)
drizzled/sql_select.h (+64/-2)
To merge this branch: bzr merge lp:~vjsamuel/drizzle/convert-rollup-to-class
Reviewer Review Type Date Requested Status
Drizzle Developers Pending
Review via email: mp+46450@code.launchpad.net
To post a comment you must log in.

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'drizzled/join.cc'
2--- drizzled/join.cc 2011-01-08 10:35:13 +0000
3+++ drizzled/join.cc 2011-01-17 09:18:58 +0000
4@@ -728,7 +728,7 @@
5 }
6 if (group_list || tmp_table_param.sum_func_count)
7 {
8- if (! hidden_group_fields && rollup.state == ROLLUP::STATE_NONE)
9+ if (! hidden_group_fields && rollup.getState() == Rollup::STATE_NONE)
10 select_distinct=0;
11 }
12 else if (select_distinct && tables - const_tables == 1)
13@@ -792,7 +792,7 @@
14 {
15 Order *old_group_list;
16 group_list= remove_constants(this, (old_group_list= group_list), conds,
17- rollup.state == ROLLUP::STATE_NONE,
18+ rollup.getState() == Rollup::STATE_NONE,
19 &simple_group);
20 if (session->is_error())
21 {
22@@ -1985,7 +1985,7 @@
23 If we are using rollup, we need a copy of the summary functions for
24 each level
25 */
26- if (rollup.state != ROLLUP::STATE_NONE)
27+ if (rollup.getState() != Rollup::STATE_NONE)
28 func_count*= (send_group_parts+1);
29
30 group_parts= send_group_parts;
31@@ -2048,18 +2048,18 @@
32 ((Item_sum *)item)->depended_from() == select_lex))
33 *func++= (Item_sum*) item;
34 }
35- if (before_group_by && rollup.state == ROLLUP::STATE_INITED)
36+ if (before_group_by && rollup.getState() == Rollup::STATE_INITED)
37 {
38- rollup.state= ROLLUP::STATE_READY;
39+ rollup.setState(Rollup::STATE_READY);
40 if (rollup_make_fields(field_list, send_fields, &func))
41 return true; // Should never happen
42 }
43- else if (rollup.state == ROLLUP::STATE_NONE)
44+ else if (rollup.getState() == Rollup::STATE_NONE)
45 {
46 for (uint32_t i=0 ; i <= send_group_parts ;i++)
47 sum_funcs_end[i]= func;
48 }
49- else if (rollup.state == ROLLUP::STATE_READY)
50+ else if (rollup.getState() == Rollup::STATE_READY)
51 return(false); // Don't put end marker
52 *func=0; // End marker
53 return(false);
54@@ -2071,7 +2071,7 @@
55 Item **ref_array;
56
57 tmp_table_param.quick_group= 0; // Can't create groups in tmp table
58- rollup.state= ROLLUP::STATE_INITED;
59+ rollup.setState(Rollup::STATE_INITED);
60
61 /*
62 Create pointers to the different sum function groups
63@@ -2079,18 +2079,19 @@
64 */
65 tmp_table_param.group_parts= send_group_parts;
66
67- if (!(rollup.null_items= (Item_null_result**) session->alloc((sizeof(Item*) +
68+ rollup.setNullItems((Item_null_result**) session->alloc((sizeof(Item*) +
69 sizeof(Item**) +
70 sizeof(List<Item>) +
71 ref_pointer_array_size)
72- * send_group_parts )))
73+ * send_group_parts ));
74+ if (! rollup.getNullItems())
75 {
76 return 1;
77 }
78
79- rollup.fields= (List<Item>*) (rollup.null_items + send_group_parts);
80- rollup.ref_pointer_arrays= (Item***) (rollup.fields + send_group_parts);
81- ref_array= (Item**) (rollup.ref_pointer_arrays+send_group_parts);
82+ rollup.setFields((List<Item>*) (rollup.getNullItems() + send_group_parts));
83+ rollup.setRefPointerArrays((Item***) (rollup.getFields() + send_group_parts));
84+ ref_array= (Item**) (rollup.getRefPointerArrays()+send_group_parts);
85
86 /*
87 Prepare space for field list for the different levels
88@@ -2098,10 +2099,10 @@
89 */
90 for (uint32_t i= 0 ; i < send_group_parts ; i++)
91 {
92- rollup.null_items[i]= new (session->mem_root) Item_null_result();
93- List<Item> *rollup_fields= &rollup.fields[i];
94+ rollup.getNullItems()[i]= new (session->mem_root) Item_null_result();
95+ List<Item> *rollup_fields= &rollup.getFields()[i];
96 rollup_fields->empty();
97- rollup.ref_pointer_arrays[i]= ref_array;
98+ rollup.getRefPointerArrays()[i]= ref_array;
99 ref_array+= all_fields.elements;
100 }
101
102@@ -2109,7 +2110,7 @@
103 {
104 for (uint32_t j= 0 ; j < fields_list.elements ; j++)
105 {
106- rollup.fields[i].push_back(rollup.null_items[i]);
107+ rollup.getFields()[i].push_back(rollup.getNullItems()[i]);
108 }
109 }
110
111@@ -2219,8 +2220,8 @@
112 uint32_t pos= send_group_parts - level -1;
113 bool real_fields= 0;
114 Item *item;
115- List_iterator<Item> new_it(rollup.fields[pos]);
116- Item **ref_array_start= rollup.ref_pointer_arrays[pos];
117+ List_iterator<Item> new_it(rollup.getFields()[pos]);
118+ Item **ref_array_start= rollup.getRefPointerArrays()[pos];
119 Order *start_group;
120
121 /* Point to first hidden field */
122@@ -2321,11 +2322,11 @@
123 for (uint32_t i= send_group_parts ; i-- > idx ; )
124 {
125 /* Get reference pointers to sum functions in place */
126- memcpy(ref_pointer_array, rollup.ref_pointer_arrays[i], ref_pointer_array_size);
127+ memcpy(ref_pointer_array, rollup.getRefPointerArrays()[i], ref_pointer_array_size);
128
129 if ((!having || having->val_int()))
130 {
131- if (send_records < unit->select_limit_cnt && do_send_rows && result->send_data(rollup.fields[i]))
132+ if (send_records < unit->select_limit_cnt && do_send_rows && result->send_data(rollup.getFields()[i]))
133 {
134 return 1;
135 }
136@@ -2362,13 +2363,13 @@
137 for (uint32_t i= send_group_parts ; i-- > idx ; )
138 {
139 /* Get reference pointers to sum functions in place */
140- memcpy(ref_pointer_array, rollup.ref_pointer_arrays[i],
141+ memcpy(ref_pointer_array, rollup.getRefPointerArrays()[i],
142 ref_pointer_array_size);
143 if ((!having || having->val_int()))
144 {
145 int write_error;
146 Item *item;
147- List_iterator_fast<Item> it(rollup.fields[i]);
148+ List_iterator_fast<Item> it(rollup.getFields()[i]);
149 while ((item= it++))
150 {
151 if (item->type() == Item::NULL_ITEM && item->is_result_field())
152
153=== modified file 'drizzled/join.h'
154--- drizzled/join.h 2010-12-24 07:15:43 +0000
155+++ drizzled/join.h 2011-01-17 09:18:58 +0000
156@@ -180,7 +180,7 @@
157 DrizzleLock *lock;
158
159 Join *tmp_join; /**< copy of this Join to be used with temporary tables */
160- ROLLUP rollup; /**< Used with rollup */
161+ Rollup rollup; /**< Used with rollup */
162 DYNAMIC_ARRAY keyuse;
163 Item::cond_result cond_value;
164 Item::cond_result having_value;
165@@ -306,7 +306,7 @@
166 memset(&keyuse, 0, sizeof(keyuse));
167 tmp_table_param.init();
168 tmp_table_param.end_write_records= HA_POS_ERROR;
169- rollup.state= ROLLUP::STATE_NONE;
170+ rollup.setState(Rollup::STATE_NONE);
171 }
172
173 /**
174@@ -395,7 +395,7 @@
175 memset(&keyuse, 0, sizeof(keyuse));
176 tmp_table_param.init();
177 tmp_table_param.end_write_records= HA_POS_ERROR;
178- rollup.state= ROLLUP::STATE_NONE;
179+ rollup.setState(Rollup::STATE_NONE);
180 }
181
182 int prepare(Item ***rref_pointer_array,
183
184=== modified file 'drizzled/sql_select.cc'
185--- drizzled/sql_select.cc 2011-01-09 08:39:30 +0000
186+++ drizzled/sql_select.cc 2011-01-17 09:18:58 +0000
187@@ -3932,7 +3932,7 @@
188 error=join->result->send_data(*join->fields) ? 1 : 0;
189 join->send_records++;
190 }
191- if (join->rollup.state != ROLLUP::STATE_NONE && error <= 0)
192+ if (join->rollup.getState() != Rollup::STATE_NONE && error <= 0)
193 {
194 if (join->rollup_send_data((uint32_t) (idx+1)))
195 error= 1;
196@@ -4022,7 +4022,7 @@
197 return NESTED_LOOP_ERROR;
198 }
199 }
200- if (join->rollup.state != ROLLUP::STATE_NONE)
201+ if (join->rollup.getState() != Rollup::STATE_NONE)
202 {
203 if (join->rollup_write_data((uint32_t) (idx+1), table))
204 return NESTED_LOOP_ERROR;
205
206=== modified file 'drizzled/sql_select.h'
207--- drizzled/sql_select.h 2011-01-12 21:31:39 +0000
208+++ drizzled/sql_select.h 2011-01-17 09:18:58 +0000
209@@ -56,14 +56,76 @@
210 enum_nested_loop_state end_send_group(Join *join, JoinTable *join_tab, bool end_of_records);
211 enum_nested_loop_state end_write_group(Join *join, JoinTable *join_tab, bool end_of_records);
212
213-typedef struct st_rollup
214+class Rollup
215 {
216+public:
217 enum State { STATE_NONE, STATE_INITED, STATE_READY };
218+
219+ Rollup()
220+ :
221+ state(),
222+ null_items(NULL),
223+ ref_pointer_arrays(NULL),
224+ fields()
225+ {}
226+
227+ Rollup(State in_state,
228+ Item_null_result **in_null_items,
229+ Item ***in_ref_pointer_arrays,
230+ List<Item> *in_fields)
231+ :
232+ state(in_state),
233+ null_items(in_null_items),
234+ ref_pointer_arrays(in_ref_pointer_arrays),
235+ fields(in_fields)
236+ {}
237+
238+ State getState() const
239+ {
240+ return state;
241+ }
242+
243+ void setState(State in_state)
244+ {
245+ state= in_state;
246+ }
247+
248+ Item_null_result **getNullItems() const
249+ {
250+ return null_items;
251+ }
252+
253+ void setNullItems(Item_null_result **in_null_items)
254+ {
255+ null_items= in_null_items;
256+ }
257+
258+ Item ***getRefPointerArrays() const
259+ {
260+ return ref_pointer_arrays;
261+ }
262+
263+ void setRefPointerArrays(Item ***in_ref_pointer_arrays)
264+ {
265+ ref_pointer_arrays= in_ref_pointer_arrays;
266+ }
267+
268+ List<Item> *getFields() const
269+ {
270+ return fields;
271+ }
272+
273+ void setFields(List<Item> *in_fields)
274+ {
275+ fields= in_fields;
276+ }
277+
278+private:
279 State state;
280 Item_null_result **null_items;
281 Item ***ref_pointer_arrays;
282 List<Item> *fields;
283-} ROLLUP;
284+};
285
286 } /* namespace drizzled */
287

Subscribers

People subscribed via source and target branches