1
0
mirror of https://github.com/MariaDB/server.git synced 2025-12-07 17:42:39 +03:00
Commit Graph

3350 Commits

Author SHA1 Message Date
unknown
3aa89efcdd Manual merge of Bug#9096 2005-05-03 19:32:29 +04:00
konstantin@mysql.com
92e4e1a3f8 Manual merge of Bug#9096 2005-05-03 19:32:29 +04:00
unknown
b883aebae0 Merge mysql.com:/opt/local/work/mysql-4.1-root
into mysql.com:/opt/local/work/mysql-4.1-9096-fresh


sql/item.h:
  Auto merged
sql/item_func.cc:
  Auto merged
2005-05-03 12:49:22 +04:00
konstantin@mysql.com
018b8025c0 Merge mysql.com:/opt/local/work/mysql-4.1-root
into mysql.com:/opt/local/work/mysql-4.1-9096-fresh
2005-05-03 12:49:22 +04:00
unknown
9fcda7fcc5 A fix and test case for Bug#9096 "select doesn't return all matched
records if prepared statements is used".
This fix changes equality evaluation method of basic constants from
by-name to by-value, thus effectively enabling use of parameter markers
in some optimizations (constants propagation, evaluation of possible
keys for query).


mysql-test/r/ps.result:
  Test results for the test case for Bug#9096
mysql-test/t/ps.test:
  A short test case for Bug#9096 "select doesn't return all matched records if
   prepared statements is used". The is enough to reproduce the
  glitch in update_ref_and_keys causing the bug to occur.
sql/item.cc:
  Implement by-value equality evaluation of basic constants.
  This is needed to work with Item_param values. Until now
  Item_param was compared with other items by its name, which is always "?".
  The bug at hand showed up when an integer
  constant was created from one parameter marker (with value 200887 and
   name "?") and then compared by-name with another parameter marker
  (with value 860 and name "?"). True returned by this comparison resulted
  in a wrong table access method used to evaluate the query.
  Implement Item_param methods needed to emulate "basic constant" mode at 
  full.
sql/item.h:
  Change declaration of basic_const_item(): now it also widens its 
  argument from const Item * to Item * if the argument is a basic constant.
  Declare eq() for all basic constatns, as long as now they 
  are compared by value, not by name. Each constant needs its own
  comparison method.
  Declarations of Item_param methods needed to fully emulate 
  a basic constant when parameter value is set.
sql/item_func.cc:
  Fix wrong casts.
2005-05-03 12:47:27 +04:00
konstantin@mysql.com
3589e78fda A fix and test case for Bug#9096 "select doesn't return all matched
records if prepared statements is used".
This fix changes equality evaluation method of basic constants from
by-name to by-value, thus effectively enabling use of parameter markers
in some optimizations (constants propagation, evaluation of possible
keys for query).
2005-05-03 12:47:27 +04:00
unknown
9b512475fc Merge bk-internal:/home/bk/mysql-5.0
into serg.mylan:/usr/home/serg/Abk/mysql-5.0


Makefile.am:
  Auto merged
client/mysqladmin.cc:
  Auto merged
configure.in:
  Auto merged
include/my_global.h:
  Auto merged
sql/item_func.cc:
  Auto merged
sql/mysqld.cc:
  Auto merged
sql/sql_select.cc:
  Auto merged
2005-05-01 23:10:55 +02:00
serg@serg.mylan
530b6ba541 Merge bk-internal:/home/bk/mysql-5.0
into serg.mylan:/usr/home/serg/Abk/mysql-5.0
2005-05-01 23:10:55 +02:00
unknown
d3d5660952 yassl changeset 2:
remove FIX_GCC_LINKING_PROBLEM and -DDEFINE_CXA_PURE_VIRTUAL
  replace echo in configure.in with AC_MSG_WARN/AC_MSG_ERROR
  don't set -DUSE_MYSYS_NEW for gcc 2.95
  set $USE_MYSYS_NEW even if CXX is g++
  yassl bugfixes
  instantiate all yassl templates explicitly


client/Makefile.am:
  mysqlbinlog as a c++ program may need my_new.cc (if CXX=gcc)
  no FIX_GCC_LINKING_PROBLEM anymore - it's in my_new.cc
client/mysqladmin.cc:
  no FIX_GCC_LINKING_PROBLEM anymore - it's in my_new.cc
client/mysqlbinlog.cc:
  no FIX_GCC_LINKING_PROBLEM anymore - it's in my_new.cc
configure.in:
  echo should be AC_MSG_WARN or AC_MSG_ERROR
  don't set -DUSE_MYSYS_NEW for gcc 2.95 (to restore old behaviour)
  set $USE_MYSYS_NEW even if CXX is g++ (for yassl, as it can be linked with C programs)
  remove -DDEFINE_CXA_PURE_VIRTUAL - -DUSE_MYSYS_NEW is enough
