Commit graph

5936 commits

Author SHA1 Message Date
unknown
d2906f0ed0 Fix for Bug #3307 "FLUSH TABLES sometimes breaks prepared statement
table resolution".
Added members to Item_ident for storing original db, table and field
names since those that set later from Field have shorter life-time 
than required by prep. stmt. So we need to restore original names in 
Item_ident::cleanup(). Also now using special construnctor for creation
of Item_field from Field object that ensures that table and field name 
have big enough life-time.

"Fix" for bug #2050 "10 to 1 performance drop with server 4.1.1"
Clean ups in implementation of caching of field number in table.
Added caching of table in which field is found in find_field_in_tables(). 


sql/item.cc:
  Added members to Item_ident for storing original db, table and field
  names since those that set later from Field have shorter life-time 
  than required by prep. stmt. So we need to restore original names in 
  Item_ident::cleanup().
  Added Item_ident::cached_table for caching table there we found 
  our field.
  Added special constructor for creation of Item_field from Field object
  that ensures that table and field name have big enough life-time.
sql/item.h:
  Added members to Item_ident for storing original db, table and field
  names since those that set later from Field have shorter life-time 
  than required by prep. stmt. So we need to restore original names in 
  Item_ident::cleanup().
  Changed type of Item_ident::cached_field_index from int to uint
  (and so NO_CACHED_FIELD_INDEX is UINT_MAX now) because we want to
  save one comparison in find_field_in_table().
  Added Item_ident::cached_table for caching table there we found 
  our field.
  Added special constructor for creation of Item_field from Field object
  that ensures that table and field name have big enough life-time.
sql/mysql_priv.h:
  Changed type of cached_field_index_ptr from int* to uint*
  (and so NO_CACHED_FIELD_INDEX is UINT_MAX now) because we want to
  save one comparison in find_field_in_table().
sql/sql_acl.cc:
  Changed type of find_field_in_table() paremeter to make it 
  faster.
sql/sql_base.cc:
  find_field_in_table(): small optimization and soime clean ups in 
   caching of field index.
  find_field_in_tables(): added aggresive caching of table in which
   field is found in Item_ident::cached_table.
  insert_fields():
   using special construnctor for creation of Item_field from Field 
   object that ensures that table and field name have big enough life-time.
2004-03-31 21:25:55 +04:00
unknown
f6a8ec5f92 "Fix" for BUG #2050 "10 to 1 performance drop with server 4.1.1".
Actually it is not a bug but right behavior observed as pefomance 
degradation after we have forced Item_field::fix_fields() to 
re-execute each time when we are executing prep stmt.

This patch implements small optimization which heals this bad 
behavior. We are caching field position in TABLE::field array in
Item's member and are using this position for speeding up field
lookups in fix_fields() in case of its re-execution.


sql/item.cc:
  Added cached_field_index member to Item_ident for caching field
  position in TABLE::field array for quicker field lookup in case 
  fix_fields() is executed twice.
sql/item.h:
  Added cached_field_index member to Item_ident for caching field
  position in TABLE::field array for quicker field lookup in case 
  fix_fields() is executed twice.
sql/mysql_priv.h:
  Now find_field_in_table has one more in-out parameter which is used
  for caching field index in TABLE::field array stored for quicker
  field look up.
sql/sql_acl.cc:
  Now find_field_in_table has one more in-out parameter which is used
  for caching field index in TABLE::field array stored for quicker
  field look up.
sql/sql_base.cc:
  Optimization: Now when we are looking up Field by its name we are 
  caching its position in TABLE::field array in Item_ident::cached_field_index,
  so when we will call fix_fields() second time for this item (e.g.
  when we are re-executing prep statement) we can reuse this index
  to speed up this lookup.
sql/table.cc:
  Now we storing in TABLE::name_hash pointers to elements of 
  TABLE::field array, because this allows easily retrieve index
  of field in this array when it is looked up by its name.
sql/table.h:
  Added comment claryfying what we store in TABLE::name_hash.
