Commit graph

67 commits

Author SHA1 Message Date
evgen@moonbone.local
88147d5cfe user_var.result:
Corrected test case result for the bug#28494.
item_func.h, item_func.cc:
  Corrected function names after fix for the bug#28494.
2007-06-03 15:56:48 +04:00
evgen@moonbone.local
7dbe9d3318 user_var.result, user_var.test:
Extended test case for the bug#28494.
2007-06-03 14:46:09 +04:00
evgen@moonbone.local
4934646764 Bug#28494: Grouping by Item_func_set_user_var produces incorrect result.
This is an additional fix.
Item::val_xxx methods are supposed to use original data source and
Item::val_xxx_result methods to use the item's result field. But for the
Item_func_set_user_var class val_xxx_result methods were mapped to val_xxx
methods. This leads, in particular, to producing bad sort keys and thus
wrong order of the result set of queries with group by/order by clauses.

The set of val_xxx_result methods is added to the Item_func_set_user_var
class. It's the same as the val_xxx set of method but uses the result_field
to return a value.
2007-06-02 23:17:46 +04:00
evgen@moonbone.local
f70ae3a6de Bug#28494: Grouping by Item_func_set_user_var produces incorrect result.
The end_update() function uses the Item::save_org_in_field() function to
save original values of items into the group buffer. But for the 
Item_func_set_user_var this method was mapped to the save_in_field method.
The latter function wrongly decides to use the result_field. This leads to
saving incorrect value in the grouping buffer and wrong result of the whole
query.

The can_use_result_field argument of the bool type is added to the
Item_func_set_user_var::save_in_field() function. If it is set to FALSE
then the item's result field won't be used. Otherwise it will be detected
whether the result field will be used (old behaviour).
Two wrapping functions for the function above are added to the 
Item_func_set_user_var class:
the save_in_field(Field *field, bool no_conversions) - it calls the above
function with the can_use_result_field set to TRUE.
the save_org_in_field(Field *field) - same, but the can_use_result_field
is set to FALSE.
2007-06-01 01:17:14 +04:00
evgen@moonbone.local
e098f736e1 Fixed bug#16861: User defined variable can have a wrong value if a tmp table was
used.

The Item::save_in_field() function is called from fill_record() to fill the 
new row with data while execution of the CREATE TABLE ... SELECT statement.
Item::save_in_field() calls val_xxx() methods in order to get values.
val_xxx() methods do not take into account the result field. Due to this
Item_func_set_user_var::val_xxx() methods returns values from the original
table, not from the temporary one.

The save_in_field() member function is added to the Item_func_set_user_var
class. It detects whether the result field should be used and properly updates
the value of the user variable.
2007-01-09 23:24:56 +03:00
iggy@rolltop.ignatz42.dyndns.org
d96be311cb Bug #19024- SHOW COUNT(*) WARNINGS not return Errors
The server variable warning_count should include the number of warnings, errors and notes according to the manual
2006-10-04 10:49:39 -04:00
evgen@sunlight.local
f17a536e09 Fixed bug#16861: User defined variable can have a wrong value if a tmp table was
used.

Sorting by RAND() uses a temporary table in order to get a correct results.
User defined variable was set during filling the temporary table and later
on it is substituted for its value from the temporary table. Due to this
it contains the last value stored in the temporary table.

Now if the result_field is set for the Item_func_set_user_var object it 
updates variable from the result_field value when being sent to a client.

