summaryrefslogtreecommitdiff
path: root/sql/sql_list.h
diff options
context:
space:
mode:
authorunknown <monty@mysql.com>2005-02-08 14:41:09 +0200
committerunknown <monty@mysql.com>2005-02-08 14:41:09 +0200
commit63982db93ceac93bf6dd72f8cae41f8ea06cda0a (patch)
tree7f61ad1d6f95b1672a681f050e260fa65e4b13a7 /sql/sql_list.h
parent6a1e75621155f700bc6912f9669a5a374342b712 (diff)
downloadmariadb-git-63982db93ceac93bf6dd72f8cae41f8ea06cda0a.tar.gz
Better bugfix for "HAVING when refering to RAND()" (Bug #8216)
Ensure that references in HAVING, ORDER BY or GROUP BY are calculated after fields in SELECT. This will ensure that any reference to these has a valid value. Generalized the code for split_sum_func() BitKeeper/etc/ignore: added support-files/ndb-config-2-node.ini mysql-test/r/group_by.result: More complicated test to assure that rand() is only calulated once mysql-test/r/user_var.result: Back to old results :( (ok but not perfect) mysql-test/t/group_by.test: More complicated test to assure that rand() is only calulated once sql/item.cc: Better bugfix for "HAVING when refering to RAND()" This will ensure that when refering to things like RAND() in HAVING through an alias we will not recalculate that rand() value in the HAVING part but use the value in the row Generalize split_sum_func() sql/item.h: Better bugfix for "HAVING when refering to RAND()" T sql/item_cmpfunc.cc: Better bugfix for "HAVING when refering to RAND()" Use generalized split_sum_func2() function sql/item_func.cc: Better bugfix for "HAVING when refering to RAND()" Use generalized split_sum_func2() function sql/item_row.cc: Better bugfix for "HAVING when refering to RAND()" Use generalized split_sum_func2() function sql/item_strfunc.cc: Better bugfix for "HAVING when refering to RAND()" Use generalized split_sum_func2() function sql/sql_list.h: Add functions to concatenate lists sql/sql_select.cc: Better bugfix for "HAVING when refering to RAND()" Ensure that references in HAVING, ORDER BY or GROUP BY are calculated after fields in SELECT. This will ensure that any reference to these has a valid value.
Diffstat (limited to 'sql/sql_list.h')
-rw-r--r--sql/sql_list.h9
1 files changed, 9 insertions, 0 deletions
diff --git a/sql/sql_list.h b/sql/sql_list.h
index 38c5af2a4f7..a607b31d60c 100644
--- a/sql/sql_list.h
+++ b/sql/sql_list.h
@@ -134,6 +134,15 @@ public:
if (!--elements)
last= &first;
}
+ inline void concat(base_list *list)
+ {
+ if (!list->is_empty())
+ {
+ *last= list->first;
+ last= list->last;
+ elements+= list->elements;
+ }
+ }
inline void *pop(void)
{
if (first == &end_of_list) return 0;