BitKeeper/etc/logging_ok:
auto-union
sql/item.cc:
Auto merged
sql/item.h:
Auto merged
sql/mysql_priv.h:
Auto merged
sql/sql_acl.cc:
Auto merged
sql/sql_base.cc:
Manual merge
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.
Marked --no-set-names as deprecated, the name is misleading and --no- in front
makes it cumbersome to use with --disable or --skip prefixes.
The old option will still work for the time being.
client/client_priv.h:
Added option --set-charset (disable with --skip-set-charset) to mysqldump.
Portability fixes
client/mysqltest.c:
Fixed that if error number 0 is included in --error, we will not generate an error message
include/mysql.h:
Portability fix
mysql-test/mysql-test-run.sh:
Portability fix
mysql-test/r/heap_btree.result:
Portability fix
mysql-test/r/rpl_error_ignored_table.result:
Portability fix
mysql-test/t/heap_btree.test:
Portability fix
mysql-test/t/rpl_error_ignored_table.test:
Portability fix
sql/sql_base.cc:
simple optimzation
sql/sql_yacc.yy:
simple optimzation
implemented in the client library and server.
Warning: this makes the new client library and server incompatible with all
previous versions and 5.0.
libmysql/libmysql.c:
Make client library compatible with future extensions: types of placeholders,
names of named parameters, cursors and array execution.
sql/sql_prepare.cc:
Alpha server side support for future extensions: types of placeholders and names of
named parameters are sent to client (virtually), cursor flags and execution
count received in COM_EXECUTE packet are ignored.
mysql-test/r/query_cache.result:
test suite for BUG#3296
mysql-test/t/query_cache.test:
test suite for BUG#3296
sql/sql_cache.cc:
null processing for character_set_results
and for (2) converting the columns:
1. ALTER TABLE t1 [DEFAULT] CHARACTER SET xxx [COLLATE yyy]
2. ALTER TABLE t1 CONVERT TO CHARACTER SET xxx [COLLATE yyy]
client/mysqltest.c:
Added support for --enable_metadata
mysql-test/t/order_by.test:
Improved comment
scripts/mysqlaccess.sh:
CGI is required (Bug #2988)
sql/field.cc:
Fix to get correct metadata when using temporary tables to create result
sql/field.h:
Fix to get correct metadata when using temporary tables to create result
sql/sql_insert.cc:
Fix to get correct metadata when using temporary tables to create result
include/m_string.h:
Auto merged
myisam/mi_create.c:
Auto merged
mysql-test/r/bdb-crash.result:
Auto merged
sql/handler.h:
Auto merged
mysql-test/r/grant_cache.result:
Auto merged
mysql-test/t/grant_cache.test:
Auto merged
sql/sql_cache.cc:
Auto merged
sql/sql_table.cc:
Auto merged
innobase/mem/mem0dbg.c:
Merge with 4.0
mysql-test/r/myisam.result:
Merge with 4.0
mysql-test/r/order_by.result:
Merge with 4.0
mysql-test/t/bdb-crash.test:
Merge with 4.0
mysql-test/t/myisam.test:
Merge with 4.0
mysql-test/t/order_by.test:
Merge with 4.0
sql/ha_berkeley.cc:
Merge with 4.0 (use local code)
sql/sql_select.cc:
Merge with 4.0 to get fix for FORCE INDEX ... ORDER BY
No need to check for result existence any more, store_result functions
now are shorter.
cli_read_binary_rows rewritten to handle MYSQL_DATA directly.
include/mysql.h:
MYSQL_RES * pointer replaced with MYSQL_DATA: it saves us at least 2 mallocs
per store_result and simplifies stored result handling.
Plus it's done with cursor fetch in mind: cursor fetch will use this
structure to buffer fetched rows.
libmysql/client_settings.h:
signature of cli_read_binary_rows changed
libmysql/libmysql.c:
MYSQL_DATA is now used to handle result.
cli_read_binary_rows rewritten to use MYSQL_DATA directly.
libmysql/libmysql.def:
declarations of new calls in the library
libmysqld/lib_sql.cc:
MYSQL_DATA is now used to handle result.
cli_read_binary_rows rewritten to use MYSQL_DATA directly.
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
that it tested the privilege in ::update() whereas it should be
in ::check() (see email from Serg, subject
"Re: bk commit - 4.1 tree (guilhem:1.1706)").
So I add instead a check_func function to sys_var_thd_bit.
I do the same addition to sys_var_thd_ulong, to unify handling
of PSEUDO_THREAD_ID with the one of SQL_LOG_BIN. So class
sys_var_pseudo_thread_id is not needed anymore, removing it.
mysql-test/r/rpl_temporary.result:
result update
mysql-test/t/rpl_temporary.test:
tests after new way of fixing; verify that when second variable
assignment is refused then first is not done.
sql/set_var.cc:
a check_func (check_log_update) when setting SQL_LOG_BIN,
and one when setting PSEUDO_THREAD_ID.
Removing class sys_var_pseudo_thread_id.
Updates for new prototypes of constructor in sys_var_thd_bit
and sys_var_thd_ulong.
sql/set_var.h:
Adding check_func to sys_var_thd_bit.
Adding check_func to sys_var_thd_ulong, so class sys_var_pseudo_thread_id
is not needed anymore, removing it.
"Running ANALYZE TABLE on bdb table inside a transaction hangs server thread"
mysql-test/r/bdb-crash.result:
added test for bug #2342
"Running ANALYZE TABLE on bdb table inside a transaction hangs server thread"
mysql-test/t/bdb-crash.test:
added test for bug #2342
"Running ANALYZE TABLE on bdb table inside a transaction hangs server thread"
sql/handler.h:
added constant HA_ADMIN_REJECT
sql/sql_table.cc:
added processing of HA_ADMIN_REJECT in ha_berkley::analyze
"Running ANALYZE TABLE on bdb table inside a transaction hangs server thread"
1. added new status HA_ADMIN_REJECT and processing of it in mysql_admin_table
2. got ha_berkley::analyze to return HA_ADMIN_REJECT if there are any
transactions with the table..
mysql-test/r/bdb-crash.result:
added test for bug #2342
"Running ANALYZE TABLE on bdb table inside a transaction hangs server thread"
mysql-test/t/bdb-crash.test:
added test for bug #2342
"Running ANALYZE TABLE on bdb table inside a transaction hangs server thread"
sql/ha_berkeley.cc:
fixed bug #2342
"Running ANALYZE TABLE on bdb table inside a transaction hangs server thread"
we have to return new status "HA_ADMIN_REJECT" for ha_berkley::analyze
if there are any transaction for this table
so as bdb documentation says:
"The DB->stat method cannot be transaction protected"
sql/handler.h:
added new status of table info "HA_ADMIN_REJECT"
We have to return this status for bdb tables which
have any active transactions so as bdb-documentation says:
"The DB->stat method cannot be transaction-protected"
sql/sql_table.cc:
added processing of the new status HA_ADMIN_REJECT in mysql_admin_table
(reason to add this status is explained in comment
for commit on sql/handler.h)
into mysql.com:/home/mysql_src/mysql-4.1
mysql-test/r/rpl_temporary.result:
Auto merged
mysql-test/t/rpl_temporary.test:
Auto merged
sql/set_var.cc:
Auto merged
user is not SUPER, instead of setting the value but ignoring it
silently internally.
mysql-test/r/rpl_temporary.result:
result update
mysql-test/t/rpl_temporary.test:
adding test for privileges for SET SQL_LOG_BIN
sql/log.cc:
don't need to check SUPER
sql/set_var.cc:
refuse SET SQL_LOG_BIN if not SUPER
sql/sql_insert.cc:
Don't need to check SUPER
init the binlog_cache (THD::transaction.trans_log).
I have checked all places where trans_log is used, because as now
it may not be inited in some cases, we have to be cautious
(will forward this commit mail to Heikki).
sql/handler.cc:
Do not use the transaction binlog cache if binlog is not open
sql/sql_class.cc:
We do not init the transaction binlog cache if binlog is not open.
This saves 32 KB memory per thread, if --log-bin is not used.
sql/sql_class.h:
warning comment