The Item_func_set_user_var::check() now accepts a use_result_field
parameter. Depending on its value the result_field or the args[0] is used
to get current value.
2006-08-22 17:37:41 +04:00
msvensson@neptunus.(none)
9ebf7944e3 Bug #7498 User variable SET saves SIGNED BIGINT as UNSIGNED BIGINT
- Add unsigned flag to user_var_entry, used when 'type' is INT_RESULT
- Propagate unsigned flag from the query executed by Item_single_row_subselect
2006-06-09 19:35:54 +02:00
jimw@mysql.com
58cb2f317c Remove obsolete test 2006-04-26 17:09:41 -07:00
monty@mysql.com
e5f48e13bf Reverting patch for BUG #14009 (use of abs() on null value causes problems with filesort
Fix for bug #14536: SELECT @a,@a:=... fails with prepared statements
2005-11-01 15:54:30 +02:00
jimw@mysql.com
fb903c1e2c Fix two test results that were merged out-of-order. 2005-08-01 19:21:56 -07:00
jimw@mysql.com
48d111c8c2 Merge mysql.com:/home/jimw/my/mysql-4.1-clean
into  mysql.com:/home/jimw/my/mysql-5.0-clean
2005-08-01 17:54:57 -07:00
jimw@mysql.com
3409537f2a Don't force column header to @@session.var_name if @@local.var_name
was used. (Bug #10724)
2005-07-25 11:25:28 -07:00
gluh@eagle.intranet.mysql.r18.ru
b44a474449 Fix for bug #9286: SESSION/GLOBAL should be disallowed for user variables(for 5.0) 2005-05-18 12:47:45 +05:00
monty@mysql.com
129c604032 Setting a variable to CAST(NULL as X) set the result type of the variable to X. (Bug #6598) 2005-04-30 03:14:42 +03:00
serg@serg.mylan
5cd866610d after merge fix 2005-04-06 23:12:10 +02:00
serg@serg.mylan
e1e5b97dea manually merged
Gluh's SESSION/GLOBAL for @variables fix in sql_yacc.yy and
Bar's well_formed_len() changes in ndb code
did not make it and should be re-applied manually
2005-04-06 21:19:20 +02:00
gluh@eagle.intranet.mysql.r18.ru
6f18d7d26f Fix for bug #9286: SESSION/GLOBAL should be disallowed for user variables 2005-04-06 14:13:06 +05:00
jimw@mysql.com
5865330a9e Merge embedded server testing changes from 4.1. 2005-04-01 19:17:15 -08:00
jimw@mysql.com
16efc3e333 Merge embedded-server testing changes. 2005-04-01 16:43:35 -08:00
jimw@mysql.com
690183d1a0 Eliminate most of the remaining hardcoded list of tests to skip
by adding check for embedded server within tests and splitting some
tests into multiple test files.
2005-03-29 17:17:46 -08:00
bar@eagle.intranet.mysql.r18.ru
ef81035ff4 Merge eagle.intranet.mysql.r18.ru:/home/bar/mysql-4.1
into eagle.intranet.mysql.r18.ru:/home/bar/mysql-5.0
2005-03-28 14:08:25 +05:00
bar@mysql.com
e60daecc87 Bug#9425 A user variable doesn't always have implicit coercibility
Coercibility fixes for numeric types and not defined values were done.
2005-03-28 14:01:57 +05:00
dlenev@brandersnatch.localdomain
f169114042 WL#874 "Extended LOAD DATA".
Now one can use user variables as target for data loaded from file
(besides table's columns). Also LOAD DATA got new SET-clause in which
one can specify values for table columns as expressions.

For example the following is possible:
LOAD DATA INFILE 'words.dat' INTO TABLE t1 (a, @b) SET c = @b + 1;

This patch also implements new way of replicating LOAD DATA.
Now we do it similarly to other queries.
We store LOAD DATA query in new Execute_load_query event
(which is last in the sequence of events representing LOAD DATA).
When we are executing this event we simply rewrite part of query which
holds name of file (we use name of temporary file) and then execute it
as usual query. In the beggining of this sequence we use Begin_load_query
event which is almost identical to Append_file event
2005-03-16 04:32:47 +03:00
guilhem@mysql.com
624aaa4b09 result fixes after my change to mysqlbinlog (which was accidentally
pushed some minutes ago)
2005-02-23 19:59:25 +01:00
monty@mysql.com
e2ea35ec67 Merge with 4.1 2005-02-22 15:47:00 +02:00
bar@mysql.com
89a5530822 A user variable are now always have IMPLICIT coercibility,
independently from the expression it is initialized from.
In other words, this change treats a user variable like
a table with one column and one record. Discussed with 
PeterG, Serg and Lars. This change also simplifies replication
allowing not to replicate variables' coercibility.
2005-02-22 15:55:40 +04:00
serg@serg.mylan
2b41b8fa01 post-review fixes. Now ROLLBACK is done in Format_description_log_event 2005-02-17 13:52:16 +01:00
serg@serg.mylan
5ddb6354a5 after merge fixes 2005-02-16 17:34:02 +01:00
serg@serg.mylan
db13afd89d auto-ROLLBACK if binlog was not closed properly
auto-commit on Xid_log_event
2005-02-09 20:04:28 +01:00
monty@mysql.com
79ec81071a 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()
2005-02-08 14:41:09 +02:00
monty@mysql.com
32f91f48e8 Fixed bug in HAVING when refering to RAND() through alias
(BUG 8216)
2005-02-07 18:13:57 +02:00
bar@mysql.com
e7e5e8b1e7 user_var.result, func_str.result, item_strfunc.cc:
bug#7839 ncorrect collation for char(ascii('a'))
2005-01-17 10:38:35 +04:00
serg@serg.mylan
1034677f94 XA (not completely polished out yet) 2005-01-16 13:16:23 +01:00
guilhem@mysql.com
44ce4b43ef Fix for BUG#7793 "mysqlbinlog produces incorrect queries":
when printing SET @var in mysqlbinlog, backtick the collation (as BINARY is a reserved word)
2005-01-12 19:42:46 +01:00
serg@serg.mylan
c7532a698d merged 2004-11-17 20:07:13 +01:00
serg@serg.mylan
e68bd85b77 merged 2004-11-17 18:04:36 +01:00
guilhem@mysql.com
d34421c127 Fixes for compilation errors in Windows (casts from uint32* to uint*) in repl and charset code.
Moving the part of user_var.test using UCS2 to ctype_ucs.test
2004-11-17 16:41:30 +01:00
monty@mysql.com
1087186657 Merge with 4.1 to get new thd->mem_root handling 2004-11-08 17:53:32 +02:00
bar@mysql.com
813b2f3357 user_var.result, user_var.test:
My previous change that "set @a=NULL" doesn't change charset
  fixed 'Bug #6321' as well. Prove with a new test that
  FIELD(<uservariable content NULL>, ...) now works fine too.
2004-11-05 14:07:12 +04:00
monty@mysql.com
f2829d0386 After merge fixes of merge with 4.1 that included the new arena code.
Fixed (together with Guilhem) bugs in mysqlbinlog regarding --offset
Prefix addresses with 0x for easier comparisons of debug logs
Fixed problem where MySQL choosed index-read even if there would be a much better range on the same index
This fix changed some 'index' queries to 'range' queries in the test suite
Don't create 'dummy' WHERE clause for trivial WHERE clauses where we can remove the WHERE clause.
This fix removed of a lot of 'Using where' notes in the test suite.
Give NOTE instead of WARNING if table/function doesn't exists when using DROP IF EXISTS
Give NOTE instead of WARNING for safe field-type conversions
2004-09-09 06:59:26 +03:00
monty@mysql.com
5b3c418b48 After merge fixes
Note: The following tests fails
- fulltext (Sergei has promised to fix)
- rpl_charset (Guilhem should fix)
- rpl_timezone (Dimitray has promised to fix)

Sanja needs to check out the calling of close_thread_tables() in sp_head.cc
2004-07-15 04:19:07 +03:00
guilhem@mysql.com
b514e6a8c5 Correction to replication of charsets in 4.1:
In mysqlbinlog, there was a problem with how we escaped the content of a string user variable.
To be perfect, we should have escaped with character_set_client. But this charset is unknown
to mysqlbinlog. So the simplest is to print the string in hex. This is unreadable but
100% safe with any charset (checked with Bar), no more need to bother with character_set_client.
2004-06-08 19:55:04 +02:00
guilhem@mysql.com
86e8ecc965 Implementation of WL#1824 "Add replication of character set variables in 4.1",
by binlogging some SET ONE_SHOT CHARACTER_SETetc,
which will be enough until we have it more compact and more complete in 5.0. With the present patch,
replication will work ok between 4.1.3 master and slaves, as long as:
- master and slave have the same GLOBAL.COLLATION_SERVER
- COLLATION_DATABASE and CHARACTER_SET_DATABASE are not used
- application does not use the fact that table is created with charset of the USEd db (BUG#2326).
all of which are not too hard to fulfill. 
ONE_SHOT is reserved for internal use of mysqlbinlog|mysql and works only for charsets,
so we give error if used for non-charset vars.
Fix for BUG#3875 "mysqlbinlog produces wrong ouput  if query uses
 variables containing quotes" and BUG#3943 "Queries with non-ASCII literals are not replicated
 properly after SET NAMES".
Detecting that master and slave have different global charsets or server ids.
2004-06-03 23:17:18 +02:00
bar@bar.intranet.mysql.r18.ru
39559d4817 #2244 User variables collation conflict is not detected 2003-12-31 19:01:03 +04:00
monty@mysql.com
b01fcb4e14 Merge with 4.0 to get:
Fix for storing negative values in decimal fields
Fix for FLUSH TABLE with HANDLER
2003-11-20 22:30:48 +02:00
serg@serg.mylan
11f70bdfc4 Bug#1826, HANDLER+ALTER TABLE=crash (unfortunately, it cannot be tested in mysql-test suite)
more user variable tests
2003-11-18 22:06:47 +01:00
monty@narttu.mysql.fi
6056cfadfc Merge with 4.0.16 2003-10-07 15:42:26 +03:00
monty@mishka.mysql.fi
989ca397b2 Optimized code for setting user variables with := and fixed some bugs in old code (Bug #1194)
Use forced close of socket to make mysqld shutdown faster when used under valgrind
2003-10-03 00:40:27 +03:00
guilhem@gbichot2
d099c0ed40 Had mangled the order of if()s in a previous changeset (1.1596) (not pushed),
correcting it now. Thanks Dmitri for spotting this.
2003-10-02 16:19:33 +02:00