extra/yassl/mySTL/list.hpp:
  bugfixes
extra/yassl/src/Makefile.am:
  no need to mess with CXXFLAGS anymore. Instantiate all templates explicitly
extra/yassl/src/crypto_wrapper.cpp:
  instantiate templates explicitly
extra/yassl/src/yassl_imp.cpp:
  instantiate templates explicitly
extra/yassl/src/yassl_int.cpp:
  instantiate templates explicitly
extra/yassl/taocrypt/include/runtime.hpp:
  use -DUSE_MYSYS_NEW not -DDEFINE_CXA_PURE_VIRTUAL
  assert in __cxa_pure_virtual
  remove dummy (and thus dangerous) __cxa_guard_acquire/__cxa_guard_release
extra/yassl/taocrypt/src/Makefile.am:
  no need to mess with CXXFLAGS anymore. Instantiate all templates explicitly
extra/yassl/taocrypt/src/integer.cpp:
  instantiate templates explicitly
extra/yassl/taocrypt/src/rsa.cpp:
  instantiate templates explicitly
include/my_global.h:
  no FIX_GCC_LINKING_PROBLEM anymore - it's in my_new.cc
mysys/my_new.cc:
  no FIX_GCC_LINKING_PROBLEM anymore - it's in my_new.cc
server-tools/instance-manager/command.cc:
  no FIX_GCC_LINKING_PROBLEM anymore - it's in my_new.cc
sql/ha_blackhole.cc:
  typo fixed
sql/ha_innodb.cc:
  warning fixed
sql/item_func.cc:
  use LL()
sql/mysqld.cc:
  no FIX_GCC_LINKING_PROBLEM anymore - it's in my_new.cc
2005-04-30 19:48:45 +02:00
serg@serg.mylan
9c332d8d2a yassl changeset 2:
remove FIX_GCC_LINKING_PROBLEM and -DDEFINE_CXA_PURE_VIRTUAL
  replace echo in configure.in with AC_MSG_WARN/AC_MSG_ERROR
  don't set -DUSE_MYSYS_NEW for gcc 2.95
  set $USE_MYSYS_NEW even if CXX is g++
  yassl bugfixes
  instantiate all yassl templates explicitly
2005-04-30 19:48:45 +02:00
unknown
e6ce543f05 Fix for Bug #9913 "udf_deinit is not called after execution of PS"
(aka "deinit is not called when calling udf from trigger").

We should call udf_deinit() function during cleanup phase after prepared
(or ordinary) statement execution instead of calling it from Item's
desctructor.

No test case is provided since it is hard to test UDF's from our test
suite.


sql/item_func.cc:
  udf_handler:
   Moved all functionality from udf_handler::~udf_handler() to 
   udf_handler::cleanup() method which will be called after
   each PS execution, thus allowing udf_deinit() to be executed
   symetrically with udf_init() (which is executed for each
   execution of PS).
  Added Item_udf_func::cleanup() which performs proper cleanup after
  execution of PS with UDF function.
sql/item_func.h:
  Added Item_udf_func::cleanup() method to perform cleanup properly after
  execution of PS with UDF function.
sql/item_sum.cc:
  Added Item_udf_sum::cleanup() method to perform cleanup properly after
  execution of PS with aggregate UDF function.
sql/item_sum.h:
  Added Item_udf_sum::cleanup() method to perform cleanup properly after
  execution of PS with aggregate UDF function.
sql/sql_udf.h:
  Added udf_handler::cleanup() method declaration which is responsible
  for cleaning up UDF execution context at the end of execution of
  statement (using ~udf_handler() for this purprose did not worked for PS).
2005-04-30 20:23:40 +04:00
dlenev@brandersnatch.localdomain
8ee6d33bdd Fix for Bug #9913 "udf_deinit is not called after execution of PS"
(aka "deinit is not called when calling udf from trigger").

We should call udf_deinit() function during cleanup phase after prepared
(or ordinary) statement execution instead of calling it from Item's
desctructor.

No test case is provided since it is hard to test UDF's from our test
suite.
2005-04-30 20:23:40 +04:00
unknown
a6acc4462c Merge with 4.1
BitKeeper/etc/logging_ok:
  auto-union
configure.in:
  Auto merged
include/config-win.h:
  Auto merged
include/my_global.h:
  Auto merged
mysql-test/r/drop.result:
  Auto merged
mysys/default.c:
  Auto merged
mysys/mf_keycache.c:
  Auto merged
sql/field.h:
  Auto merged
