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.
(BUG 8216)
mysql-test/r/group_by.result:
New test case
mysql-test/r/user_var.result:
Test changed (to be more correct) with bug fix
mysql-test/t/group_by.test:
Added test for HAVING bug
sql/item_cmpfunc.cc:
Fixed bug in HAVING when refering to RAND()
sql/item_func.cc:
Fixed bug in HAVING when refering to RAND()
sql/item_row.cc:
Fixed bug in HAVING when refering to RAND()
sql/item_strfunc.cc:
Fixed bug in HAVING when refering to RAND()
sql/unireg.h:
Added PSEUDO_TABLES_BITS for easy testing of real table reference
* Added Item_ref::set_properties
* Item_ref::Item_ref now expects to get in *item either
NULL - then fix_fields() will be called later or
ptr to Item it will refer to - then an equivalent of fix_fields() call is performed
sql/item.cc:
Merge of fix for BUG#6976 continued: pulling in some Item_ref changes from 5.0
* Added Item_ref::set_properties
* Adjusted Item_ref::Item_ref calls to match new calling convention
sql/item.h:
Merge of fix for BUG#6976 continued: pulling in some Item_ref changes from 5.0
* Added Item_ref::set_properties
* Item_ref::Item_ref now expects to get in *item either
NULL - then fix_fields() will be called later or
ptr to Item it will refer to - then an equivalent of fix_fields() call is performed
sql/item_cmpfunc.cc:
Merge of fix for BUG#6976 continued: pulling in some Item_ref changes from 5.0
* Adjusted Item_ref::Item_ref calls to match new calling convention
sql/item_func.cc:
Merge of fix for BUG#6976 continued: pulling in some Item_ref changes from 5.0
* Added Item_ref::set_properties
* Adjusted Item_ref::Item_ref calls to match new calling convention
sql/item_row.cc:
Merge of fix for BUG#6976 continued: pulling in some Item_ref changes from 5.0
* Added Item_ref::set_properties
* Adjusted Item_ref::Item_ref calls to match new calling convention
sql/item_strfunc.cc:
Merge of fix for BUG#6976 continued: pulling in some Item_ref changes from 5.0
* Added Item_ref::set_properties
* Adjusted Item_ref::Item_ref calls to match new calling convention
The problem in 4.1 was the same as in 4.0 - fix_fields() not called for created Item_ref.
The fix is similar too - initialize Item_refs in ctor (but don't interfere with cases when
Item_ref is used by subselects).
sql/item.cc:
Fix for BUG#6976 ported from 4.0
sql/item_cmpfunc.cc:
Fix for BUG#6976 ported from 4.0
sql/item_func.cc:
Fix for BUG#6976 ported from 4.0
sql/item_row.cc:
Fix for BUG#6976 ported from 4.0
sql/item_strfunc.cc:
Fix for BUG#6976 ported from 4.0
change, and perform it (the new Item changes registry).
sql/item.cc:
A small simplification: perform two actions at once, register a
change, and perform it.
sql/item_cmpfunc.cc:
register_item_tree_change -> change_item_tree
sql/item_func.cc:
register_item_tree_change -> change_item_tree
sql/item_row.cc:
register_item_tree_change -> change_item_tree
sql/item_strfunc.cc:
register_item_tree_change -> change_item_tree
sql/sql_class.h:
register_item_tree_change -> change_item_tree
sql/sql_select.cc:
register_item_tree_change -> change_item_tree
doesn't need to have it's own recovery mechanism.
sql/item.cc:
Deployment of centralized Item change registry, step 2: Item_ref
doesn't need to have it's own recovery mechanism, so it was simplified.
sql/item.h:
Deployment of centralized Item change registry, step 2: Item_ref
doesn't need to have it's own recovery mechanism, so it was simplified.
sql/item_cmpfunc.cc:
- Item::split_sum_func now requires THD
- use THD::register_item_tree_change
sql/item_cmpfunc.h:
- Item::split_sum_func now requires THD
sql/item_func.cc:
- Item::split_sum_func now requires THD
- use THD::register_item_tree_change
sql/item_func.h:
- Item::split_sum_func now requires THD
sql/item_row.cc:
- Item::split_sum_func now requires THD
- use THD::register_item_tree_change
sql/item_row.h:
- Item::split_sum_func now requires THD
sql/item_strfunc.cc:
- Item::split_sum_func now requires THD
- use THD::register_item_tree_change to register changes in the item
tree
sql/item_strfunc.h:
- Item::split_sum_func now requires THD
sql/item_subselect.cc:
- use updated Item_ref constructor
sql/sql_base.cc:
- Item::split_sum_func now requires THD
sql/sql_select.cc:
- Item::split_sum_func now requires THD
sql/sql_yacc.yy:
- use updated Item_ref constructor
sql/item.cc:
layout fixed
fixed bug in prepared statements with subqueries and outer references
sql/item.h:
neg_transformer get thd argument to call fix_fields
sql/item_cmpfunc.cc:
DBUG_ASSERT(fixed == 0) added to fix_fields()
fixed Item_in_optimizer fixed flag
neg_arguments(), neg_transformer() call fix_field() on created items to avoid bouble fix field or non-called fixfields()
sql/item_cmpfunc.h:
neg_transformer get thd argument to call fix_fields
fixed forgoten cleanup() call of parent class
sql/item_func.cc:
DBUG_ASSERT(fixed == 0) and fixed flag check added to fix_fields()
sql/item_func.h:
DBUG_ASSERT(fixed == 0) added to fix_fields()
fixed forgoten cleanup() call of parent class
sql/item_row.cc:
DBUG_ASSERT(fixed == 0) added to fix_fields()
added forgoten 'fixed' flag set
sql/item_subselect.cc:
DBUG_ASSERT(fixed == 0) added to fix_fields()
fixed subquery transformation
sql/sql_base.cc:
check of fixed flag added
sql/sql_derived.cc:
fixed cleunup union in derived table during EXPLAIN command processing
sql/sql_select.cc:
thd argument add to function to allow call fix_fields() of new created items
fixed EXPLAIN double preparation
check of fixed flag added
eliminate_not_funcs fixed for corrcet fix_fields call of new created items
sql/sql_select.h:
thd argument add to function to allow call fix_fields() of new created items
sql/sql_union.cc:
union processing fixed
tests/client_test.c:
layout fixed
new test of outer references fron subqueries
mysql-test/r/subselect.result:
test suite for BUG#2838
mysql-test/t/subselect.test:
test suite for BUG#2838
sql/item.cc:
revision of fix_fields() calls
removed unnecessary variabl, and used correct last parameter of fix_fields()
sql/item_cmpfunc.cc:
revision of fix_fields() calls (BUG#2838)
sql/item_func.cc:
revision of fix_fields() calls
sql/item_row.cc:
changed for efficience (and to be similar for Item_func::fix_fields)
sql/item_subselect.cc:
fixed last arguments for fix_fields call
sql/item_sum.cc:
layout fixed
revision of fix_fields() calls
sql/log_event.cc:
revision of fix_fields() calls
sql/set_var.cc:
revision of fix_fields() calls
sql/sql_base.cc:
revision of fix_fields() calls
sql/sql_class.cc:
revision of fix_fields() calls
sql/sql_handler.cc:
revision of fix_fields() calls
Here i added Item_*::cleanup() functions,
removed a lot of ~Item_*'s,
added code to restore order_list and group_list
sql/item.cc:
cleanups methods implemented
Item_ref constructors changed
sql/item.h:
cleanups declared
Item_ref constructors changed
some ~Item_* deleted
sql/item_cmpfunc.cc:
new Item_ref format
sql/item_cmpfunc.h:
saving/restoring of the original arguments added to
eq and equal functions
sql/item_func.cc:
New Item_ref format
sql/item_func.h:
destructors removed/changed to 'cleanup()'
sql/item_row.cc:
New Item_ref format
sql/item_row.h:
~Item_row -> cleanup()
sql/item_strfunc.cc:
new Item_ref format
sql/item_strfunc.h:
destructors removed
sql/item_subselect.cc:
Item_subselect implementation,
new Item_ref() format
sql/item_subselect.h:
cleanups for subselects declared
sql/item_sum.cc:
cleanups implementations
sql/item_sum.h:
cleanups declarations
destructors removed
sql/mysql_priv.h:
free_items, cleanup_items exported
sql/sql_prepare.cc:
cleanup_items, free_items calls added
stmt->query_id= thd->query_id restored
cleanup procedures for group_list and order_list added
sql/sql_yacc.yy:
New Item_ref() format
mysql-test/r/row.result:
fixed error message as it was suggested by Peter Gulutzan
mysql-test/r/subselect.result:
fixed error message as it was suggested by Peter Gulutzan
sql/share/czech/errmsg.txt:
fixed error message as it was suggested by Peter Gulutzan
sql/share/danish/errmsg.txt:
fixed error message as it was suggested by Peter Gulutzan
sql/share/dutch/errmsg.txt:
fixed error message as it was suggested by Peter Gulutzan
sql/share/english/errmsg.txt:
fixed error message as it was suggested by Peter Gulutzan
sql/share/estonian/errmsg.txt:
fixed error message as it was suggested by Peter Gulutzan
sql/share/french/errmsg.txt:
fixed error message as it was suggested by Peter Gulutzan
sql/share/german/errmsg.txt:
fixed error message as it was suggested by Peter Gulutzan
sql/share/greek/errmsg.txt:
fixed error message as it was suggested by Peter Gulutzan
sql/share/hungarian/errmsg.txt:
fixed error message as it was suggested by Peter Gulutzan
sql/share/italian/errmsg.txt:
fixed error message as it was suggested by Peter Gulutzan
sql/share/japanese/errmsg.txt:
fixed error message as it was suggested by Peter Gulutzan
sql/share/korean/errmsg.txt:
fixed error message as it was suggested by Peter Gulutzan
sql/share/norwegian-ny/errmsg.txt:
fixed error message as it was suggested by Peter Gulutzan
sql/share/norwegian/errmsg.txt:
fixed error message as it was suggested by Peter Gulutzan
sql/share/polish/errmsg.txt:
fixed error message as it was suggested by Peter Gulutzan
sql/share/portuguese/errmsg.txt:
fixed error message as it was suggested by Peter Gulutzan
sql/share/romanian/errmsg.txt:
fixed error message as it was suggested by Peter Gulutzan
sql/share/russian/errmsg.txt:
fixed error message as it was suggested by Peter Gulutzan
sql/share/serbian/errmsg.txt:
fixed error message as it was suggested by Peter Gulutzan
sql/share/slovak/errmsg.txt:
fixed error message as it was suggested by Peter Gulutzan
sql/share/spanish/errmsg.txt:
fixed error message as it was suggested by Peter Gulutzan
sql/share/swedish/errmsg.txt:
fixed error message as it was suggested by Peter Gulutzan
sql/share/ukrainian/errmsg.txt:
fixed error message as it was suggested by Peter Gulutzan
fixed dependence of items from reduced subquery
(SCRUM)
sql/item.cc:
fixed dependence of items from reduced subquery
sql/item.h:
fixed dependence of items from reduced subquery
Item tree iterator
sql/item_cmpfunc.cc:
Item tree iterator
sql/item_cmpfunc.h:
Item tree iterator
sql/item_func.cc:
Item tree iterator
sql/item_func.h:
Item tree iterator
sql/item_row.cc:
Item tree iterator
sql/item_row.h:
Item tree iterator
sql/item_strfunc.h:
Item tree iterator
sql/item_subselect.cc:
Item tree iterator
removed outer resolving flag (because of movingtransformation after fix_fields)
sql/item.cc:
removed outer resolving flag (because of movingtransformation after fix_fields)
sql/item.h:
removed outer resolving flag (because of movingtransformation after fix_fields)
sql/item_cmpfunc.cc:
removed outer resolving flag (because of movingtransformation after fix_fields)
sql/item_cmpfunc.h:
removed outer resolving flag (because of movingtransformation after fix_fields)
sql/item_func.cc:
removed outer resolving flag (because of movingtransformation after fix_fields)
sql/item_func.h:
removed outer resolving flag (because of movingtransformation after fix_fields)
sql/item_row.cc:
removed outer resolving flag (because of movingtransformation after fix_fields)
sql/item_row.h:
removed outer resolving flag (because of movingtransformation after fix_fields)
sql/item_strfunc.h:
removed outer resolving flag (because of movingtransformation after fix_fields)
sql/item_subselect.cc:
after review changes
removed outer resolving flag (because of movingtransformation after fix_fields)
sql/item_subselect.h:
after review changes
removed outer resolving flag (because of movingtransformation after fix_fields)
sql/mysql_priv.h:
after review changes
sql/sql_base.cc:
after review changes
sql/sql_lex.cc:
after review changes
sql/sql_lex.h:
after review changes
sql/sql_select.cc:
after review changes
sql/sql_union.cc:
after review changes
new fatal_error interface to assign is_fatal_error and ne.report_error
commant about Item_row
mysql-test/r/subselect.result:
test of inheritence of uncacheability
mysql-test/t/subselect.test:
test of inheritence of uncacheability
sql/item.cc:
new fatal_error interface to assign is_fatal_error and ne.report_error
sql/item_func.cc:
new fatal_error interface to assign is_fatal_error and ne.report_error
sql/item_row.cc:
comment about row
sql/item_subselect.cc:
new fatal_error interface to assign is_fatal_error and ne.report_error
(message should be sent by allocate routine
sql/log_event.cc:
new fatal_error interface to assign is_fatal_error and ne.report_error
sql/mysqld.cc:
new fatal_error interface to assign is_fatal_error and ne.report_error
sql/protocol.cc:
new fatal_error interface to assign is_fatal_error and ne.report_error
sql/sql_base.cc:
new fatal_error interface to assign is_fatal_error and ne.report_error
sql/sql_class.cc:
new fatal_error interface to assign is_fatal_error and ne.report_error
sql/sql_class.h:
new fatal_error interface to assign is_fatal_error and ne.report_error
sql/sql_delete.cc:
new fatal_error interface to assign is_fatal_error and ne.report_error
sql/sql_insert.cc:
new fatal_error interface to assign is_fatal_error and ne.report_error
sql/sql_lex.h:
fixed bug in determinating uncacheable queries
sql/sql_parse.cc:
new fatal_error interface to assign is_fatal_error and ne.report_error
sql/sql_prepare.cc:
new fatal_error interface to assign is_fatal_error and ne.report_error
sql/sql_select.cc:
new fatal_error interface to assign is_fatal_error and ne.report_error
sql/sql_show.cc:
new fatal_error interface to assign is_fatal_error and ne.report_error
sql/sql_union.cc:
new fatal_error interface to assign is_fatal_error and ne.report_error
sql/sql_update.cc:
new fatal_error interface to assign is_fatal_error and ne.report_error
sql/thr_malloc.cc:
new fatal_error interface to assign is_fatal_error and ne.report_error
fixed layout
BitKeeper/etc/ignore:
Added stamp-h2 stamp-h3 stamp-h4 to the ignore list
mysql-test/r/row.result:
test of row with group function
mysql-test/t/row.test:
test of row with group function
sql/item_cmpfunc.cc:
added braces according review
sql/item_func.cc:
fixed layout
sql/item_row.cc:
fixed row item
sql/item_row.h:
fixed row items with group functions
mysys/my_init.c:
Move my_once_free() up to not get warnings for this from safemalloc.
sql/item_row.cc:
Removed compiler warnings
sql/sql_select.cc:
split fix_tables_pointer() into two functions to be able to reuse code
sql/sql_select.h:
split fix_tables_pointer() into two functions to be able to reuse code
reordered Item_row class variables to be sorted by memory size
mysql-test/r/subselect.result:
fix result of subselect test
sql/item.cc:
postreviews fix
sql/item.h:
postreviews fix
sql/item_cmpfunc.h:
postreviews fix
sql/item_row.cc:
postreviews fix
sql/item_row.h:
reordered class variables to be sorted by memory size
postreviews fix
sql/item_strfunc.cc:
postreviews fix
sql/item_subselect.cc:
postreviews fix
fixed bug of calling setup_fields without correct lex->current_select pointer in mysql_derived
more correct creation of reference in Item_field::fix_field
mysql-test/r/subselect.result:
new explain with subselect reduced
mysql-test/t/subselect.test:
new explain with subselect reduced
sql/item.cc:
support of subselect without FROM reducing
more correct creation of reference in Item_field::fix_field
sql/item.h:
support of subselect without FROM reducing
sql/item_cmpfunc.cc:
support of subselect without FROM reducing
sql/item_cmpfunc.h:
support of subselect without FROM reducing
sql/item_func.cc:
support of subselect without FROM reducing
sql/item_func.h:
support of subselect without FROM reducing
sql/item_row.cc:
support of subselect without FROM reducing
sql/item_row.h:
support of subselect without FROM reducing
sql/item_strfunc.h:
fixed layout
support of subselect without FROM reducing
sql/item_subselect.cc:
support of subselect without FROM reducing
sql/item_subselect.h:
support of subselect without FROM reducing
sql/mysql_priv.h:
reference in Item_field::fix_field related changes
sql/sql_base.cc:
reference in Item_field::fix_field related changes
sql/sql_derived.cc:
fixed bug of calling setup_fields without correct lex->current_select pointer
mysql-test/r/subselect.result:
test of row IN subslect
mysql-test/t/subselect.test:
test of row IN subslect
sql/item.cc:
New helper Item - reference on item list by number
cache item for row
sql/item.h:
layout fixed
New helper Item - reference on item list by number
cache item for row
sql/item_cmpfunc.cc:
changed Item_in_optimizer to be able work with row
sql/item_cmpfunc.h:
changed Item_in_optimizer to be able work with row
sql/item_row.cc:
Fixed row Item to be compatible with row subselect
sql/item_row.h:
Fixed row Item to be compatible with row subselect
sql/item_subselect.cc:
changed name of class to corerectly reflex its function
row IN subselect
sql/item_subselect.h:
changed name of class to corerectly reflex its function
row IN subselect
sql/sql_class.cc:
changed name of class to corerectly reflex its function
sql/sql_class.h:
changed name of class to corerectly reflex its function
sql/sql_yacc.yy:
changed name of class to corerectly reflex its function
include/mysql_com.h:
basic row Items
include/mysqld_error.h:
more wide error mening
libmysqld/Makefile.am:
basic row Items
mysql-test/r/subselect.result:
more wide error mening
sql/Makefile.am:
basic row Items
sql/filesort.cc:
basic row Items
sql/item.cc:
basic row Items
sql/item.h:
basic row Items
sql/item_cmpfunc.cc:
basic row Items
sql/item_cmpfunc.h:
basic row Items
sql/item_func.cc:
basic row Items
sql/item_func.h:
basic row Items
sql/item_strfunc.cc:
basic row Items
sql/item_strfunc.h:
basic row Items
sql/item_subselect.cc:
basic row Items
sql/item_sum.cc:
basic row Items
sql/share/czech/errmsg.txt:
more wide error mening
sql/share/danish/errmsg.txt:
more wide error mening
sql/share/dutch/errmsg.txt:
more wide error mening
sql/share/english/errmsg.txt:
more wide error mening
sql/share/estonian/errmsg.txt:
more wide error mening
sql/share/french/errmsg.txt:
more wide error mening
sql/share/german/errmsg.txt:
more wide error mening
sql/share/greek/errmsg.txt:
more wide error mening
sql/share/hungarian/errmsg.txt:
more wide error mening
sql/share/italian/errmsg.txt:
more wide error mening
sql/share/japanese/errmsg.txt:
more wide error mening
sql/share/korean/errmsg.txt:
more wide error mening
sql/share/norwegian-ny/errmsg.txt:
more wide error mening
sql/share/norwegian/errmsg.txt:
more wide error mening
sql/share/polish/errmsg.txt:
more wide error mening
sql/share/portuguese/errmsg.txt:
more wide error mening
sql/share/romanian/errmsg.txt:
more wide error mening
sql/share/russian/errmsg.txt:
more wide error mening
sql/share/serbian/errmsg.txt:
more wide error mening
sql/share/slovak/errmsg.txt:
more wide error mening
sql/share/spanish/errmsg.txt:
more wide error mening
sql/share/swedish/errmsg.txt:
more wide error mening
sql/share/ukrainian/errmsg.txt:
more wide error mening
sql/sql_base.cc:
fix_fields error handling
sql/sql_lex.cc:
basic row Items
sql/sql_select.cc:
basic row Items
sql/sql_yacc.yy:
basic row Items