result set".
To enable full access to contents of I_S tables from stored functions
or statements that use them, we manipulate with thread's open tables
state and ensure that we won't cause deadlock when we open tables by
ignoring flushes and name-locks.
Building of contents of I_S.TABLES no longer requires locking of tables
since we use use handler::info() method with HA_STATUS_AUTO flag instead
of handler::update_auto_increment() for obtaining information about
auto-increment values. But this also means that handlers have to implement
support for HA_STATUS_AUTO flag (particularly InnoDB needs it).
mysql-test/r/alter_table.result:
Updated test results. This change was caused by the fact that now when
we build contents of I_S tables (and thus output of SHOW INDEX) we
don't use instances of tables which may be already opened and locked
by thread (we always use new instance).
mysql-test/r/information_schema.result:
Added test which checks how information about current auto-increment value for
table is reported in INFORMATION_SCHEMA.TABLES view.
mysql-test/r/sp.result:
Added test for bug #10055 "Using stored function with information_schema causes
empty result set".
mysql-test/t/information_schema.test:
Added test which checks how information about current auto-increment value for
table is reported in INFORMATION_SCHEMA.TABLES view.
mysql-test/t/sp.test:
Added test for bug #10055 "Using stored function with information_schema causes
empty result set".
sql/mysql_priv.h:
close_thread_tables():
Get rid of 'stopper' argument which is no longer used. Now when we need
to open and then close some table without touching tables which are already
opened we use THD::reset_n/restore_backup_open_tables_state() methods.
open_tables()/open_normal_and_derived_tables():
Added 'flags' argument to be able open tables even if some has done
a flush or hold namelock on them.
sql/sp.cc:
close_proc_table/open_proc_table_for_read/db_find_routine():
Replaced push_open_tables_state/pop_open_tables_state() methods which
were saving/restoring current open tables state in/from THD::open_state_list
with reset_n_backup_open_tables_state/restore_backup_open_tables_state()
methods which assume that backup storage for this state is allocated on
stack (or elsewhere) by their caller.
open_proc_table_for_read():
Since now we can have several open tables states stacked up we can't rely
rely on checking whether we have some tables open in previous state.
Instead we always assume that some tables are open and we need to ignore
flush while locking mysql.proc. We don't really need
MYSQL_LOCK_IGNORE_GLOBAL_READ_LOCK in this case since we open mysql.proc table
only for reading.
sql/sp.h:
Added declarations of open_proc_table_for_read()/close_proc_table() to be
able to use them in sql_show.cc.
sql/sql_base.cc:
close_thread_tables():
Get rid of 'stopper' argument which is no longer used. Now when we need
to open and then close some table without touching tables which are already
opened we use THD::reset_n/restore_backup_open_tables_state() methods.
open_tables()/open_normal_and_derived_tables():
Added 'flags' argument to be able open tables even if some has done
a flush or hold namelock on them.
sql/sql_class.cc:
Open_tables_state, THD:
Replaced push_open_tables_state/pop_open_tables_state() methods which
were saving/restoring current open tables state in/from THD::open_state_list
with reset_n_backup_open_tables_state/restore_backup_open_tables_state()
methods which assume that backup storage for this state is allocated on
stack (or elsewhere) by their caller.
sql/sql_class.h:
Open_tables_state, THD:
Replaced push_open_tables_state/pop_open_tables_state() methods which
were saving/restoring current open tables state in/from THD::open_state_list
with reset_n_backup_open_tables_state/restore_backup_open_tables_state()
methods which assume that backup storage for this state is allocated on
stack (or elsewhere) by their caller.
sql/sql_handler.cc:
open_tables()/open_normal_and_derived_tables():
Added 'flags' argument to be able open tables even if some has done
a flush or hold namelock on them.
sql/sql_prepare.cc:
open_tables()/open_normal_and_derived_tables():
Added 'flags' argument to be able open tables even if some has done
a flush or hold namelock on them.
sql/sql_show.cc:
get_all_tables():
Now we use THD::reset_n_/restore_backup_open_tables_state() for
saving/restoring open tables state instead of working with it directly
(This also allows us to have proper content of I_S system tables in
statements with stored functions and in stored functions). We also
ignore possible flushes when opening tables (we may create deadlock
otherwise). Also we do all needed manipulations with LEX in this function
and not in get_schema_tables_result() now.
get_schema_tables_record():
Let us use handler::info() method with HA_STATUS_AUTO flag for obtaining
information about table's auto-increment value. This allows to avoid locking
of tables which is needed when we use handler::update_auto_increment() method.
fill_schema_proc():
Now we use open_proc_table_for_read/close_proc_table() for access to
mysql.proc table (so we won't cause deadlock if we already have some
tables open and locked, this also allows us to have proper content in
ROUTINES system table in statements using stored functions/in stored
functions).
get_schema_tables_result():
Moved all manipulations with Open_tables_state and LEX needed for
safe opening of tables to ST_SCHEMA_TABLE::fill_table functions
(i.e. get_all_tables() and fill_schema_proc()).
sql/sql_update.cc:
open_tables()/open_normal_and_derived_tables():
Added 'flags' argument to be able open tables even if some has done
a flush or hold namelock on them.
frequently used command sequence replaced with inline function
BitKeeper/etc/config:
logging switching off
mysql-test/r/lowercase_view.result:
hided view underlying tables from error message
mysql-test/r/view.result:
hided view underlying tables from error message
mysql-test/t/lowercase_view.test:
hided view underlying tables from error message
mysql-test/t/view.test:
hided view underlying tables from error message
sql/mysql_priv.h:
subroutine which return correct error message
sql/share/errmsg.txt:
new error message
sql/sql_base.cc:
subroutine which issue correct error message in case of view presence for duplicated table on update
sql/sql_delete.cc:
issue correct error message in case of view presence for duplicated table on update
sql/sql_insert.cc:
issue correct error message in case of view presence for duplicated table on update
sql/sql_parse.cc:
issue correct error message in case of view presence for duplicated table on update
sql/sql_update.cc:
issue correct error message in case of view presence for duplicated table on update
sql/sql_view.cc:
frequently used command sequence replaced with inline function
sql/table.cc:
frequently used command sequence replaced with inline function
sql/table.h:
frequently used command sequence replaced with inline function
into poseidon.ndb.mysql.com:/home/tomas/mysql-5.1
configure.in:
Auto merged
mysql-test/r/ps_6bdb.result:
Auto merged
mysql-test/r/ps_7ndb.result:
Auto merged
sql/field.cc:
Auto merged
sql/item.cc:
Auto merged
sql/lock.cc:
Auto merged
sql/mysql_priv.h:
Auto merged
sql/slave.cc:
Auto merged
sql/sql_base.cc:
Auto merged
sql/sql_class.h:
Auto merged
sql/sql_insert.cc:
Auto merged
sql/sql_lex.cc:
Auto merged
sql/sql_lex.h:
Auto merged
sql/sql_parse.cc:
Auto merged
sql/sql_select.cc:
Auto merged
sql/sql_table.cc:
Auto merged
sql/sql_update.cc:
Auto merged
sql/sql_yacc.yy:
Auto merged
storage/ndb/include/ndb_version.h.in:
Auto merged
storage/ndb/include/portlib/NdbTCP.h:
Auto merged
storage/ndb/include/transporter/TransporterRegistry.hpp:
Auto merged
storage/ndb/include/util/SocketServer.hpp:
Auto merged
storage/ndb/include/util/ndb_opts.h:
Auto merged
storage/ndb/include/util/version.h:
Auto merged
storage/ndb/src/common/logger/LogHandler.cpp:
Auto merged
storage/ndb/src/common/mgmcommon/ConfigRetriever.cpp:
Auto merged
storage/ndb/src/common/mgmcommon/IPCConfig.cpp:
Auto merged
storage/ndb/src/common/portlib/NdbMutex.c:
Auto merged
storage/ndb/src/common/portlib/NdbTCP.cpp:
Auto merged
storage/ndb/src/common/portlib/NdbThread.c:
Auto merged
storage/ndb/src/common/transporter/Transporter.cpp:
Auto merged
storage/ndb/src/common/transporter/Transporter.hpp:
Auto merged
storage/ndb/src/common/transporter/TransporterRegistry.cpp:
Auto merged
storage/ndb/src/common/util/Parser.cpp:
Auto merged
storage/ndb/src/common/util/SocketClient.cpp:
Auto merged
storage/ndb/src/common/util/SocketServer.cpp:
Auto merged
storage/ndb/src/common/util/version.c:
Auto merged
storage/ndb/src/kernel/blocks/qmgr/Qmgr.hpp:
Auto merged
storage/ndb/src/kernel/blocks/qmgr/QmgrMain.cpp:
Auto merged
storage/ndb/src/mgmapi/mgmapi.cpp:
Auto merged
storage/ndb/src/mgmapi/ndb_logevent.cpp:
Auto merged
storage/ndb/src/mgmclient/CommandInterpreter.cpp:
Auto merged
storage/ndb/src/mgmclient/main.cpp:
Auto merged
storage/ndb/src/mgmsrv/MgmtSrvr.cpp:
Auto merged
storage/ndb/src/mgmsrv/MgmtSrvr.hpp:
Auto merged
storage/ndb/src/mgmsrv/Services.cpp:
Auto merged
storage/ndb/src/mgmsrv/main.cpp:
Auto merged
storage/ndb/src/ndbapi/ClusterMgr.cpp:
Auto merged
storage/ndb/src/ndbapi/TransporterFacade.cpp:
Auto merged
storage/ndb/tools/restore/restore_main.cpp:
Auto merged
support-files/mysql.spec.sh:
Auto merged
mysql_update(): Call handler::unlock_row()
also in the first while loop.
This patch is from Heikki,
and it was approved by Sergei Golubchik.
sql/sql_update.cc:
mysql_update(): Call handler::unlock_row()
also in the first while loop.
This patch is from Heikki,
and it was approved by Sergei Golubchik.
BitKeeper/etc/logging_ok:
auto-union
BUILD/autorun.sh:
Auto merged
BitKeeper/etc/config:
Auto merged
Makefile.am:
Auto merged
include/my_bitmap.h:
Auto merged
libmysqld/Makefile.am:
Auto merged
mysql-test/mysql-test-run.pl:
Auto merged
mysql-test/mysql-test-run.sh:
Auto merged
mysql-test/r/grant.result:
Auto merged
mysql-test/r/ps_6bdb.result:
Auto merged
mysql-test/r/ps_7ndb.result:
Auto merged
mysys/Makefile.am:
Auto merged
mysys/default.c:
Auto merged
scripts/mysql_create_system_tables.sh:
Auto merged
scripts/mysql_fix_privilege_tables.sql:
Auto merged
sql/Makefile.am:
Auto merged
sql/field.cc:
Auto merged
sql/field.h:
Auto merged
sql/ha_ndbcluster.h:
Auto merged
sql/handler.cc:
Auto merged
sql/handler.h:
Auto merged
sql/item.cc:
Auto merged
sql/log_event.cc:
Auto merged
sql/mysql_priv.h:
Auto merged
sql/opt_range.cc:
Auto merged
sql/sql_acl.cc:
Auto merged
sql/sql_acl.h:
Auto merged
sql/sql_base.cc:
Auto merged
sql/sql_cache.cc:
Auto merged
sql/sql_class.h:
Auto merged
sql/sql_delete.cc:
Auto merged
sql/sql_lex.cc:
Auto merged
sql/sql_parse.cc:
Auto merged
sql/sql_table.cc:
Auto merged
sql/sql_udf.cc:
Auto merged
sql/sql_yacc.yy:
Auto merged
storage/heap/Makefile.am:
Auto merged
storage/heap/hp_hash.c:
Auto merged
storage/innobase/btr/btr0btr.c:
Auto merged
storage/innobase/btr/btr0cur.c:
Auto merged
storage/innobase/configure.in:
Auto merged
storage/innobase/fil/fil0fil.c:
Auto merged
storage/innobase/ibuf/ibuf0ibuf.c:
Auto merged
storage/innobase/include/os0file.h:
Auto merged
storage/innobase/include/page0cur.h:
Auto merged
storage/innobase/include/row0mysql.h:
Auto merged
storage/innobase/include/srv0srv.h:
Auto merged
storage/innobase/include/trx0trx.h:
Auto merged
storage/innobase/include/trx0trx.ic:
Auto merged
storage/innobase/lock/lock0lock.c:
Auto merged
storage/innobase/log/log0recv.c:
Auto merged
storage/innobase/os/os0file.c:
Auto merged
storage/innobase/page/page0cur.c:
Auto merged
storage/innobase/page/page0page.c:
Auto merged
storage/innobase/rem/rem0rec.c:
Auto merged
storage/innobase/row/row0mysql.c:
Auto merged
storage/innobase/row/row0sel.c:
Auto merged
storage/innobase/row/row0upd.c:
Auto merged
storage/innobase/srv/srv0srv.c:
Auto merged
storage/innobase/trx/trx0trx.c:
Auto merged
storage/innobase/trx/trx0undo.c:
Auto merged
storage/myisam/Makefile.am:
Auto merged
storage/myisam/mi_create.c:
Auto merged
storage/myisam/mi_open.c:
Auto merged
storage/myisam/mi_packrec.c:
Auto merged
storage/myisam/mi_unique.c:
Auto merged
storage/myisam/myisampack.c:
Auto merged
storage/myisammrg/Makefile.am:
Auto merged
storage/ndb/include/mgmcommon/ConfigRetriever.hpp:
Auto merged
storage/ndb/include/transporter/TransporterDefinitions.hpp:
Auto merged
storage/ndb/src/common/mgmcommon/ConfigRetriever.cpp:
Auto merged
storage/ndb/src/kernel/blocks/dbtc/DbtcMain.cpp:
Auto merged
storage/ndb/src/mgmsrv/main.cpp:
Auto merged
storage/ndb/src/ndbapi/NdbDictionaryImpl.cpp:
Auto merged
storage/ndb/test/ndbapi/create_tab.cpp:
Auto merged
storage/ndb/test/ndbapi/testBlobs.cpp:
Auto merged
strings/ctype-big5.c:
Auto merged
strings/ctype-ucs2.c:
Auto merged
support-files/mysql.spec.sh:
Auto merged
configure.in:
merge
mysql-test/t/disabled.def:
merge
mysys/my_bitmap.c:
SCCS merged
sql/ha_federated.cc:
merge
sql/ha_innodb.cc:
merge
sql/ha_ndbcluster.cc:
merge
sql/mysqld.cc:
e
merge
sql/sql_insert.cc:
merge
sql/sql_lex.h:
merge
sql/sql_load.cc:
merge
sql/sql_select.cc:
merge
e
C
sql/sql_update.cc:
merge
sql/table.cc:
merge
include/my_bitmap.h:
new bitmap operation
mysql-test/r/view.result:
added warnings
Correct inserting data check (absence of default value) for view underlying tables (BUG#6443)
mysql-test/t/view.test:
Correct inserting data check (absence of default value) for view underlying tables (BUG#6443)
mysys/my_bitmap.c:
new bitmap operation
sql/field.h:
index of field in table added
sql/item.cc:
Name resolution context added
table list removed from fix_fields() arguments
sql/item.h:
Name resolution context added
table list removed from fix_fields() arguments
sql/item_cmpfunc.cc:
table list removed from fix_fields() arguments
sql/item_cmpfunc.h:
table list removed from fix_fields() arguments
sql/item_func.cc:
table list removed from fix_fields() arguments
sql/item_func.h:
table list removed from fix_fields() arguments
sql/item_row.cc:
table list removed from fix_fields() arguments
sql/item_row.h:
table list removed from fix_fields() arguments
sql/item_strfunc.cc:
fixed server crash on NULL argument
sql/item_strfunc.h:
table list removed from fix_fields() arguments
sql/item_subselect.cc:
table list removed from fix_fields() arguments
sql/item_subselect.h:
table list removed from fix_fields() arguments
sql/item_sum.cc:
table list removed from fix_fields() arguments
sql/item_sum.h:
table list removed from fix_fields() arguments
sql/item_timefunc.cc:
table list removed from fix_fields() arguments
sql/item_timefunc.h:
table list removed from fix_fields() arguments
sql/item_uniq.h:
table list removed from fix_fields() arguments
sql/log_event.cc:
Name resolution context added
sql/log_event.h:
Name resolution context added
sql/mysql_priv.h:
Name resolution context added
sql/set_var.cc:
table list removed from fix_fields() arguments
sql/share/errmsg.txt:
new error message
sql/sp.cc:
Name resolution context added
sql/sp_head.cc:
table list removed from fix_fields() arguments
sql/sp_head.h:
Name resolution context added
sql/sql_base.cc:
table list removed from fix_fields() arguments
Name resolution context added
sql/sql_class.cc:
renamed variable
sql/sql_delete.cc:
Name resolution context added
sql/sql_derived.cc:
Name resolution context added
sql/sql_do.cc:
table list removed from fix_fields() arguments
sql/sql_handler.cc:
Name resolution context added
sql/sql_help.cc:
Name resolution context added
sql/sql_insert.cc:
Name resolution context added
table list removed from fix_fields() arguments
sql/sql_lex.cc:
Name resolution context added
sql/sql_lex.h:
removed resolve mode (information stored into name resolution context)
sql/sql_load.cc:
table list removed from fix_fields() arguments
sql/sql_olap.cc:
Name resolution context added
sql/sql_parse.cc:
Name resolution context added
sql/sql_prepare.cc:
table list removed from fix_fields() arguments
sql/sql_select.cc:
table list removed from fix_fields() arguments
sql/sql_show.cc:
Name resolution context added
sql/sql_trigger.cc:
table list removed from fix_fields() arguments
sql/sql_udf.h:
table list removed from fix_fields() arguments
sql/sql_union.cc:
Name resolution context added
sql/sql_update.cc:
Name resolution context added
sql/sql_view.cc:
Name resolution context added
sql/sql_view.h:
table list removed from fix_fields() arguments
sql/sql_yacc.yy:
Name resolution context added
sql/table.cc:
Name resolution context added
merged view processing moved
sql/table.h:
merged view processing moved
mysql-test/mysql-test-run.sh:
Auto merged
sql/field.cc:
Auto merged
sql/ha_federated.cc:
Auto merged
sql/ha_ndbcluster.cc:
Auto merged
sql/item.cc:
Auto merged
sql/mysql_priv.h:
Auto merged
sql/sql_base.cc:
Auto merged
sql/sql_bitmap.h:
Auto merged
sql/sql_class.h:
Auto merged
sql/sql_delete.cc:
Auto merged
sql/sql_insert.cc:
Auto merged
sql/sql_parse.cc:
Auto merged
sql/sql_select.cc:
Auto merged
sql/sql_update.cc:
Auto merged
sql/table.cc:
Auto merged
sql/unireg.cc:
Auto merged
storage/myisam/mi_create.c:
Auto merged
storage/myisam/mi_test1.c:
Auto merged
BitKeeper/etc/logging_ok:
auto-union
Makefile.am:
Auto merged
mysql-test/mysql-test-run.sh:
Auto merged
mysql-test/r/information_schema_db.result:
Auto merged
sql/field.cc:
Auto merged
sql/field.h:
Auto merged
sql/ha_federated.cc:
Auto merged
sql/ha_innodb.cc:
Auto merged
sql/ha_myisam.cc:
Auto merged
sql/ha_myisammrg.cc:
Auto merged
sql/ha_ndbcluster.cc:
Auto merged
sql/handler.cc:
Auto merged
sql/item.cc:
Auto merged
sql/log.cc:
Auto merged
sql/log_event.cc:
Auto merged
sql/mysql_priv.h:
Auto merged
sql/mysqld.cc:
Auto merged
sql/opt_range.cc:
Auto merged
sql/sql_base.cc:
Auto merged
sql/sql_class.h:
Auto merged
sql/sql_insert.cc:
Auto merged
sql/sql_lex.cc:
Auto merged
sql/sql_lex.h:
Auto merged
sql/sql_load.cc:
Auto merged
sql/sql_parse.cc:
Auto merged
sql/sql_repl.cc:
Auto merged
sql/sql_select.cc:
Auto merged
sql/sql_table.cc:
Auto merged
sql/sql_udf.cc:
Auto merged
sql/sql_yacc.yy:
Auto merged
sql/unireg.cc:
Auto merged
storage/innobase/row/row0mysql.c:
Auto merged
storage/innobase/srv/srv0start.c:
Auto merged
storage/innobase/trx/trx0trx.c:
Auto merged
storage/myisam/rt_split.c:
Auto merged
storage/myisammrg/myrg_open.c:
Auto merged
storage/ndb/src/common/debugger/SignalLoggerManager.cpp:
Auto merged
storage/ndb/src/common/util/File.cpp:
Auto merged
storage/ndb/src/cw/cpcd/Process.cpp:
Auto merged
storage/ndb/src/kernel/blocks/dbtux/Dbtux.hpp:
Auto merged
storage/ndb/src/kernel/blocks/ndbfs/AsyncFile.cpp:
Auto merged
storage/ndb/src/ndbapi/NdbDictionaryImpl.cpp:
Auto merged
sql/sql_delete.cc:
merge
sql/sql_update.cc:
merge
sql/table.cc:
SCCS merged
support-files/mysql.spec.sh:
merge
"the server side preparedStatement error for LIMIT placeholder",
which moves all uses of LIMIT clause from PREPARE to OPTIMIZE
and later steps.
After-review fixes.
mysql-test/r/group_min_max.result:
Test results fixed for EXPLAINs when using GROUP_MIN_MAX access plan.
sql/item_subselect.cc:
Move setting of the internal LIMIT used for IN/ALL/ANY/EXISTS
subqueries to one place: Item_exists_subselect::fix_length_and_dec().
This implies that unit->select_limit_cnt is not set until the item is
fixed. This is OK, as now LIMIT values are not used until JOIN::optimize.
sql/mysql_priv.h:
setup_tables no longer needs a special flag for the case when
it's called from JOIN::reinit() (we don't need to call setup_tables
between two executions of a correlated subquery).
sql/opt_range.cc:
Fix a glitch in GROUP_MIN_MAX access plan: we should use table metadata,
not field data, to evaluate max_used_key_length, which is then
used for explain.
sql/sp.cc:
- setup_tables signature changed.
sql/sql_base.cc:
- setup_tables no longer needs a special mode for subqueries.
Unused checks were removed.
sql/sql_delete.cc:
- setup_tables signature changed
sql/sql_help.cc:
- setup_tables signature changed
sql/sql_insert.cc:
- setup_tables signature changed
sql/sql_lex.cc:
Consolidate setting of internal LIMIT for IN/ALL/ANY/EXISTS subqeries
in one place, and hence remove it from st_select_lex::test_limit().
sql/sql_lex.h:
Cleanup signature of st_select_lex_unit::init_prepare_fake_select_lex().
sql/sql_load.cc:
- setup_tables signature changed
sql/sql_olap.cc:
- setup_tables signature changed
sql/sql_parse.cc:
- st_select_lex_unit::set_limit() signature changed
sql/sql_select.cc:
Move setting of JOIN::select_limit from JOIN::prepare
to JOIN::optimize. At prepare, limit is unknown yet.
Remove excessive cleanups from JOIN::reinit which were overwriting
join->join_tab[i]->table->used_keys. This fixes the bug which was triggered
by the change in item_subselect.cc.
sql/sql_union.cc:
Class st_select_lex_unit was changed to avoid calls to
st_select_lex_unit::set_limit from places where it may be unknown.
Now unit->select_limit_cnt is set at ::exec().
st_select_lex_unit::init_prepare_fake_select_lex():
- move out set_limit functionality
- remove a few lines of dead code.
st_select_lex_unit::prepare():
- now we don't call set_limit at the time of prepare, so the value
of unit->select_limit_cnt may be unknown here. Use sl->select_limit
instead.
st_select_lex_unit::exec():
- cleanup
- call set_limit explicitly as it has been moved out of
init_prepare_fake_select_lex.
sql/sql_update.cc:
- setup_tables signature changed
sql/item.cc:
Auto merged
sql/item.h:
Auto merged
sql/mysql_priv.h:
Auto merged
sql/sql_base.cc:
Auto merged
sql/sql_delete.cc:
Auto merged
sql/sql_insert.cc:
Manual merge
sql/sql_update.cc:
Manual merge
#5860 "Multi-table UPDATE does not activate update triggers"
#6812 "Triggers are not activated for INSERT ... SELECT"
#8755 "Trigger is not activated by LOAD DATA".
This patch also implements proper handling of triggers for special forms
of insert like REPLACE or INSERT ... ON DUPLICATE KEY UPDATE.
Also now we don't call after trigger in case when we have failed to
inserted/update or delete row. Trigger failure should stop statement
execution.
I have not properly tested handling of errors which happen inside of
triggers in this patch, since it is simplier to do this once we will be
able to access tables from triggers.
mysql-test/r/trigger.result:
Added tests for triggers behavior for various non-standard forms of
INSERT such as REPLACE and INSERT ... ON DUPLICATE KEY UPDATE.
Also added tests for bugs #5860 "Multi-table UPDATE does not activate
update triggers", #6812 "Triggers are not activated for INSERT ... SELECT"
and #8755 "Trigger is not activated by LOAD DATA".
mysql-test/t/trigger.test:
Added tests for triggers behavior for various non-standard forms of
INSERT such as REPLACE and INSERT ... ON DUPLICATE KEY UPDATE.
Also added tests for bugs #5860 "Multi-table UPDATE does not activate
update triggers", #6812 "Triggers are not activated for INSERT ... SELECT"
and #8755 "Trigger is not activated by LOAD DATA".
sql/item.cc:
Since it turned out that at trigger loading time we can't say in which
buffer TABLE::record[0] or record[1] old version of row will be stored
we have to change our approach to binding of Item_trigger_field to
Field instances.
Now after trigger parsing (in Item_trigger_field::setup_table()) we only
find index of proper Field in the TABLE::field array. Then before trigger
is invoked we set Table_triggers_list::old_field/new_field so they point
to arrays holding Field instances bound to buffers with proper row
versions. And as last step in Item_trigger_field::fix_fields() we get
pointer to Field from those arrays using saved field index.
Item_trigger_field::setup_field()/fix_fields() were changed to implement
this approach.
sql/item.h:
Since it turned out that at trigger loading time we can't say in which
buffer TABLE::record[0] or record[1] old version of row will be stored
we have to change our approach to binding of Item_trigger_field to
Field instances.
Now after trigger parsing (in Item_trigger_field::setup_table()) we only
find index of proper Field in the TABLE::field array. Then before trigger
is invoked we set Table_triggers_list::old_field/new_field so they point
to arrays holding Field instances bound to buffers with proper row
versions. And as last step in Item_trigger_field::fix_fields() we get
pointer to Field from those arrays using saved field index.
Item_trigger_field:
- Added field_idx member to store index of Field object corresponding to
this Item in TABLE::field array.
- Added triggers member to be able to access to parent Table_trigger_list
object from fix_fields() method.
- setup_field() no longer needs to know for which type of event this
trigger is, since it does not make decision Field for which buffer
(record[0] or record[1] is appropriate for this Item_trigger_field)
sql/mysql_priv.h:
Added fill_record_n_invoke_before_triggers() methods. They are simple
wrappers around fill_record() which invoke proper before trigger right
after filling record with values.
sql/sql_base.cc:
Added fill_record_n_invoke_before_triggers() methods. They are simple
wrappers around fill_record() which invoke proper before trigger right
after filling record with values.
sql/sql_delete.cc:
mysql_delete():
Now we stop statement execution if one of triggers failed, we also
don't execute after delete trigger if we failed to delete row from
the table (We also pass information about which buffer contains old
version of row to process_triggers()).
multi_delete::send_data()/do_deletes():
Now we also invoke triggers in case of multi-delete.
sql/sql_insert.cc:
mysql_insert():
Moved invocation of before triggers to fill_record_n_invoke_before_triggers()
method. After triggers are now executed as part of write_record().
(as nice side effect now we also stop statement execution if one of
triggers fail).
write_record():
Invoke after insert trigger after performing insert. Also invoke proper
triggers if insert is converted to update or conflicting row is deleted.
Cleaned up error handling a bit - no sense to report error via
handler::print_error if it was not generated by handler method and
was reported before.
Also now we will execute after trigger only if we really have written
row to the table.
select_insert::send_data()/store_values():
We should also execute INSERT triggers for INSERT ... SELECT statement.
sql/sql_load.cc:
read_fixed_length()/read_sep_field():
We should execute INSERT triggers when processing LOAD DATA statement.
Small cleanup in auto-increment related code. Also moved check for
thd->killed which is used to abort LOAD DATA in case of problems
in 'traditional' mode to better place..
sql/sql_trigger.cc:
Since it turned out that at trigger loading time we can't say in which
buffer TABLE::record[0] or record[1] old version of row will be stored
we have to change our approach to binding of Item_trigger_field to
Field instances.
Now after trigger parsing (in Item_trigger_field::setup_table()) we only
find index of proper Field in the TABLE::field array. Then before trigger
is invoked we set Table_triggers_list::old_field/new_field so they point
to arrays holding Field instances bound to buffers with proper row
versions. And as last step in Item_trigger_field::fix_fields() we get
pointer to Field from those arrays using saved field index.
Table_triggers_list methods were changed to implement this approach
(see also comments for sql_trigger.h).
sql/sql_trigger.h:
Since it turned out that at trigger loading time we can't say in which
buffer TABLE::record[0] or record[1] old version of row will be stored
we have to change our approach to binding of Item_trigger_field to
Field instances.
Now after trigger parsing (in Item_trigger_field::setup_table()) we only
find index of proper Field in the TABLE::field array. Then before trigger
is invoked we set Table_triggers_list::old_field/new_field so they point
to arrays holding Field instances bound to buffers with proper row
versions. And as last step in Item_trigger_field::fix_fields() we get
pointer to Field from those arrays using saved field index.
Changed Table_triggers_list to implement this new approach:
- Added record1_field member to store array of Field objects bound
to TABLE::record[1] buffer (instead of existing old_field member)
- Added new_field member and changed meaning of old_field member.
During trigger execution they should point to arrays of Field objects
bound to buffers holding new and old versions of row respectively.
- Added 'table' member to be able to get access to TABLE instance
(for which this trigger list object was created) from process_triggers()
method.
- Now process_triggers() method sets old_field and new_field members
properly before executing triggers body (basing on new
old_row_is_record1 parameter value).
- Renamed prepare_old_row_accessors_method() to prepare_record1_accessors()
Also added has_before_update_triggers() method which allows to check
whenever any before update triggers exist for table.
sql/sql_update.cc:
mysql_update():
Now we invoke before triggers in fill_record_n_invoke_before_triggers()
method. Also now we abort statement execution when one of triggers fail.
safe_update_on_fly():
When we are trying to understand if we can update first table in multi
update on the fly we should take into account that BEFORE UPDATE
trigger can change field values.
multi_update::send_data()/do_updates()
We should execute proper triggers when doing multi-update
(in both cases when we do it on the fly and using temporary tables).
BitKeeper/etc/logging_ok:
auto-union
BUILD/compile-alpha-cxx:
Auto merged
BUILD/compile-alpha-debug:
Auto merged
configure.in:
Auto merged
sql/handler.cc:
Auto merged
sql/handler.h:
Auto merged
sql/item.cc:
Auto merged
sql/mysql_priv.h:
Auto merged
sql/mysqld.cc:
Auto merged
sql/sql_acl.cc:
Auto merged
sql/sql_base.cc:
Auto merged
sql/sql_insert.cc:
Auto merged
sql/sql_lex.cc:
Auto merged
sql/sql_lex.h:
Auto merged
sql/sql_parse.cc:
Auto merged
sql/sql_select.cc:
Auto merged
sql/sql_update.cc:
Auto merged
sql/sql_yacc.yy:
Auto merged
BitKeeper/etc/logging_ok:
auto-union
configure.in:
Auto merged
libmysqld/Makefile.am:
Auto merged
mysql-test/mysql-test-run.sh:
Auto merged
sql/field.cc:
Auto merged
sql/field.h:
Auto merged
sql/ha_ndbcluster.cc:
Auto merged
sql/ha_ndbcluster.h:
Auto merged
sql/handler.cc:
Auto merged
sql/handler.h:
Auto merged
sql/item.cc:
Auto merged
sql/mysqld.cc:
Auto merged
sql/sql_base.cc:
Auto merged
sql/sql_class.h:
Auto merged
sql/sql_delete.cc:
Auto merged
sql/sql_insert.cc:
Auto merged
sql/sql_parse.cc:
Auto merged
sql/sql_select.cc:
Auto merged
sql/sql_table.cc:
Auto merged
sql/sql_update.cc:
Auto merged
sql/table.cc:
Auto merged
sql/unireg.cc:
Auto merged
storage/innobase/row/row0mysql.c:
Auto merged
storage/myisam/mi_create.c:
Auto merged
storage/myisam/mi_dynrec.c:
Auto merged
storage/myisam/mi_key.c:
Auto merged
storage/myisam/mi_locking.c:
Auto merged
storage/myisam/mi_static.c:
Auto merged
storage/myisam/mi_statrec.c:
Auto merged
storage/myisam/mi_write.c:
Auto merged
storage/myisam/myisamdef.h:
Auto merged
storage/ndb/src/cw/cpcd/APIService.cpp:
Auto merged
storage/ndb/src/cw/cpcd/APIService.hpp:
Auto merged
storage/ndb/src/kernel/blocks/dbdict/Dbdict.cpp:
Auto merged
storage/ndb/src/kernel/blocks/dbdict/Dbdict.hpp:
Auto merged
storage/ndb/src/kernel/blocks/dbdict/SchemaFile.hpp:
Auto merged
storage/ndb/src/kernel/blocks/dbdict/printSchemaFile.cpp:
Auto merged
storage/ndb/src/kernel/blocks/dbtc/DbtcMain.cpp:
Auto merged
storage/ndb/src/ndbapi/NdbDictionaryImpl.cpp:
Auto merged
storage/ndb/test/ndbapi/testNodeRestart.cpp:
Auto merged
storage/ndb/test/ndbapi/testScan.cpp:
Auto merged
storage/ndb/test/run-test/main.cpp:
Auto merged
storage/ndb/test/run-test/run-test.hpp:
Auto merged
into mysql.com:/Users/mikron/wl1682
sql/field.cc:
Auto merged
sql/field.h:
Auto merged
sql/ha_innodb.cc:
Auto merged
sql/ha_innodb.h:
Auto merged
sql/ha_ndbcluster.cc:
Auto merged
sql/ha_ndbcluster.h:
Auto merged
sql/handler.cc:
Auto merged
sql/handler.h:
Auto merged
sql/item.cc:
Auto merged
sql/mysql_priv.h:
Auto merged
sql/opt_range.cc:
Auto merged
sql/sql_acl.cc:
Auto merged
sql/sql_base.cc:
Auto merged
sql/sql_bitmap.h:
Auto merged
sql/sql_class.h:
Auto merged
sql/sql_insert.cc:
Auto merged
sql/sql_select.cc:
Auto merged
sql/sql_table.cc:
Auto merged
sql/sql_update.cc:
Auto merged
sql/table.cc:
Auto merged
sql/unireg.cc:
Auto merged
Fixed bug #8528.
Representation for single-table views was made similar to
representation for multi-table views.
view.test:
Added test case for bug #8528.
view.result:
Added test case for bug #8528. Fixed other test cases.
mysql-test/r/view.result:
Added test case for bug #8528. Fixed other test cases.
mysql-test/t/view.test:
Added test case for bug #8528.
sql/sql_base.cc:
Fixed bug #8528.
Representation for single-table views was made similar to
representation for multi-table views.
sql/sql_delete.cc:
Fixed bug #8528.
Representation for single-table views was made similar to
representation for multi-table views.
sql/sql_insert.cc:
Fixed bug #8528.
Representation for single-table views was made similar to
representation for multi-table views.
sql/sql_parse.cc:
Fixed bug #8528.
Representation for single-table views was made similar to
representation for multi-table views.
sql/sql_prepare.cc:
Fixed bug #8528.
Representation for single-table views was made similar to
representation for multi-table views.
sql/sql_select.cc:
Fixed bug #8528.
Representation for single-table views was made similar to
representation for multi-table views.
sql/sql_update.cc:
Fixed bug #8528.
Representation for single-table views was made similar to
representation for multi-table views.
sql/sql_view.cc:
Fixed bug #8528.
Representation for single-table views was made similar to
representation for multi-table views.
sql/table.cc:
Fixed bug #8528.
Representation for single-table views was made similar to
representation for multi-table views.
sql/table.h:
Fixed bug #8528.
Representation for single-table views was made similar to
representation for multi-table views.
Fixed clear issues of bitvector and memory allocation issues
sql/bitvector.cc:
Made bitvector memroot class
sql/bitvector.h:
Made bitvector memroot class
sql/handler.cc:
Need to add updated fields to read set to ensure that they are
updated since the update code doesn't update if records haven't
changed
Added DBUG printout's
sql/handler.h:
Moved clear of bitvector's to reset function
Introduced ha_reset for this purpose to ensure that it isn't
necessary to perform this clear in all handlers.
sql/lock.cc:
Removed clear that has been moved to ha_reset
sql/opt_range.cc:
Changed reset to ha_reset
Added delete file
sql/sql_base.cc:
Removed clear and changed reset to ha_reset
sql/sql_insert.cc:
Removed clear and changed reset to ha_reset
sql/sql_select.cc:
Made sure delete file is done if needed
sql/sql_table.cc:
Added delete file in another place needed
sql/sql_update.cc:
Bug for multi-update fixed
cases + bug fixes
mysys/my_bitmap.c:
Removed debug comments
sql/bitvector.h:
Changed a number of things
Added new methods, new handling of end bits, faster search
for bits using word by word search..
sql/field.h:
Added comment
sql/ha_federated.cc:
Fixes
sql/ha_innodb.cc:
Fixes
sql/ha_innodb.h:
InnoDB still needs the extra calls not needed by anybody else
sql/ha_ndbcluster.cc:
Removed some timestamp set bit stuff
Always write all fields in write_row
sql/handler.cc:
No inline methods in bit interface (caused strange bugs)
initialise method
sql/handler.h:
Changed to bitvector from bitmap
Removed init variable
sql/opt_range.cc:
Removed all extra HA_EXTRA_RETRIEVE_*
sql/sql_acl.cc:
Removed all extra HA_EXTRA_RETRIEVE_*
sql/sql_base.cc:
Set bits previously missed
sql/sql_insert.cc:
Removed all extra HA_EXTRA_RETRIEVE_*
Timestamp handling
sql/sql_load.cc:
Updated comments plus set all bits in bitvector
sql/sql_select.cc:
Removed ifdef since NDB and Federated needs the same calls
Added comment or rather changed comment.
sql/sql_table.cc:
Removed HA_EXTRA_RETRIEVE_* calls
Updated comments
sql/sql_udf.cc:
Removed HA_EXTRA_RETRIEVE_* calls
Updated comments
sql/sql_update.cc:
Removed HA_EXTRA_RETRIEVE_* calls
Timstamp updating
to read and write
Changed Server code, added new interface to handler and changed the
NDB handler, InnoDB handler and Federated handler that previously used
query_id
Bug#10202 fix (one-liner fix for memory leak)
mysys/my_bitmap.c:
Debug code
sql/field.cc:
Initialise fieldnr to 0 if not set anywhere else
sql/field.h:
Introduce a fieldnr (first field = 1 and last = table->s->fields
in field object to be able to quickly set appropriate bit in
read/write set
sql/ha_federated.cc:
Changed federated handler to use write set instead of query_id
sql/ha_innodb.cc:
Changed InnoDB handler to use write set instead of query_id
sql/ha_ndbcluster.cc:
Changed NDB handler to use write set instead of query_id
sql/ha_ndbcluster.h:
Changed NDB handler to use write set instead of query_id
sql/handler.cc:
Allocate read_set and write_set either in get_new_handler or in
special routine
Routines used at destruction of handler object
plus routine to set all primary key fields in read_set
sql/handler.h:
bool to keep track if read/write set allocated or not in handler
Deallocate read/write set at delete of handler object
New bitmap's for read/write set
sql/item.cc:
Set bits in read or write set (set_query_id = 2 => write_set
set_query_id = 1 => read_set
sql/lock.cc:
Clear bit set when starting a new statement in external lock
sql/mysql_priv.h:
changed set_query_id from bool to ulong
sql/opt_range.cc:
Set primary key read set in all places where HA_EXTRA_RETRIEVE_PRIMARY_KEY
is used
sql/sql_acl.cc:
set all bits in read set all places where HA_EXTRA_RETRIEVE_ALL_COLS
are used
sql/sql_base.cc:
Clear all bits before start new statement when table locked already
Set bit in read/write set dependent on set_query_id and fieldnr
bool -> ulong for set_query_id
set all bits in read set for SELECT * queries where table is not view
sql/sql_class.h:
Added comments + changed type of set_query_id
sql/sql_insert.cc:
Use 2 when setup_fields called for fields to updated in UPDATE
and INSERT statements
set primary key fields when EXTRA param used
sql/sql_load.cc:
Set all bits in write set if no fields specified in LOAD DATA FROM
INFILE
Otherwise use 2 to set specific fields to be updated by LOAD DATA...
sql/sql_select.cc:
Set primary key read set when EXTRA param specified
Set fieldnr for temporary tables
Set number of fields before calling get_new_handler
and only set all bits if there at least one field in table
sql/sql_table.cc:
Set all bits in read set for old table and all bits in write set for
new table for ALTER TABLE copy method
Set all bits in read set when EXTRA param used
sql/sql_udf.cc:
Set all bits in read set when EXTRA param used
sql/sql_update.cc:
Set fields to UPDATE to use 2 for set_query_id
Set all bits in read set when EXTRA param used
sql/table.cc:
Set fieldnr in openfrm
Reallocate read/write set in openfrm since table->s->fields==0
at call to get_new_handler
sql/unireg.cc:
Fix Bug #10202
New more SP-locking friendly approach to handling locks in multi-update.
Now we mark all tables of multi-update as needing write lock at parsing
stage and if possible downgrade lock at execution stage (For its work
SP-locking mechanism needs to know all lock types right after parsing
stage).
mysql-test/r/sp-threads.result:
Added test for bug #9486 "Can't perform multi-update in stored procedure".
mysql-test/t/sp-threads.test:
Added test for bug #9486 "Can't perform multi-update in stored procedure".
sql/sp_head.cc:
SP_TABLE, sp_head::merge_table_list()/add_used_tables_to_table_list():
Since some queries during their execution (e.g. multi-update)
may change type of lock for some of their tables and thus change
lock_type member for some of elements of table list, we should
store type of lock in SP_TABLE struct explicitly instead of using
lock_type member of TABLE_LIST object pointed by SP_TABLE::table.
sql/sql_lex.h:
Removed no longer used LEX::multi_lock_option member.
sql/sql_prepare.cc:
mysql_test_update():
We don't need to bother about LEX::multi_lock_option if we convert
multi-update to update anymore. Since nowdays multi-update uses
TABLE_LIST::lock_type for specifying lock level of updated tables
instead of LEX::multi_lock_option.
sql/sql_update.cc:
mysql_update()/mysql_multi_update_prepare():
Now we mark all tables of multi-update as needing write lock at parsing
stage and if possible downgrade lock at execution stage. Old approach
(don't set lock type until execution stage) was not working well with
SP-locking (For its work SP-locking mechanism needs to know all lock
types right after parsing stage).
mysql_multi_update():
We should return FALSE if no error occurs.
sql/sql_yacc.yy:
update:
Now we mark all tables of multi-update as needing write lock at parsing
stage and if possible downgrade lock at execution stage. Old approach
(don't set lock type until execution stage) was not working well with
SP-locking (For its work SP-locking mechanism needs to know all lock
types right after parsing stage).
(BUG##9398, BUG#8703)
fixed wrong join view detection in multi-delete which lead to server crash
mysql-test/r/lowercase_view.result:
added new tests of updation and selection from the same table
mysql-test/r/view.result:
added new tests of updation and selection from the same table
added test of multidelete command over join view which lead to server crash
test suite from bugs #9398 and #8703
mysql-test/t/lowercase_view.test:
added new tests of updation and selection from the same table
mysql-test/t/view.test:
added new tests of updation and selection from the same table
added test of multidelete command over join view which lead to server crash
test suite from bugs #9398 and #8703
sql/sql_base.cc:
changed procedure of finding tables
sql/sql_class.cc:
added derived table procession detection
sql/sql_class.h:
added derived table procession detection
sql/sql_delete.cc:
fixed detection of selection from table which update for multidelete
sql/sql_derived.cc:
added derived table procession detection
sql/sql_lex.cc:
added detection os SELECTs processed inside derived tables
removed old mechanism of multidelete/multiupdate table duplication detection (which can't work with views)
sql/sql_lex.h:
added detection os SELECTs processed inside derived tables
removed old mechanism of multidelete/multiupdate table duplication detection (which can't work with views)
sql/sql_parse.cc:
removed wrong test of join view (for multidelete in can be not only first table)
sql/sql_prepare.cc:
added detection os SELECTs processed inside derived tables (reset it for reusing in PS/SP)
sql/sql_select.cc:
added detection os SELECTs processed inside derived tables
sql/sql_update.cc:
fixed detection of selection from table which update for multiupdate
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
First one is related to Bug#7905. One should not be allowed to
create new user with password without UPDATE privilege to
MySQL database. Furthermore, executing the same GRANT statement
twice would actually crash the server and corrupt privilege database.
Other bug was that one could update a column, using the existing
value as basis to calculate the new value (e.g. UPDATE t1 SET a=a+1)
without SELECT privilege to the field (a in the above example)
Fixed tests grant.pl and grant2, which were wrong.
mysql-test/r/mysqldump.result:
Auto merged
mysql-test/r/sp.result:
Auto merged
mysql-test/t/mysqldump.test:
Auto merged
mysql-test/t/sp.test:
Auto merged
sql/item_func.cc:
Auto merged
sql/mysql_priv.h:
Auto merged
sql/sp.cc:
Auto merged
sql/sp_rcontext.cc:
Auto merged
sql/sql_acl.cc:
Auto merged
sql/sql_base.cc:
Auto merged
sql/sql_class.h:
Auto merged
sql/sql_lex.cc:
Auto merged
sql/sql_lex.h:
Auto merged
sql/sql_prepare.cc:
Auto merged
sql/sql_update.cc:
Auto merged
sql/sql_view.cc:
Auto merged
sql/table.h:
Auto merged
sql/sp_head.cc:
Manual merge.
sql/sql_class.cc:
Manual merge.
sql/sql_parse.cc:
Manual merge.
sql/sql_yacc.yy:
Manual merge.
and some SP-related cleanups.
- We don't have separate stage for calculation of list of tables
to be prelocked and doing implicit LOCK/UNLOCK any more.
Instead we calculate this list at open_tables() and do implicit
LOCK in lock_tables() (and UNLOCK in close_thread_tables()).
Also now we support cases when same table (with same alias) is
used several times in the same query in SP.
- Cleaned up execution of SP. Moved all common code which handles
LEX and does preparations before statement execution or complex
expression evaluation to auxilary sp_lex_keeper class. Now
all statements in SP (and corresponding instructions) that
evaluate expression which can contain subquery have their
own LEX.
mysql-test/r/lock.result:
Replaced wrong error code with the correct one after fixing bug in
SP-locking.
mysql-test/r/mysqldump.result:
Added dropping of view which is used in test to its beginning.
mysql-test/r/sp.result:
Added tests for improved SP-locking.
Temporarily disabled tests for SHOW PROCEDURE STATUS and alike
(Until Monty will allow to open mysql.proc under LOCK TABLES without
mentioning it in lock list).
Replaced wrong results of test for bug #5240 with correct results after
fixing bug in handling of cursors.
mysql-test/t/lock.test:
Replaced wrong error code with the correct one after fixing bug in
SP-locking.
mysql-test/t/mysqldump.test:
Added dropping of view which is used in test to its beginning.
mysql-test/t/sp.test:
Added tests for improved SP-locking.
Temporarily disabled tests for SHOW PROCEDURE STATUS and alike
(Until Monty will allow to open mysql.proc under LOCK TABLES without
mentioning it in lock list).
Removed test for bug #1654 since we already test exactly this function
in one of SP-locking tests.
Removed comment about cursor's wrong behavior in test for bug #5240
after fixing bug which was its cause.
sql/item_func.cc:
Removed comment which is no longer true.
sql/mysql_priv.h:
Changed open_tables() signature.
Now its 2nd parameter is in/out since it can add elements to table list.
sql/sp.cc:
sp_find_procedure():
Added one more parameter which enforces cache only lookup.
sp_merge_hash():
Now uses its return value to indicate that first of two hashes changed
as result of merge.
sp_cache_routines():
This function caches all stored routines used in query now.
sql/sp.h:
- sp_find_procedure() now has one more parameter which enforces cache only
lookup.
- sp_merge_hash() now uses its return value to indicate that first of two
hashes changed as result of merge.
- sp_cache_routines() caches all stored routines now. So it does not need
third argument any more.
sql/sp_head.cc:
sp_head::sp_head():
Added initialization of new m_spfuns and m_spprocs members.
sp_head::execute():
Let us save/restore part of thread context which can be damaged by
execution of instructions.
sp_head::execute_function()/execute_procedure():
Now it is responsibility of caller to close tables used in
subqueries which are passed as routine parameters.
sp_head::restore_lex():
Let us accumulate information about routines used by this one
in new m_spfuns, m_spprocs hashes.
sp_lex_keeper::reset_lex_and_exec_core()
Main method of new auxilary sp_lex_keeper class to which instructions
delegate responsibility for handling LEX and preparations before
executing statement or calculating complex expression.
Since all instructions which calculate complex expression or execute
command now use sp_lex_keeper they have to implement
sp_instr::exec_core() method. Most of instruction specific logic
has moved from sp_instr::execute() to this new method.
Removed sp_instr_set_user_var class which is no longer used, because
nowdays we allow execution of statements in stored functions and
triggers.
sp_merge_table_list() became sp_head::merge_table_list() method. It
also treats sp_head::m_sptabs as multi-set of tables now.
sp_hash_to_table_list() became sp_head::add_used_tables_to_table_list().
It takes into account that sp_head::m_sptabs is multi-set and allocates
object into persistent arena of PS.
Removed sp_merge_table_hash(), sp_open_and_lock_tables(),
sp_unlock_tables(), sp_merge_routine_tables() methods since they are not
used by new prelocking mechanism.
Added sp_add_sp_tables_to_table_list() which serves for adding tables needed
by routines used in query to the query table list for prelocking.
sql/sp_head.h:
class sp_head:
- Added m_spfuns, m_spprocs members for storing names of routines used
by this routine.
- Added add_used_tables_to_table_list() method which allows to add
tables needed by this routine to query's table list.
- Converted sp_merge_table_list() to sp_head::merge_table_list() method.
- Changed semantics of THD::m_sptabs. Now it is multi-set which contains
only tables which are used by this routine and not routines that are
called from this one.
Removed sp_merge_routine_tables(), sp_merge_table_hash(),
sp_open_and_lock_tables(), sp_unlock_tables() calls since they are not
used for our prelocking list calculation.
Added auxilary sp_lex_keeper class to which instructions delegate
responsibility for handling LEX and preparations before executing
statement or calculating complex expression. This class uses
new sp_instr::exec_core() method which is responsible for executing
instruction's core function after all preparations were made.
All instructions which hold and calculate complex expression now have
their own LEX (by aggregating sp_lex_keeper instance). sp_instr_stmt
now uses sp_lex_keeper too.
Removed sp_instr_set_user_var class which is no longer used, because
nowdays we allow execution of statements in stored functions and
triggers.
sql/sp_rcontext.cc:
Now sp_cursor holds pointer to sp_lex_keeper instead of LEX.
sql/sp_rcontext.h:
Now sp_cursor holds pointer to sp_lex_keeper instead of LEX.
sql/sql_acl.cc:
acl_init(), grant_init():
Now we use simple_open_n_lock_tables() instead of explicit
calls to open_tables() and mysql_lock_tables().
sql/sql_base.cc:
Implemented support for execution of statements in "prelocked" mode.
When we have statement which uses stored routines explicitly or
implicitly (via views or triggers) we have to open and lock all tables
for these routines at the same time as tables for the main statement.
In fact we have to do implicit LOCK TABLES at the begining of such
statement and implict UNLOCK TABLES at its end. We call such mode
"prelocked".
When open_tables() is called for the statement tables which are needed
for execution of routines used by it are added to its tables list
(this process also caches all routines used). Implicit use of routines
is discovered when we open view or table with trigger and apropriate
tables are added to the table list at this moment. Statement which has
such extra tables in its list (well actually any that uses functions)
is marked as requiring prelocked mode for its execution.
When lock_tables() sees such statement it will issue implicit LOCK TABLES
for this extended table list instead of doing usual locking, it will also
set THD::prelocked_mode to indicate that we are in prelocked mode.
When open_tables()/lock_tables() are called for statement of stored
routine (substatement), they notice that we are running in prelocked mode
and use one of prelocked tables from those that are not used by upper
levels of execution.
close_thread_tables() for substatement won't really close tables used
but will mark them as free for reuse instead.
Finally when close_thread_tables() is called for the main statement it
really unlocks and closes all tables used.
Everything will work even if one uses such statement under real LOCK
TABLES (we are simply not doing implicit LOCK/UNLOCK in this case).
sql/sql_class.cc:
Added initialization of THD::prelocked_mode member.
sql/sql_class.h:
- Added prelocked_mode_type enum and THD::prelocked_mode member
which are used for indication whenever "prelocked mode" is on
(i.e. that statement uses stored routines and is executed under
implicit LOCK TABLES).
- Removed THD::shortcut_make_view which is no longer needed.
We use TABLE_LIST::prelocking_placeholder for the same purprose
now.
sql/sql_handler.cc:
Changed open_tables() invocation.
Now its 2nd parameter is in/out since it can add elements to table list.
sql/sql_lex.cc:
lex_start():
Added initialization of LEX::query_tables_own_last.
Unused LEX::sptabs member was removed.
st_lex::unlink_first_table()/link_first_table_back():
We should update LEX::query_tables_last properly if table list
contains(ed) only one element.
sql/sql_lex.h:
LEX:
- Removed sptabs member since it is no longer used.
- Added query_tables_own_last member, which if non-0 indicates that
statement requires prelocking (implicit LOCK TABLES) for its execution
and points to last own element in query table list. If it is zero
then this query does not need prelocking.
- Added requires_prelocking(), mark_as_requiring_prelocking(),
first_not_own_table() inline methods to incapsulate and simplify
usage of this new member.
sql/sql_parse.cc:
dispatch_command():
To properly leave prelocked mode when needed we should call
close_thread_tables() even if there are no open tables.
mysql_execute_command():
- Removed part of function which were responsible for doing implicit
LOCK TABLES before statement execution if statement used stored
routines (and doing UNLOCK TABLES at the end).
Now we do all this in open_tables()/lock_tables()/close_thread_tables()
instead.
- It is also sensible to reset errors before execution of statement
which uses routines.
- SQLCOM_DO, SQLCOM_SET_OPTION, SQLCOM_CALL
We should always try to open tables because even if statement has empty
table list, it can call routines using tables, which should be preopened
before statement execution.
- SQLCOM_CALL
We should not look up routine called in mysql.proc, since it should be
already cached by this moment by open_tables() call.
- SQLCOM_LOCK_TABLES
it is better to use simple_open_n_lock_tables() since we want to avoid
materialization of derived tables for this command.
sql/sql_prepare.cc:
mysql_test_update():
Changed open_tables() invocations. Now its 2nd parameter is in/out
since it can add elements to table list.
check_prepared_statement():
Since now we cache all routines used by statement in open_tables() we
don't need to do it explicitly.
mysql_stmt_prepare():
Now we should call close_thread_tables() when THD::lex points to the
LEX of statement which opened tables.
reset_stmt_for_execute():
Commented why we are resetting all tables in table list.
sql/sql_trigger.h:
Table_triggers_list::process_triggers():
We should surpress sending of ok packet when we are calling trigger's
routine, since now we allow statements in them.
sql/sql_update.cc:
Changed open_tables() invocations.
Now its 2nd parameter is in/out since it can add elements to table list.
sql/sql_view.cc:
mysql_make_view():
- Removed handling of routines used in view. Instead we add tables which
are needed for their execution to statement's table list in
open_tables().
- Now we use TABLE_LIST::prelocking_placeholder instead of
THD::shortcut_make_view for indicating that view is opened
only to discover which tables and routines it uses (this happens
when we build extended table list for prelocking). Also now we try
to avoid to modify main LEX in this case (except of its table list).
- Corrected small error we added tables to the table list of the main
LEX without updating its query_tables_last member properly.
sql/sql_yacc.yy:
Now each expression which is used in SP statements and can contain
subquery has its own LEX. This LEX is stored in corresponding sp_instr
object and used along with Item tree for expression calculation.
We don't need sp_instr_set_user_var() anymore since now we allow
execution of statements in stored functions and triggers.
sql/table.h:
Added TABLE_LIST::prelocking_placeholder member for distinguishing
elements of table list which does not belong to the statement itself
and added there only for prelocking (as they are to be used by routines
called by this statement).
sql/tztime.cc:
my_tz_init():
Now we use more simplier simple_open_n_lock_tables() call instead of
open_tables()/lock_tables() pair.
(Found during build process)
extra/comp_err.c:
Remove compiler warnings
extra/perror.c:
Remove compiler warnings
innobase/dict/dict0dict.c:
Remove compiler warnings
innobase/dict/dict0load.c:
Remove compiler warnings
innobase/pars/pars0sym.c:
Remove compiler warnings
innobase/row/row0row.c:
Remove compiler warnings
innobase/row/row0sel.c:
Remove compiler warnings
libmysqld/lib_sql.cc:
Remove not used variables
myisam/mi_key.c:
Remove compiler warnings
regex/engine.c:
Added comment
sql/derror.cc:
Remove not used variables
sql/examples/ha_archive.cc:
Fixed bug in blob handling
Removed not used variable
sql/field.cc:
Remove compiler warnings
Remove not used variables
sql/filesort.cc:
Remove compiler warnings
sql/ha_heap.cc:
Remove not used variable
sql/ha_innodb.cc:
Remove not used variables
Remove compiler warnings
sql/handler.cc:
Remove compiler warnings and remove not used variables
sql/item.cc:
Remove compiler warnings and remove not used variables
sql/item_subselect.cc:
Remove compiler warnings
sql/item_sum.cc:
Remove compiler warnings
sql/item_sum.h:
Remove compiler warnings and remove not used variables
sql/log.cc:
Remove compiler warnings and remove not used variables
sql/log_event.cc:
Remove compiler warnings
sql/mysqld.cc:
Remove compiler warnings and remove not used variables
sql/opt_range.cc:
Remove compiler warnings and remove not used variables
sql/slave.cc:
Remove compiler warnings and remove not used variables
sql/sp_pcontext.cc:
Remove compiler warnings and remove not used variables
sql/sql_acl.cc:
Remove compiler warnings and remove not used variables
sql/sql_analyse.cc:
Remove compiler warnings and remove not used variables
sql/sql_base.cc:
Remove compiler warnings and remove not used variables
sql/sql_db.cc:
Remove compiler warnings and remove not used variables
sql/sql_help.cc:
Remove compiler warnings and remove not used variables
sql/sql_insert.cc:
Remove compiler warnings and remove not used variables
sql/sql_load.cc:
Remove compiler warnings and remove not used variables
sql/sql_parse.cc:
Remove compiler warnings and remove not used variables
sql/sql_prepare.cc:
Remove compiler warnings and remove not used variables
sql/sql_select.cc:
Remove compiler warnings and remove not used variables
sql/sql_show.cc:
Remove compiler warnings and remove not used variables
sql/sql_table.cc:
Remove compiler warnings
sql/sql_union.cc:
Remove compiler warnings
sql/sql_update.cc:
Remove compiler warnings and remove not used variables
sql/sql_yacc.yy:
Remove compiler warnings and remove not used variables
sql/strfunc.cc:
Remove compiler warnings and remove not used variables
strings/ctype-ucs2.c:
Remove compiler warnings
tests/mysql_client_test.c:
Remove compiler warnings and remove not used variables
tools/mysqlmanager.c:
Remove compiler warnings and remove not used variables
BitKeeper/etc/logging_ok:
auto-union
client/mysql.cc:
Auto merged
extra/my_print_defaults.c:
Auto merged
include/m_string.h:
Auto merged
mysql-test/mysql-test-run.sh:
Auto merged
mysql-test/r/ctype_utf8.result:
Auto merged
mysql-test/r/user_var.result:
Auto merged
mysql-test/t/user_var.test:
Auto merged
scripts/make_binary_distribution.sh:
Auto merged
sql/item_func.cc:
Auto merged
sql/sql_yacc.yy:
Auto merged
strings/ctype-simple.c:
Auto merged
strings/ctype-ucs2.c:
Auto merged
strings/ctype-utf8.c:
Auto merged
libmysql/libmysql.c:
ul
mysql-test/r/ps_1general.result:
Merge
mysql-test/t/derived.test:
Merge
mysql-test/t/ps_1general.test:
Merge
mysql-test/t/type_float.test:
Merge
sql/field.cc:
ul
sql/item.cc:
ul
sql/item.h:
ul
sql/item_func.h:
ul
sql/item_strfunc.cc:
ul
sql/item_sum.cc:
ul
sql/item_sum.h:
ul
sql/procedure.h:
ul
sql/sql_derived.cc:
Trivial merge
sql/sql_parse.cc:
ul
sql/sql_update.cc:
Trivial merge
strings/strtod.c:
Use updated code from 4.1
This is bascily same code as we had before or 5.0, execpt that we now have higher accuracy for floating points value that are integers (like 123.45E+02)
into serg.mylan:/usr/home/serg/Abk/mysql-5.0-xa
mysql-test/r/ctype_ucs.result:
Auto merged
mysql-test/t/ctype_ucs.test:
Auto merged
mysql-test/t/strict.test:
Auto merged
sql/ha_innodb.cc:
Auto merged
sql/sql_class.cc:
Auto merged
sql/sql_class.h:
Auto merged
sql/sql_lex.cc:
Auto merged
sql/sql_lex.h:
Auto merged
sql/sql_parse.cc:
Auto merged
sql/sql_update.cc:
Auto merged
sql/examples/ha_archive.cc:
Auto merged
sql/sql_yacc.yy:
Auto merged
Simple optimzations done while reviewing code
client/mysqltest.c:
Added options --enable-ps-warnings and --disable-ps-warnings
(to fix failing test case)
mysql-test/t/row.test:
Disable warnings that comes from 'parse' parth
sql/field.cc:
Removed calls to is_null() in field functions.
(Not needed as NULL handling is done on the level above fields)
Indentation fixes
Removed calls to alloca() as buffer needed was quite small.
sql/field.h:
Indentation changes and comment fixes
sql/filesort.cc:
Simple optimization during code review
sql/item.cc:
Indentation fixes
Removed some unnecessary tests (added DBUG_ASSERTS() instead)
sql/item_buff.cc:
Indentation fixes
sql/my_decimal.cc:
Indentation fixes
Simple optimization
Fixed compiler warning
sql/sql_update.cc:
Removed unnessessary assignment
reading tables in "complex" SQL statements. If inserts happen in a
table being read, the statements have no serialization order and the
change can therefore not be reproduced on the slave.
sql/sql_update.cc:
Switching to using T_READ_NO_INSERT when the binlog is used.
sql/sql_yacc.yy:
Switching to using T_READ_NO_INSERT when the binlog is used.
client/mysqlbinlog.cc:
Auto merged
configure.in:
Auto merged
include/my_global.h:
Auto merged
include/my_pthread.h:
Auto merged
innobase/trx/trx0trx.c:
Auto merged
mysql-test/include/varchar.inc:
Auto merged
mysql-test/r/bdb.result:
Auto merged
mysql-test/r/myisam.result:
Auto merged
mysql-test/r/mysqlbinlog2.result:
Auto merged
mysql-test/t/ctype_ucs.test:
Auto merged
mysql-test/t/user_var.test:
Auto merged
mysys/hash.c:
Auto merged
sql/item_func.cc:
Auto merged
sql/log_event.cc:
Auto merged
sql/log_event.h:
Auto merged
sql/set_var.h:
Auto merged
sql/slave.cc:
Auto merged
sql/slave.h:
Auto merged
sql/sp_head.cc:
Auto merged
sql/sql_base.cc:
Auto merged
sql/sql_class.cc:
Auto merged
sql/sql_lex.h:
Auto merged
sql/sql_repl.cc:
Auto merged
sql/sql_repl.h:
Auto merged
sql/sql_table.cc:
Auto merged
sql/sql_trigger.cc:
Auto merged
mysql-test/r/ctype_ucs.result:
ul
mysql-test/r/drop_temp_table.result:
ul
mysql-test/r/innodb.result:
ul
mysql-test/r/insert_select.result:
ul
mysql-test/r/mix_innodb_myisam_binlog.result:
ul
mysql-test/r/rpl_change_master.result:
ul
mysql-test/r/rpl_charset.result:
ul
mysql-test/r/rpl_error_ignored_table.result:
ul
mysql-test/r/rpl_flush_log_loop.result:
ul
mysql-test/r/rpl_flush_tables.result:
ul
mysql-test/r/rpl_loaddata.result:
ul
mysql-test/r/rpl_loaddata_rule_m.result:
ul
mysql-test/r/rpl_log.result:
ul
mysql-test/r/rpl_max_relay_size.result:
ul
mysql-test/r/rpl_relayrotate.result:
ul
mysql-test/r/rpl_replicate_do.result:
ul
mysql-test/r/rpl_rotate_logs.result:
ul
mysql-test/r/rpl_temporary.result:
ul
mysql-test/r/rpl_timezone.result:
ul
mysql-test/r/rpl_until.result:
ul
mysql-test/r/rpl_user_variables.result:
ul
mysql-test/r/user_var.result:
ul
extra/perror.c:
Use strmov() instead of strcpy()
Indentation fixes
sql/sql_table.cc:
Revert back part of the old code as the new code didn't use mysql_data_home, which would have caused problems in the embedded server
sql/sql_update.cc:
Ensure that used_index is always set (It has to be set because it's value is tested if order != 0)
don't define UNIV_DEBUG in CFLAGS/CXXFLAGS anymore
sql/mysqld.cc
hide from the user options that do nothing
sql/sql_update.cc
better fix for uninitialized used_index
configure.in:
don't define UNIV_DEBUG in CFLAGS/CXXFLAGS anymore
sql/mysqld.cc:
hide from the user options that do nothing
sql/sql_update.cc:
better fix for uninitialized used_index
Fix replication for multi-update
new test - rpl_multi_update2
sql/mysql_priv.h:
Bug#7011
New function mysql_multi_update_lock()
sql/sql_parse.cc:
Bug#7011
New function check_multi_update_lock()
For multi-update on slave, perform an early open&lock
sql/sql_update.cc:
Bug#7011
Split out multi-update locking into its own function,
mysql_multi_update_lock()
fix for binlog+autocommit+tclog
comments, style fixes
libmysqld/libmysqld.rc:
Change mode to -rw-rw-r--
libmysqld/resource.h:
Change mode to -rw-rw-r--
configure.in:
check for getpagesize
include/my_global.h:
typo ?
include/my_pthread.h:
bug in thread_safe_decrement_and_test()
mysql-test/r/bdb.result:
results updated
mysql-test/r/innodb.result:
results updated
mysql-test/r/mix_innodb_myisam_binlog.result:
results updated
mysql-test/r/rpl_relayrotate.result:
results updated
sql/ha_berkeley.cc:
style fixes
sql/ha_innodb.cc:
fixes to follow innodb coding style
sql/handler.cc:
more comments. XA COMMIT ONE PHASE fix.
sql/handler.h:
my_xid -> ulonglong. comments
sql/item_func.cc:
DO RELEASE_LOCK("...") is no cache_stmt
sql/log.cc:
comments, better error messages
sql/log_event.cc:
even in autocommit mode we may need to cache_stmt
xid is ulonglong
sql/log_event.h:
more comments.
sql/mysql_priv.h:
query_id is ulonglong
sql/mysqld.cc:
default value for --log-tc changed
sql/share/errmsg.txt:
better error messages
sql/sql_class.h:
cleanup, comments
sql/sql_delete.cc:
deleting from temporary tables is not always transactional
sql/sql_insert.cc:
insert into temporary table is not always transactional
sql/sql_load.cc:
load data into temp table is not always transactional
sql/sql_parse.cc:
comments. bad merge fixed. xa_state_names[]
sql/sql_table.cc:
create/drop temp table is not always transactional
sql/sql_update.cc:
update temp table is not always transactional
BitKeeper/deleted/.del-sort.c~e2e56b5a37ce86f4:
Auto merged
client/mysql.cc:
Auto merged
client/mysqlbinlog.cc:
Auto merged
client/mysqldump.c:
Auto merged
client/mysqltest.c:
Auto merged
myisam/ft_boolean_search.c:
Auto merged
myisam/mi_packrec.c:
Auto merged
myisam/sort.c:
Auto merged
mysql-test/r/fulltext.result:
Auto merged
sql/item_create.cc:
Auto merged
sql/item_strfunc.cc:
Auto merged
sql/item_timefunc.cc:
Auto merged
sql/log.cc:
Auto merged
sql/set_var.cc:
Auto merged
sql/slave.cc:
Auto merged
sql/sql_acl.h:
Auto merged
sql/sql_analyse.cc:
Auto merged
sql/sql_cache.cc:
Auto merged
sql/sql_db.cc:
Auto merged
sql/tztime.cc:
Auto merged
tests/client_test.c:
Auto merged
sql/ha_federated.cc:
Change mode to -rw-rw-r--
myisam/mi_create.c:
Ensure that all referenced memory is reset
mysql-test/r/type_timestamp.result:
More tests
mysql-test/t/func_compress.test:
Added comment
mysql-test/t/type_timestamp.test:
More tests
sql/field.h:
Count number of varchars in table
sql/item_cmpfunc.cc:
Safety fix (to avoid warning from valgrind)
sql/opt_range.cc:
Simple optimzation
sql/sql_acl.cc:
Safety fix (to avoid warning from valgrind)
sql/sql_parse.cc:
Safety fix for prepared statements
sql/sql_show.cc:
Move variable declarations first in function
Remove hidden variable (it)
Remove accessing freed memory (table_list->table_name)
sql/sql_update.cc:
Compare records with varchars correctly
sql/table.cc:
Safety fix when running with purify/valgrind
Fix wrong memory reference in case of errors
sql/table.h:
Added counting of varchar fields
strings/ctype-mb.c:
Fill max_str properly
into mysql.com:/home/my/mysql-5.0
sql/item_func.cc:
Auto merged
sql/sql_acl.cc:
Auto merged
sql/sql_base.cc:
Auto merged
sql/sql_insert.cc:
Auto merged
sql/sql_parse.cc:
Auto merged
sql/sql_update.cc:
Auto merged
sql/sql_view.cc:
Auto merged
sql/table.cc:
Auto merged
sql/table.h:
Auto merged
Split TABLE to TABLE and TABLE_SHARE (TABLE_SHARE is still allocated as part of table, will be fixed soon)
Created Field::make_field() and made Field_num::make_field() to call this
Added 'TABLE_SHARE->db' that points to database name; Changed all usage of table_cache_key as database name to use this instead
Changed field->table_name to point to pointer to alias. This allows us to change alias for a table by just updating one pointer.
Renamed TABLE_SHARE->real_name to table_name
Renamed TABLE->table_name to alias
Renamed TABLE_LIST->real_name to table_name
include/myisam.h:
Added const before names
mysql-test/r/group_min_max.result:
Make results repeatable
mysql-test/t/group_min_max.test:
Make results repeatable
sql/field.cc:
Created Field::make_field() and made Field_num::make_field() to call this
Use TABLE_SHARE
Use sql_strmake() instead of sql_memdup() to simplify code
sql/field.h:
Changed table_name to be pointer to table_name. This allows us to change alias for all fields by just changing one pointer.
Use TABLE_SHARE
sql/field_conv.cc:
Use TABLE_SHARE
sql/filesort.cc:
Use TABLE_SHARE
sql/ha_berkeley.cc:
Use TABLE_SHARE
sql/ha_heap.cc:
Use TABLE_SHARE
sql/ha_innodb.cc:
Use TABLE_SHARE
sql/ha_myisam.cc:
Use TABLE_SHARE
sql/ha_myisammrg.cc:
Use TABLE_SHARE
Change some pointer handling to use const char*
sql/ha_ndbcluster.cc:
Use TABLE_SHARE
sql/handler.cc:
Use TABLE_SHARE
sql/item.cc:
Use TABLE_SHARE
sql/item_func.cc:
Use TABLE_SHARE
sql/item_subselect.cc:
Use TABLE_SHARE
sql/item_sum.cc:
Use TABLE_SHARE
sql/key.cc:
Use TABLE_SHARE
sql/lock.cc:
Use TABLE_SHARE
sql/log_event.cc:
real_name -> table_name
sql/mysql_priv.h:
Use TABLE_SHARE
sql/opt_range.cc:
Use TABLE_SHARE
sql/opt_sum.cc:
Use TABLE_SHARE
sql/records.cc:
Use TABLE_SHARE
sql/repl_failsafe.cc:
real_name -> table_name
sql/slave.cc:
Use TABLE_SHARE
sql/sp.cc:
Use TABLE_SHARE
sql/sp_head.cc:
real_name -> table_name
sql/sql_acl.cc:
Use TABLE_SHARE
removed unnecessary assert
fixed indentation
changed some char * -> const char*
sql/sql_acl.h:
changed some char* -> const char*
sql/sql_base.cc:
Use TABLE_SHARE
sql/sql_cache.cc:
Use TABLE_SHARE
sql/sql_class.cc:
Use TABLE_SHARE
sql/sql_db.cc:
real_name -> table_name
sql/sql_delete.cc:
Use TABLE_SHARE
sql/sql_derived.cc:
Use TABLE_SHARE
sql/sql_handler.cc:
Use TABLE_SHARE
sql/sql_help.cc:
Use TABLE_SHARE
sql/sql_insert.cc:
Use TABLE_SHARE
sql/sql_load.cc:
Use TABLE_SHARE
sql/sql_parse.cc:
Use TABLE_SHARE
sql/sql_rename.cc:
real_name -> table_name
sql/sql_select.cc:
Use TABLE_SHARE
table->blob_fields now points to field offsets, not fields
tmp_table->table_name now points to alias name
sql/sql_show.cc:
Use TABLE_SHARE
sql/sql_table.cc:
Use TABLE_SHARE
sql/sql_test.cc:
Use TABLE_SHARE
sql/sql_trigger.cc:
Use TABLE_SHARE
sql/sql_udf.cc:
Use TABLE_SHARE
sql/sql_union.cc:
real_name -> table_name
sql/sql_update.cc:
Use TABLE_SHARE
sql/sql_view.cc:
Use TABLE_SHARE
sql/table.cc:
Split TABLE to TABLE and TABLE_SHARE
Changed blob_field to be field offsets instead of pointer to fields
Only initialize table->s->default_values with default record (not all table->record[#])
Some indentation changes
sql/table.h:
Split TABLE to TABLE and TABLE_SHARE
sql/tztime.cc:
real_name -> table_name
sql/unireg.cc:
Use TABLE_SHARE
sql/unireg.h:
Use TABLE_SHARE