sql/item.h:
  Auto merged
sql/item_func.cc:
  Auto merged
sql/item_func.h:
  Auto merged
sql/mysqld.cc:
  Auto merged
BitKeeper/deleted/.del-errmsg.txt~f96b7055cac394e:
  Auto merged
mysql-test/r/cast.result:
  Merge
mysql-test/t/cast.test:
  Merge
sql/sql_insert.cc:
  Merge
sql/sql_select.cc:
  Merge
2005-04-30 09:46:08 +03:00
monty@mysql.com
28a5491d3d Merge with 4.1 2005-04-30 09:46:08 +03:00
unknown
66bea0de15 Merge bk-internal.mysql.com:/home/bk/mysql-5.0
into mysql.com:/home/my/mysql-5.0


sql/handler.cc:
  Auto merged
sql/item_func.cc:
  Auto merged
sql/item_func.h:
  Auto merged
2005-04-30 03:46:38 +03:00
monty@mysql.com
c0e8a8d625 Merge bk-internal.mysql.com:/home/bk/mysql-5.0
into mysql.com:/home/my/mysql-5.0
2005-04-30 03:46:38 +03:00
unknown
ac82a2d5eb Setting a variable to CAST(NULL as X) set the result type of the variable to X. (Bug #6598)
mysql-test/r/bigint.result:
  Test to show show that the parser threats big longlong values as unsigned
mysql-test/r/user_var.result:
  Test of CAST(NULL as SIGNED/UNSIGNED)
mysql-test/t/bigint.test:
  Test to show show that the parser threats big longlong values as unsigned
mysql-test/t/user_var.test:
  Test of CAST(NULL as SIGNED/UNSIGNED)
sql/item_func.cc:
  Setting a variable to CAST(NULL as X) set the result type of the variable to X. (Bug #6598)
  Setting a variable to NULL doesn't change the old result type.
sql/item_func.h:
  Detect setting a variable to NULL
sql/unireg.cc:
  Safety fix
2005-04-30 03:14:42 +03: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
unknown
97b0821462 CAST(string_argument AS UNSIGNED) didn't work for big integers above the signed range. (Bug #7036)
Produce warnings of wrong cast of strings to signed/unsigned.
Don't block not resolved IP's if DNS server is down (Bug #8467)
Fix compiler problems with MinGW (Bug #8872)


configure.in:
  Fix compiler problems with MinGW (Bug #8872)
include/config-win.h:
  Fix compiler problems with MinGW (Bug #8872)
include/my_global.h:
  Fix compiler problems with MinGW (Bug #8872)
mysql-test/r/cast.result:
  Test for cast to signed/unsigned outside of range (Bug #7036)
mysql-test/t/cast.test:
  Test for cast to signed/unsigned outside of range (Bug #7036)
mysys/default.c:
  Cleanup (combine identical code). 
  Done mainly by Jani
sql/field.h:
  Added cast_to_int_type() to ensure that enums are casted as numbers
sql/hostname.cc:
  Don't block not resolved IP's if DNS server is down (Bug #8467)
sql/item.h:
  Added cast_to_int_type() to ensure that enums are casted as numbers
sql/item_func.cc:
  CAST(string_argument AS UNSIGNED) didn't work for big integers above the
  signed range. (Bug #7036)
  Produce warnings of wrong cast of strings to signed/unsigned
sql/item_func.h:
  CAST(string_argument AS UNSIGNED) didn't work for big integers above the
  signed range. (Bug #7036)
2005-04-29 17:03:34 +03:00
monty@mysql.com
fbf31c4a8c CAST(string_argument AS UNSIGNED) didn't work for big integers above the signed range. (Bug #7036)
Produce warnings of wrong cast of strings to signed/unsigned.
Don't block not resolved IP's if DNS server is down (Bug #8467)
Fix compiler problems with MinGW (Bug #8872)
2005-04-29 17:03:34 +03:00
unknown
5c44e1acfe Post-review fixes of the patch for BUG#8408: Stored procedure crash if function contains SHOW
(Review on irc by monty)


mysql-test/r/sp-error.result:
  Renamed a procedure and function to avoid confusion
mysql-test/t/sp-error.test:
  Renamed a procedure and function to avoid confusion
sql/item_func.cc:
  Corrected (and better) way to set/reset the client cap. flag in Item_func_sp::execute()
sql/share/errmsg.txt:
  Changed the ER_SP_BADSELECT error; more accurate, and includes the procedure name.
sql/sql_parse.cc:
  Include the procedure name in the new error message.
2005-04-27 16:35:49 +02:00
pem@mysql.comhem.se
f769a7a8b0 Post-review fixes of the patch for BUG#8408: Stored procedure crash if function contains SHOW
(Review on irc by monty)
2005-04-27 16:35:49 +02:00
unknown
ede5261679 Fixed BUG#8408: Stored procedure crash if function contains SHOW
We simply have to disallow any kind of result set being sent back
  from a function. Can't see any way to make that to work.


mysql-test/r/sp-error.result:
  New test case for BUG#8408.
mysql-test/t/sp-error.test:
  New test case for BUG#8408.
sql/item_func.cc:
  Disable result sets from functions but temporarily turning CLIENT_MULTI_RESULTS off.
sql/share/errmsg.txt:
  Added error message for statements not allowed in functions (detected during parsing).
sql/sql_yacc.yy:
  Don't allow result sets in functions.
2005-04-26 17:31:59 +02:00
pem@mysql.comhem.se
281c0a8130 Fixed BUG#8408: Stored procedure crash if function contains SHOW
We simply have to disallow any kind of result set being sent back
  from a function. Can't see any way to make that to work.
2005-04-26 17:31:59 +02:00
unknown
de8a3b3121 Bug#9775 - Stored procedures: crash if create function that returns enum or set
Fix bug and implement return type casting.


mysql-test/r/sp.result:
  Bug#9775
    Test for bug + feature
  Fix previous tests
mysql-test/t/sp.test:
  Bug#9775
    Test for bug + feature
  Fix previous tests
sql/item_func.cc:
  Bug#9775
    new method Item_func_sp::execute(Field **)
    some optimizations.
sql/item_func.h:
  Bug#9775
    results for Item_func_sp pass through a Field of the return type.
    new method Item_func_sp::execute(Field **)
sql/sp_head.cc:
  Bug#9775
    missing initialiation for type_lengths in sp_head::create_typelib()
2005-04-20 18:08:42 +01:00
acurtis@xiphis.org
8689083aca Bug#9775 - Stored procedures: crash if create function that returns enum or set
Fix bug and implement return type casting.
2005-04-20 18:08:42 +01:00
unknown
a437b82aff A fix (bug #9837: round(1, 6) delivers wrong value in create table context).
sql/item_func.cc:
  A fix (bug #9837: round(1, 6) delivers wrong value in create table context).
  As we change decimals, we should change max_length accordingly.
2005-04-19 14:44:54 +05:00
ramil@mysql.com
775010a40d A fix (bug #9837: round(1, 6) delivers wrong value in create table context). 2005-04-19 14:44:54 +05:00
unknown
1bf4aa09c2 item_func.cc:
Post merge additional fix for DECIMAL type:
  Bugs: #9425: A user variable doesn't always have implicit coercibility


sql/item_func.cc:
  Post merge additional fix for DECIMAL type:
  Bugs: #9425: A user variable doesn't always have implicit coercibility
2005-03-28 14:15:43 +05:00
bar@eagle.intranet.mysql.r18.ru
8e028d2f88 item_func.cc:
Post merge additional fix for DECIMAL type:
  Bugs: #9425: A user variable doesn't always have implicit coercibility
2005-03-28 14:15:43 +05:00
unknown
1747bead1d Merge eagle.intranet.mysql.r18.ru:/home/bar/mysql-4.1
into eagle.intranet.mysql.r18.ru:/home/bar/mysql-5.0


mysql-test/r/user_var.result:
  Auto merged
mysql-test/t/user_var.test:
  Auto merged
sql/item_func.cc:
  Auto merged
2005-03-28 14:08:25 +05: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
unknown
f80b366f40 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
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
unknown
895d88e5de Clarify comment to add which version of the C compiler for AIX needs to have
some code in a specific order.


sql/item_func.cc:
  clarify which compiler (and version) needs code in a certain order
2005-03-23 17:27:52 -08:00
jimw@mysql.com
9307f61cb2 Clarify comment to add which version of the C compiler for AIX needs to have
some code in a specific order.
2005-03-23 17:27:52 -08:00
unknown
5be4362874 Fix Windows compile warnings, declarations of walk functions
sql/item_func.cc:
  Remove unused variable
sql/handler.cc:
  Fix warnings
sql/item_sum.cc:
  Restore C_MODE_START/END around count_distinct_walk
  Change second argument to dump_leaf_key to correct type
sql/item_sum.h:
  Change second argument to dump_leaf_key to correct type
2005-03-22 00:00:24 +01:00
jimw@mysql.com
4c67678f15 Fix Windows compile warnings, declarations of walk functions 2005-03-22 00:00:24 +01:00
unknown
892a6138ff Eliminate warnings noticed by VC7. This includes fixing my_mmap() on
Windows to call CreateFileMapping() with correct arguments, and
propogating the introduction of query_id_t to everywhere query ids are
passed around. (Bug #8826)


libmysql/libmysql.c:
  Make implicit cast explicit
myisam/mi_open.c:
  Make cast of value to smaller data size explicit
myisam/mi_packrec.c:
  Cast file size (my_off_t) to size_t for mmap
mysys/my_mmap.c:
  Fix Windows version of my_mmap() to use the right parameters
  for call to CreateFileMapping()
sql/field.cc:
  Use temporary value of correct type
sql/field.h:
  Use query_id_t for query_id value
sql/ha_berkeley.cc:
  Fix flag check
sql/ha_innodb.h:
  Use query_id_t for query_id value
sql/handler.cc:
  Explain opt_using_transactions calculation, and add cast
sql/handler.h:
  Fix forward declaration of COND
sql/item.cc:
  Fix val_bool() tests of val_int() to avoid implicit cast
sql/item_cmpfunc.cc:
  Fix typo in switch label
sql/item_func.cc:
  Make implicit cast explicit
sql/item_strfunc.cc:
  Now that query_id is a query_id_t, need to cast it to a ulong here
sql/item_subselect.cc:
  Fix test of value
sql/log.cc:
  Cast my_off_t used for file size to size_t for memory allocation
  Also cast my_off_t when using it to calculate the number of pages for TC log
  Cast total_ha_2pc to uchar when saving it
sql/mysql_priv.h:
  Move up query_id definition so it can be used more widely
sql/opt_range.cc:
  Add unused delete operator to prevent compiler warning
sql/set_var.cc:
  Cast value for max_user_connections
sql/sql_cache.cc:
  Remove unused label
sql/sql_class.h:
  Fix query id values to be of type query_id_t
sql/sql_db.cc:
  Move variable only used inside #ifdef within the #ifdef
sql/sql_help.cc:
  Remove unused label
sql/sql_insert.cc:
  Use query_id_t for query id values
sql/sql_lex.h:
  Add unused delete operator to prevent compiler warning
sql/sql_select.cc:
  Remove unused variable
  Make cast of value explicit
sql/sql_select.h:
  Use query_id_t for query id values
sql/sql_table.cc:
  Make comparison to function pointer explicit
sql/sql_update.cc:
  Use query_id_t for query id values
sql/table.h:
  Use query_id_t for query id values
strings/ctype-simple.c:
  Add cast of long value to (char) in expression
strings/ctype-ucs2.c:
  Add cast of long value to (char) in expression
strings/ctype-utf8.c:
  Make cast to smaller size explicit
2005-03-18 16:12:25 -08:00
jimw@mysql.com
ee2b4ec959 Eliminate warnings noticed by VC7. This includes fixing my_mmap() on
Windows to call CreateFileMapping() with correct arguments, and
propogating the introduction of query_id_t to everywhere query ids are
passed around. (Bug #8826)
2005-03-18 16:12:25 -08:00
unknown
17791f9500 Merge 4.1 -> 5.0
heap/hp_create.c:
  Auto merged
mysql-test/mysql-test-run.sh:
  Auto merged
mysql-test/r/ctype_utf8.result:
  Auto merged
mysql-test/r/olap.result:
  Auto merged
mysql-test/t/func_str.test:
  Auto merged
sql/item.cc:
  Auto merged
sql/item.h:
  Auto merged
sql/item_func.cc:
  Auto merged
sql/item_strfunc.cc:
  Auto merged
sql/key.cc:
  Auto merged
sql/set_var.cc:
  Auto merged
sql/sql_select.h:
  Auto merged
sql/sql_string.h:
  Auto merged
client/mysqldump.c:
  Manual merge
mysql-test/r/func_gconcat.result:
  Manual merge
mysql-test/r/func_str.result:
  Manual merge
mysql-test/t/func_gconcat.test:
  Manual merge
sql/ha_heap.cc:
  Manual merge
sql/sql_select.cc:
  Manual merge
2005-03-17 16:51:07 +03:00
gluh@gluh.mysql.r18.ru
b435d6e862 Merge 4.1 -> 5.0 2005-03-17 16:51:07 +03:00
unknown
06f59b28ab Merge bk-internal.mysql.com:/home/bk/mysql-5.0
into mysql.com:/home/my/mysql-5.0


sql/item_func.cc:
  Auto merged
sql/log_event.cc:
  Auto merged
sql/mysql_priv.h:
  Auto merged
sql/sql_parse.cc:
  Auto merged
sql/sql_yacc.yy:
  Auto merged
2005-03-16 22:59:06 +02:00
monty@mysql.com
f42941073d Merge bk-internal.mysql.com:/home/bk/mysql-5.0
into mysql.com:/home/my/mysql-5.0
2005-03-16 22:59:06 +02:00
unknown
284b8b8b63 Cleanup during reviews
Removed some optional arguments
Fixed portability problem in federated tests


client/sql_string.cc:
  update from sql/sql_string.cc
client/sql_string.h:
  update from sql/sql_string.h
mysql-test/r/federated.result:
  Fixed error message
sql/field.cc:
  Cleanup during review
  Remove const in 'const unsigned int'
sql/field.h:
  Remove const in 'const unsigned int'
sql/ha_federated.cc:
  Better error string.  Add missing argument to error (before 'errno' was picked up from stack)
sql/handler.cc:
  Removed compiler warning
sql/item_func.cc:
  Cleanup during review
sql/item_sum.cc:
  Cleanup during review
sql/lock.cc:
  Remove optional arguments
sql/log_event.cc:
  Remove optional arguments
sql/mysql_priv.h:
  Remove optional arguments
  cahnge preapre_create_fields to use pointers instead of references
sql/opt_range.cc:
  Fix arguments so that return value is last
sql/sql_base.cc:
  Remove optional arguments
sql/sql_delete.cc:
  Remove optional arguments
sql/sql_error.cc:
  Remove optional arguments
sql/sql_help.cc:
  Remove optional arguments
sql/sql_parse.cc:
  Remove optional arguments
sql/sql_prepare.cc:
  Remove optional arguments
sql/sql_rename.cc:
  Remove optional arguments
sql/sql_select.cc:
  Remove optional arguments
sql/sql_show.cc:
  Cleanup during review
sql/sql_string.cc:
  Simple optimization
sql/sql_table.cc:
  Remove optional arguments
  Fixed indentation
sql/sql_update.cc:
  Remove optional arguments
sql/sql_yacc.yy:
  Change references to pointers
2005-03-16 16:11:01 +02:00
monty@mysql.com
594ef41b2d Cleanup during reviews
Removed some optional arguments
Fixed portability problem in federated tests
2005-03-16 16:11:01 +02:00
unknown
b3a5e5b1fd Bugs#9129: CHARSET(), COLLATION(), COERCIBILITY()
not always correct for NULL values.
Now they always result a non NULL value even
the argument is NULL. It is more usefull for 
debugging purposes.


mysql-test/r/func_str.result:
  Bugs#9129: CHARSET(), COLLATION(), COERCIBILITY()
  not always correct for NULL values.
  
  Also, a mistake in EXPORT_SET was fixed.
mysql-test/t/func_str.test:
  Bugs#9129: CHARSET(), COLLATION(), COERCIBILITY()
  not always correct for NULL values.
sql/item_func.cc:
  Bugs#9129: CHARSET(), COLLATION(), COERCIBILITY()
  not always correct for NULL values.
sql/item_strfunc.cc:
  Bugs#9129: CHARSET(), COLLATION(), COERCIBILITY()
  not always correct for NULL values.
  
  A minor mistake in EXPORT_SET() was fixed.
2005-03-16 17:44:29 +04:00
bar@mysql.com
a7b877df78 Bugs#9129: CHARSET(), COLLATION(), COERCIBILITY()
not always correct for NULL values.
Now they always result a non NULL value even
the argument is NULL. It is more usefull for 
debugging purposes.
2005-03-16 17:44:29 +04:00
unknown
5f75c8f5b4 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


client/mysqlbinlog.cc:
  Added support of two new binary log events Begin_load_query_log_event and
  Execute_load_query_log_Event which are used to replicate LOAD DATA INFILE.
mysql-test/r/ctype_ucs.result:
  Addition of two new types of binary log events shifted binlog positions.
  Updated test's results and made it more robust for future similar 
  changes.
mysql-test/r/insert_select.result:
  Addition of two new types of binary log events shifted binlog positions.
  Updated test's results and made it more robust for future similar 
  changes.
mysql-test/r/loaddata.result:
  Added tests for new LOAD DATA features.
mysql-test/r/mix_innodb_myisam_binlog.result:
  Addition of two new types of binary log events shifted binlog positions.
  Updated test's results (don't dare to get rid from binlog positions
  completely since it seems that this test uses them).
mysql-test/r/mysqlbinlog.result:
  New approach for binlogging of LOAD DATA statement. Now we store it as
  usual query and rewrite part in which file is specified when needed.
  So now mysqlbinlog output for LOAD DATA much more closer to its initial
  form. Updated test'd results accordingly.
mysql-test/r/mysqldump.result:
  Made test more robust to other tests failures.
mysql-test/r/rpl000015.result:
  Addition of two new types of binary log events shifted binlog positions.
  Updated test's results accordingly.
mysql-test/r/rpl_change_master.result:
  Addition of two new types of binary log events shifted binlog positions.
  Updated test's results.
mysql-test/r/rpl_charset.result:
  Addition of two new types of binary log events shifted binlog positions.
  Updated test's results accordingly
mysql-test/r/rpl_deadlock.result:
  Addition of two new types of binary log events shifted binlog positions.
  Updated test's results accordingly
mysql-test/r/rpl_error_ignored_table.result:
  Addition of two new types of binary log events shifted binlog positions.
  Updated test's results and made it more robust for future similar 
  changes.
mysql-test/r/rpl_flush_log_loop.result:
  Addition of two new types of binary log events shifted binlog positions.
  Updated test's results accordingly.
mysql-test/r/rpl_flush_tables.result:
  Addition of two new types of binary log events shifted binlog positions.
  Updated test's results and made it more robust for future similar 
  changes.
mysql-test/r/rpl_loaddata.result:
  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...
  
  Updated test's results wwith new binlog positions.
mysql-test/r/rpl_loaddata_rule_m.result:
  Addition of two new types of binary log events shifted binlog positions.
  Updated test's results and made it more robust for future similar 
  changes.
  Since now LOAD DATA is replicated much in the same way as usual query
  --binlog_do/ignore_db work for it inthe same way as for usual queries.
mysql-test/r/rpl_loaddata_rule_s.result:
  Addition of two new types of binary log events shifted binlog positions.
  Updated test's results accordingly.
mysql-test/r/rpl_loaddatalocal.result:
  Added nice test for case when it is important that LOAD DATA LOCAL
  ignores duplicates.
mysql-test/r/rpl_log.result:
  Addition of two new types of binary log events shifted binlog positions.
  Updated test's results accordingly (don't dare to get rid from binlog 
  positions completely since it seems that this test uses them).
mysql-test/r/rpl_log_pos.result:
  Addition of two new types of binary log events shifted binlog positions.
  Updated test's results accordingly.
mysql-test/r/rpl_max_relay_size.result:
  Addition of two new types of binary log events shifted binlog positions.
  Updated test's results accordingly.
mysql-test/r/rpl_multi_query.result:
  Addition of two new types of binary log events shifted binlog positions.
  Updated test's results accordingly.
mysql-test/r/rpl_relayrotate.result:
  Addition of two new types of binary log events shifted binlog positions.
  Updated test's results accordingly.
mysql-test/r/rpl_replicate_do.result:
  Addition of two new types of binary log events shifted binlog positions.
  Updated test's results accordingly.
mysql-test/r/rpl_reset_slave.result:
  Addition of two new types of binary log events shifted binlog positions.
  Updated test's results accordingly.
mysql-test/r/rpl_rotate_logs.result:
  Addition of two new types of binary log events shifted binlog positions.
  Updated test's results accordingly.
mysql-test/r/rpl_server_id1.result:
  Addition of two new types of binary log events shifted binlog positions.
  Updated test's results accordingly.
mysql-test/r/rpl_server_id2.result:
  Addition of two new types of binary log events shifted binlog positions.
  Updated test's results accordingly.
mysql-test/r/rpl_temporary.result:
  Addition of two new types of binary log events shifted binlog positions.
  Updated test's results and made it more robust for future similar 
  changes.
mysql-test/r/rpl_timezone.result:
  Addition of two new types of binary log events shifted binlog positions.
  Updated test's results and made it more robust for future similar 
  changes.
mysql-test/r/rpl_until.result:
  Addition of two new types of binary log events shifted binlog positions.
  Updated test's results accordingly and tweaked test a bit to bring it
  back to good shape.
mysql-test/r/rpl_user_variables.result:
  Addition of two new types of binary log events shifted binlog positions.
  Updated test's results and made it more robust for future similar 
  changes.
mysql-test/r/user_var.result:
  Addition of two new types of binary log events shifted binlog positions.
  Updated test's results and made it more robust for future similar 
  changes.
mysql-test/t/ctype_ucs.test:
  Addition of two new types of binary log events shifted binlog positions.
  Updated test accordingly and made it more robust for future similar
  changes.
mysql-test/t/insert_select.test:
  Addition of two new types of binary log events shifted binlog positions.
  Updated test accordingly and made it more robust for future similar
  changes.
mysql-test/t/loaddata.test:
  Added test cases for new LOAD DATA functionality.
mysql-test/t/mix_innodb_myisam_binlog.test:
  Addition of two new types of binary log events shifted binlog positions.
  Updated test accordingly.
mysql-test/t/mysqlbinlog.test:
  New way of replicating LOAD DATA local. 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...
  
  Thus we need new binlog positions for LOAD DATA events.
mysql-test/t/mysqlbinlog2.test:
  Addition of two new types of binary log events shifted binlog positions.
  Updated test accordingly.
mysql-test/t/mysqldump.test:
  Made test more robust for failures of other tests.
mysql-test/t/rpl_charset.test:
  Addition of two new types of binary log events shifted binlog positions.
  Updated test accordingly.
mysql-test/t/rpl_deadlock.test:
  Addition of two new types of binary log events shifted binlog positions.
  Updated test accordingly.
mysql-test/t/rpl_error_ignored_table.test:
  Addition of two new types of binary log events shifted binlog positions.
  Updated test accordingly and made it more robust for future similar
  changes.
mysql-test/t/rpl_flush_tables.test:
  Addition of two new types of binary log events shifted binlog positions.
  Made test more robust for future similar changes.
mysql-test/t/rpl_loaddata.test:
  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...
  
  Apropritely updated comments in test.
mysql-test/t/rpl_loaddata_rule_m.test:
  Addition of two new types of binary log events shifted binlog positions.
  Updated test accordingly and made it more robust for future similar 
  changes.
  Since now LOAD DATA is replicated much in the same way as usual query
  --binlog_do/ignore_db work for it inthe same way as for usual queries.
mysql-test/t/rpl_loaddata_rule_s.test:
  Addition of two new types of binary log events shifted binlog positions.
  Updated test accordingly.
mysql-test/t/rpl_loaddatalocal.test:
  Added nice test for case when it is important that LOAD DATA LOCAL
  ignores duplicates.
mysql-test/t/rpl_log.test:
  Addition of two new types of binary log events shifted binlog positions.
  Updated test accordingly (don't dare to get rid from binlog positions
  completely since it seems that this test uses them).
mysql-test/t/rpl_log_pos.test:
  Addition of two new types of binary log events shifted binlog positions.
  Updated test accordingly.
mysql-test/t/rpl_multi_query.test:
  Addition of two new types of binary log events shifted binlog positions.
  Updated test accordingly.
mysql-test/t/rpl_temporary.test:
  Addition of two new types of binary log events shifted binlog positions.
  Made test more robust for future similar changes.
mysql-test/t/rpl_timezone.test:
  Addition of two new types of binary log events shifted binlog positions.
  Made test more robust for future similar changes.
mysql-test/t/rpl_until.test:
  Addition of two new types of binary log events shifted binlog positions.
  Updated test accordingly and tweaked it a bit to bring it back to good
  shape.
mysql-test/t/rpl_user_variables.test:
  Addition of two new types of binary log events shifted binlog positions.
  Updated test accordingly and made it more robust for future similar
  changes.
mysql-test/t/user_var.test:
  Addition of two new types of binary log events shifted binlog positions.
  Updated test accordingly and made it more robust for future similar
  changes.
sql/item_func.cc:
  Added Item_user_var_as_out_param class that represents user variable
  which used as out parameter in LOAD DATA.
  
  Moved code from Item_func_set_user_var::update_hash() function to
  separate static function to be able to reuse it in this new class.
sql/item_func.h:
  Added Item_user_var_as_out_param class that represents user variable
  which used as out parameter in LOAD DATA.
sql/log_event.cc:
  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.
sql/log_event.h:
  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.
sql/mysql_priv.h:
  Now mysql_load() has two more arguments. They are needed to pass list of
  columns and corresponding expressions from new LOAD DATA's SET clause.
sql/share/errmsg.txt:
  Added new error message which is used to forbid loading of data from
  fixed length rows to variables.
sql/sql_lex.h:
  Added LEX::fname_start/fname_end members. 
  They are pointers to part of LOAD DATA statement which should be
  rewritten during replication (file name + little extra).
sql/sql_load.cc:
  Added support for 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.
  
  Updated mysql_load()/read_fixed_length()/read_sep_field() to support
  this functionality (now they can read data from file to both columns and
  variables and assign do calculations and assignments specified in SET
  clause).
  
  We also use new approach for LOAD DATA binlogging/replication.
sql/sql_parse.cc:
  mysql_execute_command():
    Since now we have SET clause in LOAD DATA we should also check
    permissions for tables used in its expressions. Also mysql_load()
    has two more arguments to pass information about this clause.
sql/sql_repl.cc:
  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.
sql/sql_repl.h:
  struct st_load_file_info:
    Removed memebers which are no longer needed for LOAD DATA binnlogging.
sql/sql_yacc.yy:
  Added support for extended LOAD DATA syntax. 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;
  
  Also now we save pointers to the beginning and to the end of part of 
  LOAD DATA statement which should be rewritten during replication.
2005-03-16 04:32:47 +03: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