BitKeeper/etc/logging_ok:
  Logging to logging@openlogging.org accepted
2004-03-28 04:11:54 +04:00
unknown
2f74974b05 Merge bk-internal:/home/bk/mysql-4.1/
into serg.mylan:/usr/home/serg/Abk/mysql-4.1
2004-03-24 17:24:08 +01:00
unknown
6573112f67 accorting to the manual, when neither GLOBAL or SESSION in SET
is specified, the default is SESSION.
2004-03-24 16:33:47 +01:00
unknown
f015379b53 SHOW PRIVILEGES updated (Bug#3227)
Docs/README.1st:
  Change mode to -rw-rw-r--
2004-03-24 14:44:31 +01:00
unknown
665a255dee Unicode Collation Algorithm subset implementation 2004-03-24 16:16:08 +04:00
unknown
256321fafa Merge bk-internal:/home/bk/mysql-4.1/
into serg.mylan:/usr/home/serg/Abk/mysql-4.1
2004-03-23 15:25:45 +01:00
unknown
c0a9df1aae correct support for a mix of UNION/UNION ALL in the same query.
Bug#1428
2004-03-23 14:43:24 +01:00
unknown
b02e83becf Merge abotchkov@bk-internal.mysql.com:/home/bk/mysql-4.1
into deer.(none):/home/hf/work/mysql-4.1.3188


sql/item.cc:
  Auto merged
2004-03-23 13:09:50 +04:00
unknown
a0dce8c864 Merge abotchkov@bk-internal.mysql.com:/home/bk/mysql-4.1
into deer.(none):/home/hf/work/mysql-4.1.clean


sql/item.cc:
  Auto merged
mysql-test/r/subselect.result:
  Auto merged
mysql-test/t/subselect.test:
  Auto merged
2004-03-22 17:48:29 +04:00
unknown
560fc0379b aliases should be compared with my_strcasecmp (BUG#3251)
some db comparison code cleupup
removed compiler warnings


mysql-test/r/lowercase_table.result:
  test for BUG#3251
mysql-test/t/lowercase_table.test:
  test for BUG#3251
sql/item.cc:
  simple strcmp can be used for db name comparison
sql/set_var.h:
  changed initialisation order to satisfy compiler
sql/sql_cache.cc:
  simple strcmp can be used for db name comparison
sql/sql_db.cc:
  better use special cherset for files
sql/sql_parse.cc:
  simple strcmp can be used for db name comparison
  aliases should be compared with my_strcasecmp
sql/sql_select.cc:
  aliases should be compared with my_strcasecmp
2004-03-22 15:43:13 +02:00
unknown
afbf1bbaa4 Merge sanja.is.com.ua:/home/bell/mysql/bk/mysql-4.1
into sanja.is.com.ua:/home/bell/mysql/bk/work-select_list-4.1


sql/sql_parse.cc:
  Auto merged
2004-03-21 16:39:37 +02:00
unknown
81836c8ec3 more sys_var_str fixes
mysql-test/r/variables.result:
  more tests
mysql-test/t/variables.test:
  more tests
sql/set_var.cc:
  don't crash on NULL
2004-03-20 17:08:01 +01:00
unknown
1f08d0b4bd sys_var_str.value is never NULL 2004-03-20 15:56:20 +01:00
unknown
b399754780 Merge bk-internal:/home/bk/mysql-4.1/
into serg.mylan:/usr/home/serg/Abk/mysql-4.1


sql/set_var.cc:
  Auto merged
mysql-test/t/ctype_utf8.test:
  Auto merged
2004-03-20 14:36:49 +01:00
unknown
eb3ded5665 select @@smth=@@sys_str_var crash fixed
mysql-test/r/variables.result:
  new test
mysql-test/t/ctype_utf8.test:
  typos fixed
mysql-test/t/variables.test:
  new test
sql/mysqld.cc:
  sys_str_var->value must be not NULL
sql/set_var.cc:
  initialize sys_str_var->value from a constructor
sql/set_var.h:
  initialize sys_str_var->value from a constructor
2004-03-20 14:36:00 +01:00
unknown
9876b6a7ac Merge sanja.is.com.ua:/home/bell/mysql/bk/mysql-4.1
into sanja.is.com.ua:/home/bell/mysql/bk/work-select_list-4.1
2004-03-20 14:36:58 +02:00
unknown
7699bb4784 Merge sanja.is.com.ua:/home/bell/mysql/bk/mysql-4.1
into sanja.is.com.ua:/home/bell/mysql/bk/work-select_list-4.1


sql/item_func.cc:
  Auto merged
sql/item_strfunc.cc:
  Auto merged
2004-03-20 13:37:30 +02:00
unknown
f379d7b172 after review changes
sql/item.cc:
  removed double_fix & already_fixed in Item_field
sql/item.h:
  added quick_fix_field() for cases when we are sure that no need full fix_field processing
  fixed neg() method for numeric constants to have the same logic as constant parser
  Item_null, Item_real, ... are constant which are fixed by creation
sql/item_cmpfunc.h:
  right fix_fields in and_conds call
sql/item_func.cc:
  changed Item_field constructor call
  fix_field emulation call
sql/item_strfunc.cc:
  correct layout
sql/item_subselect.cc:
  correct layout
  changed Item_field constructor call
sql/item_sum.cc:
  changed Item_field constructor call
sql/item_sum.h:
  changed Item_field constructor call
sql/sql_base.cc:
  fixed layout
  right fix_fields calls
sql/sql_help.cc:
  changed Item_field constructor call
sql/sql_load.cc:
  changed Item_field constructor call
sql/sql_parse.cc:
  constant changed
sql/sql_select.cc:
  fixed layout
  fix_field emulation insted of real fix_fields call
sql/sql_show.cc:
  changed Item_field constructor call
sql/sql_union.cc:
  changed Item_field constructor call
  double_fix removed
sql/sql_update.cc:
  renamed variable, fixed layout
sql/sql_yacc.yy:
  typo fixed
  fix_fields emulation calls
  hegation of numbers fixed
2004-03-20 13:36:26 +02:00
unknown
2d20eddcbb Merge bk-internal.mysql.com:/home/bk/mysql-4.1
into mysql.com:/home/my/mysql-4.1
2004-03-20 12:50:12 +02:00
unknown
28813a9ea9 Added test to show bug in current union implementation
After merge fixes
Portability fixes


client/mysqltest.c:
  Fixed that unget() is done properly (needed for QNX where one can't do many ungetc() in a row)
include/errmsg.h:
  After merge fixes
mysql-test/mysql-test-run.sh:
  merge fix
mysql-test/r/system_mysql_db.result:
  Updated results for 4.1
mysql-test/r/union.result:
  Added new test
mysql-test/t/derived.test:
  Portability fix (for Mac OS X)
mysql-test/t/system_mysql_db_refs.test:
  Remove warnings
mysql-test/t/union.test:
  Added test to show bug in current union implementation (to be fixed in 4.1)
scripts/mysql_create_system_tables.sh:
  Fix wrong column define
scripts/mysql_fix_privilege_tables.sh:
  Fix for mysql-test-run
scripts/mysql_fix_privilege_tables.sql:
  Merge with 4.0 to get comments.
  Updated so that it works with privilege tables for MySQL 3.23.
sql/repl_failsafe.cc:
  After merge fix
2004-03-19 18:33:38 +02:00
unknown
5395e2e08a DROP DATABASE now returns (affected_rows) number of tables dropped 2004-03-19 16:43:03 +01:00
unknown
67ea8aac5e merge with 4.0 (to get compiler error fixes for innodb)
client/mysqltest.c:
  Auto merged
include/errmsg.h:
  Auto merged
include/mysql_version.h.in:
  Auto merged
innobase/que/que0que.c:
  Auto merged
mysql-test/t/rpl000009.test:
  Auto merged
sql/set_var.cc:
  Auto merged
libmysql/errmsg.c:
  merge with 4.0
libmysql/libmysql.c:
  merge with 4.0
mysql-test/mysql-test-run.sh:
  merge with 4.0
mysql-test/r/rpl000009.result:
  merge with 4.0
scripts/mysql_fix_privilege_tables.sh:
  merge with 4.0
sql/repl_failsafe.cc:
  merge with 4.0
2004-03-19 15:17:56 +02:00
unknown
d212d76094 Merge sgluhov@bk-internal.mysql.com:/home/bk/mysql-4.1
into gluh.mysql.r18.ru:/home/gluh/mysql-4.1.clear
2004-03-19 14:36:12 +04:00
unknown
433c2bf535 Fix for bug#1439 UDF Corruption 2004-03-19 14:35:00 +04:00
unknown
54735ae3a9 Bug #3087 CONCAT_WS makes the server die in case of illegal mix of collations 2004-03-19 12:09:14 +04:00
unknown
8bbb6d2b42 Bug #2821 Table default character set affects LONGBLOB fields 2004-03-19 11:37:49 +04:00
unknown
647498e965 fixed signed numeric literal parsing
sql/item.h:
  added negation methods for numeric Items
sql/sql_yacc.yy:
  fixed numeric literal
2004-03-18 18:27:03 +02:00
unknown
85dddd908a merge
sql/field.cc:
  Auto merged
sql/item.cc:
  Auto merged
sql/item_cmpfunc.cc:
  Auto merged
sql/item_func.h:
  Auto merged
sql/sql_base.cc:
  Auto merged
sql/sql_parse.cc:
  Auto merged
sql/sql_select.cc:
  Auto merged
sql/sql_show.cc:
  Auto merged
sql/sql_update.cc:
  Auto merged
sql/sql_yacc.yy:
  Auto merged
2004-03-18 15:21:06 +02:00
unknown
1a81e04145 DBUG_ASSERT(fixed == 1); added to val*
small optimisation in signed_literal


sql/field.cc:
  layout fixed
sql/item.cc:
  DBUG_ASSERT(fixed == 1); added to val*
  layout fixed
  fixed= 1; added where it was forgoten in fix_fields
  Item_string can be used without fix_fields
sql/item.h:
  DBUG_ASSERT(fixed == 1); added to val*
  Item_string can be used without fix_fields
sql/item_cmpfunc.cc:
  DBUG_ASSERT(fixed == 1); added to val*
sql/item_cmpfunc.h:
  fixed layout and getting Item statistic
sql/item_func.cc:
  DBUG_ASSERT(fixed == 1); added to val*
sql/item_func.h:
  DBUG_ASSERT(fixed == 1); added to val*
sql/item_geofunc.cc:
  DBUG_ASSERT(fixed == 1); added to val*
sql/item_strfunc.cc:
  DBUG_ASSERT(fixed == 1); added to val*
  layout fixed
sql/item_strfunc.h:
  DBUG_ASSERT(fixed == 1); added to val*
sql/item_subselect.cc:
  DBUG_ASSERT(fixed == 1); added to val*
sql/item_sum.cc:
  DBUG_ASSERT(fixed == 1); added to val*
sql/item_sum.h:
  DBUG_ASSERT(fixed == 1); added to val*
sql/item_timefunc.cc:
  DBUG_ASSERT(fixed == 1); added to val*
sql/item_timefunc.h:
  DBUG_ASSERT(fixed == 1); added to val*
sql/item_uniq.h:
  DBUG_ASSERT(fixed == 1); added to val*
sql/sql_base.cc:
  Item creation revised
sql/sql_help.cc:
  Item creation revised
sql/sql_load.cc:
  Item creation revised
sql/sql_parse.cc:
  fix_field call added
sql/sql_select.cc:
  Item creation revised
sql/sql_show.cc:
  Item creation revised
sql/sql_union.cc:
  Item creation revised
sql/sql_update.cc:
  Item creation revised
sql/sql_yacc.yy:
  Item creation revised
  small optimisation in signed_literal
2004-03-18 15:14:36 +02:00
unknown
257d8ede4b Fix for #3188
mysql-test/r/subselect.result:
  appropriate test result
mysql-test/t/subselect.test:
  test case
sql/item.cc:
  we can get NULL here if the field isn't unique
2004-03-18 16:49:48 +04:00
unknown
b349ef1c8c Merge sgluhov@bk-internal.mysql.com:/home/bk/mysql-4.1
into gluh.mysql.r18.ru:/home/gluh/mysql-4.1.clear
2004-03-18 15:54:04 +04:00
unknown
6bd63eb902 Fix for valgrind errors in str_to_TIME(using of uninitialize variable). 2004-03-18 15:51:08 +04:00
unknown
ee63578fe2 Merge bk-internal:/home/bk/mysql-4.1/
into serg.mylan:/usr/home/serg/Abk/mysql-4.1


sql/sql_db.cc:
  Auto merged
2004-03-18 11:04:36 +01:00
unknown
84b256013b make DROP DATABASE to behave as documented in the manual - to report number of files deleted 2004-03-18 11:03:24 +01:00
unknown
f107cb7098 Don't change server suffix if given to configure
Portability fixes


client/mysqltest.c:
  Fixed output of 'affected rows'
innobase/os/os0file.c:
  Portability fix (for AIX)
mysql-test/r/rpl_trunc_binlog.result:
  Update results after merge
sql/mysqld.cc:
  Don't change server suffix if given to configure
2004-03-18 01:48:46 +02:00
unknown
24148f04c7 merge fixes (use old code)
client/mysqladmin.c:
  Auto merged
client/mysqltest.c:
  Auto merged
innobase/dict/dict0dict.c:
  Auto merged
innobase/include/os0file.h:
  Auto merged
innobase/os/os0file.c:
  Auto merged
myisam/mi_check.c:
  Auto merged
sql/ha_innodb.cc:
  Auto merged
sql/item_cmpfunc.cc:
  Auto merged
sql/item_func.cc:
  Auto merged
sql/mysql_priv.h:
  Auto merged
sql/opt_range.cc:
  Auto merged
sql/set_var.cc:
  Auto merged
sql/sql_base.cc:
  Auto merged
sql/sql_cache.cc:
  Auto merged
sql/sql_class.h:
  Auto merged
sql/sql_handler.cc:
  Auto merged
sql/sql_insert.cc:
  Auto merged
sql/sql_parse.cc:
  Auto merged
sql/sql_select.cc:
  Auto merged
sql/sql_yacc.yy:
  Auto merged
2004-03-18 00:16:04 +02:00
unknown
022c5241a9 after merge fixes
include/my_tree.h:
  After merge fixes
mysql-test/r/create.result:
  After merge fixes
mysql-test/r/insert.result:
  After merge fixes
mysql-test/r/multi_update.result:
  After merge fixes
mysql-test/r/query_cache.result:
  After merge fixes
mysql-test/r/rpl_error_ignored_table.result:
  After merge fixes
mysql-test/r/rpl_optimize.result:
  After merge fixes
mysql-test/r/show_check.result:
  After merge fixes
mysql-test/t/insert.test:
  After merge fixes (Remove columns with space last)
mysql-test/t/multi_update.test:
  After merge fixes
mysql-test/t/show_check.test:
  After merge fixes
sql/field.cc:
  Remove compiler warnings
sql/sql_base.cc:
  Fix bug when table was refreshed
2004-03-18 00:09:13 +02:00
unknown
7395d54d5b ha_innodb.cc:
Add a comment that InnoDB always retrieves the row id, if the clustered index was internally generated by InnoDB. Then we know the 'ref' to the row.


sql/ha_innodb.cc:
  Add a comment that InnoDB always retrieves the row id, if the clustered index was internally generated by InnoDB. Then we know the 'ref' to the row.
2004-03-17 22:28:49 +02:00
unknown
fd2b1a5890 Merge paul@bk-internal.mysql.com:/home/bk/mysql-4.1
into teton.kitebird.com:/home/paul/mysql-4.1
2004-03-17 12:43:16 -06:00
unknown
6d35642fa7 Fix typo. 2004-03-17 12:28:26 -06:00
unknown
68273f0f84 Many files:
Fix Bug #1942: do not retrieve all columns in a table if we only need the 'ref' of the row (usually, the PRIMARY KEY) to calculate an ORDER BY


innobase/dict/dict0dict.c:
  Fix Bug #1942: do not retrieve all columns in a table if we only need the 'ref' of the row (usually, the PRIMARY KEY) to calculate an ORDER BY
innobase/include/dict0dict.h:
  Fix Bug #1942: do not retrieve all columns in a table if we only need the 'ref' of the row (usually, the PRIMARY KEY) to calculate an ORDER BY
innobase/include/row0mysql.h:
  Fix Bug #1942: do not retrieve all columns in a table if we only need the 'ref' of the row (usually, the PRIMARY KEY) to calculate an ORDER BY
sql/ha_innodb.cc:
  Fix Bug #1942: do not retrieve all columns in a table if we only need the 'ref' of the row (usually, the PRIMARY KEY) to calculate an ORDER BY
sql/sql_select.cc:
  Fix Bug #1942: do not retrieve all columns in a table if we only need the 'ref' of the row (usually, the PRIMARY KEY) to calculate an ORDER BY
include/my_base.h:
  Fix Bug #1942: do not retrieve all columns in a table if we only need the 'ref' of the row (usually, the PRIMARY KEY) to calculate an ORDER BY
2004-03-17 19:37:48 +02:00
unknown
88fb419f6c Merge paul@bk-internal.mysql.com:/home/bk/mysql-4.1
into teton.kitebird.com:/home/paul/mysql-4.1
2004-03-17 11:15:36 -06:00
unknown
c6a0599642 WL #1510 "Implement support for "commercial" binaries on handshake",
client library:
- implemented 'check_license' function


include/errmsg.h:
  WL #1510: new error code
include/mysql_version.h.in:
  WL #1510: fallback define for LICENSE
libmysql/errmsg.c:
  WL #1510: error message to print in case when client and server license 
  mismatch.
libmysql/libmysql.c:
  WL#1510: implementation of 'check_license' function
sql/set_var.cc:
  removed unused variable 'license'
2004-03-17 20:04:50 +03:00
unknown
8bdbfee96b merge
sql/item.h:
  Auto merged
sql/item_func.cc:
  Auto merged
sql/sql_select.cc:
  Auto merged
mysql-test/r/subselect.result:
  resolving conflicts
mysql-test/t/subselect.test:
  resolving conflicts
2004-03-17 18:57:51 +04:00
unknown
8f705fbc07 Merge paul@bk-internal.mysql.com:/home/bk/mysql-4.1
into teton.kitebird.com:/home/paul/mysql-4.1
2004-03-17 08:56:22 -06:00
unknown
6ff6a5eade Code cleanup:
- added unsigned_flag= 1; to Item_uint constructors
- removed Item_uint::fix_fields()
- added a comment about fix_fields() call


sql/item.h:
  added unsigned_flag= 1; to Item_uint constructors
  removed Item_uint::fix_fields()
sql/item_func.cc:
  added a comment about fix_fields() call.
2004-03-17 18:40:04 +04:00
unknown
f83cf41440 DBUG_ASSERT(fixed == 0) added to fix_fields()
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
2004-03-17 14:26:26 +02:00
unknown
0de92f8255 Merge sgluhov@bk-internal.mysql.com:/home/bk/mysql-4.1
into gluh.mysql.r18.ru:/home/gluh/mysql-4.1.clear
2004-03-17 16:19:52 +04:00
unknown
ca0ece1374 Fix for bug#3086: SHOW GRANTS doesn't follow ANSI_QUOTES 2004-03-17 16:19:09 +04:00