Commit Graph

541 Commits

Author SHA1 Message Date
Dmitry Lenev
0ec868ca0e Fix for bug #50908 "Assertion `handler_tables_hash.records == 0'
failed in enter_locked_tables_mode".

Server was aborted due to assertion failure when one tried to 
execute statement requiring prelocking (i.e. firing triggers
or using stored functions) while having open HANDLERs.

The problem was that THD::enter_locked_tables_mode() method
which was called at the beginning of execution of prelocked 
statement assumed there are no open HANDLERs. It had to do 
so because corresponding THD::leave_locked_tables_mode()
method was unable to properly restore MDL sentinel when
leaving LOCK TABLES/prelocked mode in the presence of open 
HANDLERs.

This patch solves this problem by changing the latter method
to properly restore MDL sentinel and thus removing need for 
this assumption. As a side-effect, it lifts unjustified
limitation by allowing to keep HANDLERs open when entering 
LOCK TABLES mode.
2010-02-12 10:05:43 +03:00
Dmitry Lenev
8018ec5adb Fix for bug #50913 "Deadlock between open_and_lock_tables_derived
and MDL".

Concurrent execution of a multi-DELETE statement and ALTER
TABLE statement which affected one of the tables used in
the multi-DELETE sometimes led to deadlock.
Similar deadlocks might have occured when one performed
INSERT/UPDATE/DELETE on a view and concurrently executed
ALTER TABLE for the view's underlying table, or when one
concurrently executed TRUNCATE TABLE for InnoDB table and
ALTER TABLE for the same table.

These deadlocks were caused by a discrepancy between types of
metadata and thr_lock.cc locks acquired by those statements.

What happened was that multi-DELETE/TRUNCATE/DML-through-the-
view statement in the first connection acquired SR lock on a
table, then ALTER TABLE would come in in the second connection
and acquire SNW metadata lock and TL_WRITE_ALLOW_READ
thr_lock.c lock and then would start waiting for the first
connection during lock upgrade. After that the statement in
the first connection would try to acquire TL_WRITE lock on
table and would start waiting for the second connection,
creating a deadlock.

This patch solves this problem by ensuring that we acquire
SW metadata lock in all cases in which we acquiring write
thr_lock.c lock. This guarantees that deadlocks like the
one described above won't occur since all lock conflicts
in such situation are resolved within MDL subsystem.

This patch also adds assert which should guarantee that
such situations won't arise in future.

mysql-test/r/lock_multi.result:
  Added main test for bug #50913 "Deadlock between
  open_and_lock_tables_derived and MDL".
mysql-test/r/mdl_sync.result:
  Added additional coverage for bug #50913 "Deadlock
  between open_and_lock_tables_derived and MDL".
mysql-test/t/lock_multi.test:
  Added main test for bug #50913 "Deadlock between
  open_and_lock_tables_derived and MDL".
mysql-test/t/mdl_sync.test:
  Added additional coverage for bug #50913 "Deadlock
  between open_and_lock_tables_derived and MDL".
sql/lock.cc:
  Added assert that enforces that when we are locking
  a non-temporary table we have an appropriate type of
  metadata lock on this table.
sql/mysql_priv.h:
  Added separate flag for open_tables() to be able specify that
  SH metadata locks on table to be open should be acquired.
  We can no longer use MYSQL_LOCK_IGNORE_FLUSH flag for this
  as in addition to use in I_S implementation it is also used
  for opening system tables. Since in the latter case we also
  acquire thr_lock.c locks using SH metadata lock in it instead
  of SR or SW locks may lead to deadlock.
sql/sql_base.cc:
  When opening tables don't interpret MYSQL_LOCK_IGNORE_FLUSH
  flag as request to acquire SH metadata locks. This flag is
  also used for opening system tables for which we also take
  thr_lock.c locks and thus proper metadata lock to take in
  this case is SR or SW lock (otherwise deadlocks can occur).
  In cases when SH lock is really required (e.g. when tables
  are open by I_S implementation) we rely on that newly
  introduced MYSQL_OPEN_FORCE_SHARED_HIGH_PRIO_MDL flag is
  used.
sql/sql_delete.cc:
  mysql_truncate_by_delete():
    Adjust type of metadata lock to be requested after changing
    type of thr_lock.c lock for table list element from one
    which was set in parser to TL_WRITE.
    This removes discrepancy between types of these locks which
    allowed deadlocks to creep in.
sql/sql_handler.cc:
  When closing table which was open by HANDLER statement clear
  TABLE::open_by_handler flag. This allows to use this flag as
  a reliable indication that TABLE instance was open by HANDLER
  statement in assert which was added to mysql_lock_tables().
sql/sql_parse.cc:
  multi_delete_set_locks_and_link_aux_tables():
    Adjust type of metadata lock to be requested after changing
    type of thr_lock.c lock for table list element from one
    which was set in parser to TL_WRITE.
    This removes discrepancy between types of these locks which
    allowed deadlocks to creep in.
sql/sql_show.cc:
  Use newly introduced MYSQL_OPEN_FORCE_SHARED_HIGH_PRIO_MDL
  flag in order to acquire SH metadata locks when opening tables
  in I_S implementation.
sql/sql_update.cc:
  Added comment explaining why in multi-update after deciding
  that we need weaker thr_lock.c lock on a table we don't
  downgrade metadata lock on it.
sql/sql_view.cc:
  When merging view into main statement adjust type of metadata
  lock to be requested after changing type of thr_lock.c lock
  for table. This removes discrepancy between types of these
  locks which allowed deadlocks to creep in.
2010-02-08 23:19:55 +03:00
Dmitry Lenev
c7e7a7d20c Fix for bug #50913 "Deadlock between open_and_lock_tables_derived
and MDL".

Concurrent execution of a multi-DELETE statement and ALTER
TABLE statement which affected one of the tables used in
the multi-DELETE sometimes led to deadlock.
Similar deadlocks might have occured when one performed
INSERT/UPDATE/DELETE on a view and concurrently executed
ALTER TABLE for the view's underlying table, or when one
concurrently executed TRUNCATE TABLE for InnoDB table and
ALTER TABLE for the same table.

These deadlocks were caused by a discrepancy between types of
metadata and thr_lock.cc locks acquired by those statements.

What happened was that multi-DELETE/TRUNCATE/DML-through-the-
view statement in the first connection acquired SR lock on a
table, then ALTER TABLE would come in in the second connection
and acquire SNW metadata lock and TL_WRITE_ALLOW_READ
thr_lock.c lock and then would start waiting for the first
connection during lock upgrade. After that the statement in
the first connection would try to acquire TL_WRITE lock on
table and would start waiting for the second connection,
creating a deadlock.

This patch solves this problem by ensuring that we acquire
SW metadata lock in all cases in which we acquiring write
thr_lock.c lock. This guarantees that deadlocks like the
one described above won't occur since all lock conflicts
in such situation are resolved within MDL subsystem.

This patch also adds assert which should guarantee that
such situations won't arise in future.
2010-02-08 23:19:55 +03:00
Jon Olav Hauglid
82f4494125 Bug #50907 Assertion `hash_tables->table->next == __null' on
HANDLER OPEN

The problem was a too restrictive assert in the code for 
HANDLER ... OPEN and HANDLER ... READ that checked table->next
to verify that we didn't open views or merge tables.

This pointer is also used to link temporary tables together
(see thd->temporary_tables). In this case TABLE::next can be
set even if we're trying to open a single table.

This patch adjust the two asserts to also check for the presence
of temporary tables.

Test case added to handler_myisam.test.
2010-02-05 15:52:17 +01:00
Jon Olav Hauglid
1ca7c51961 Bug #50907 Assertion `hash_tables->table->next == __null' on
HANDLER OPEN

The problem was a too restrictive assert in the code for 
HANDLER ... OPEN and HANDLER ... READ that checked table->next
to verify that we didn't open views or merge tables.

This pointer is also used to link temporary tables together
(see thd->temporary_tables). In this case TABLE::next can be
set even if we're trying to open a single table.

This patch adjust the two asserts to also check for the presence
of temporary tables.

Test case added to handler_myisam.test.
2010-02-05 15:52:17 +01:00
Konstantin Osipov
665100b69d Merge next-mr -> next-4284. 2010-02-02 02:22:16 +03:00
Konstantin Osipov
2c6015e8dc Merge next-mr -> next-4284. 2010-02-02 02:22:16 +03:00
Dmitry Lenev
eba5d30e67 Implement new type-of-operation-aware metadata locks.
Add a wait-for graph based deadlock detector to the
MDL subsystem.

Fixes bug #46272 "MySQL 5.4.4, new MDL: unnecessary deadlock" and
bug #37346 "innodb does not detect deadlock between update and
alter table".

The first bug manifested itself as an unwarranted abort of a
transaction with ER_LOCK_DEADLOCK error by a concurrent ALTER
statement, when this transaction tried to repeat use of a
table, which it has already used in a similar fashion before
ALTER started.

The second bug showed up as a deadlock between table-level
locks and InnoDB row locks, which was "detected" only after
innodb_lock_wait_timeout timeout.

A transaction would start using the table and modify a few
rows.
Then ALTER TABLE would come in, and start copying rows
into a temporary table. Eventually it would stumble on
the modified records and get blocked on a row lock.
The first transaction would try to do more updates, and get
blocked on thr_lock.c lock.
This situation of circular wait would only get resolved
by a timeout.

Both these bugs stemmed from inadequate solutions to the
problem of deadlocks occurring between different
locking subsystems.

In the first case we tried to avoid deadlocks between metadata
locking and table-level locking subsystems, when upgrading shared
metadata lock to exclusive one.
Transactions holding the shared lock on the table and waiting for
some table-level lock used to be aborted too aggressively.

We also allowed ALTER TABLE to start in presence of transactions
that modify the subject table. ALTER TABLE acquires
TL_WRITE_ALLOW_READ lock at start, and that block all writes
against the table (naturally, we don't want any writes to be lost
when switching the old and the new table). TL_WRITE_ALLOW_READ
lock, in turn, would block the started transaction on thr_lock.c
lock, should they do more updates. This, again, lead to the need
to abort such transactions.

The second bug occurred simply because we didn't have any
mechanism to detect deadlocks between the table-level locks
in thr_lock.c and row-level locks in InnoDB, other than
innodb_lock_wait_timeout.

This patch solves both these problems by moving lock conflicts
which are causing these deadlocks into the metadata locking
subsystem, thus making it possible to avoid or detect such
deadlocks inside MDL.

To do this we introduce new type-of-operation-aware metadata
locks, which allow MDL subsystem to know not only the fact that
transaction has used or is going to use some object but also what
kind of operation it has carried out or going to carry out on the
object.

This, along with the addition of a special kind of upgradable
metadata lock, allows ALTER TABLE to wait until all
transactions which has updated the table to go away.
This solves the second issue.
Another special type of upgradable metadata lock is acquired
by LOCK TABLE WRITE. This second lock type allows to solve the
first issue, since abortion of table-level locks in event of
DDL under LOCK TABLES becomes also unnecessary.

Below follows the list of incompatible changes introduced by
this patch:

- From now on, ALTER TABLE and CREATE/DROP TRIGGER SQL (i.e. those
  statements that acquire TL_WRITE_ALLOW_READ lock)
  wait for all transactions which has *updated* the table to
  complete.

- From now on, LOCK TABLES ... WRITE, REPAIR/OPTIMIZE TABLE
  (i.e. all statements which acquire TL_WRITE table-level lock) wait
  for all transaction which *updated or read* from the table
  to complete.
  As a consequence, innodb_table_locks=0 option no longer applies
  to LOCK TABLES ... WRITE.

- DROP DATABASE, DROP TABLE, RENAME TABLE no longer abort
  statements or transactions which use tables being dropped or
  renamed, and instead wait for these transactions to complete.

- Since LOCK TABLES WRITE now takes a special metadata lock,
  not compatible with with reads or writes against the subject table
  and transaction-wide, thr_lock.c deadlock avoidance algorithm
  that used to ensure absence of deadlocks between LOCK TABLES
  WRITE and other statements is no longer sufficient, even for
  MyISAM. The wait-for graph based deadlock detector of MDL
  subsystem may sometimes be necessary and is involved. This may
  lead to ER_LOCK_DEADLOCK error produced for multi-statement
  transactions even if these only use MyISAM:

  session 1:         session 2:
  begin;

  update t1 ...      lock table t2 write, t1 write;
                     -- gets a lock on t2, blocks on t1

  update t2 ...
  (ER_LOCK_DEADLOCK)

- Finally,  support of LOW_PRIORITY option for LOCK TABLES ... WRITE
  was abandoned.
  LOCK TABLE ... LOW_PRIORITY WRITE from now on has the same
  priority as the usual LOCK TABLE ... WRITE.
  SELECT HIGH PRIORITY no longer trumps LOCK TABLE ... WRITE  in
  the wait queue.

- We do not take upgradable metadata locks on implicitly
  locked tables. So if one has, say, a view v1 that uses
  table t1, and issues:
  LOCK TABLE v1 WRITE;
  FLUSH TABLE t1; -- (or just 'FLUSH TABLES'),
  an error is produced.
  In order to be able to perform DDL on a table under LOCK TABLES,
  the table must be locked explicitly in the LOCK TABLES list.

mysql-test/include/handler.inc:
  Adjusted test case to trigger an execution path on which bug 41110
  "crash with handler command when used concurrently with alter
  table" and bug 41112 "crash in mysql_ha_close_table/get_lock_data
  with alter table" were originally discovered. Left old test case
  which no longer triggers this execution path for the sake of
  coverage.
  Added test coverage for HANDLER SQL statements and type-aware
  metadata locks.
  Added a test for the global shared lock and HANDLER SQL.
  Updated tests to take into account that the old simple deadlock
  detection heuristics was replaced with a graph-based deadlock
  detector.
mysql-test/r/debug_sync.result:
  Updated results (see debug_sync.test).
mysql-test/r/handler_innodb.result:
  Updated results (see handler.inc test).
mysql-test/r/handler_myisam.result:
  Updated results (see handler.inc test).
mysql-test/r/innodb-lock.result:
  Updated results (see innodb-lock.test).
mysql-test/r/innodb_mysql_lock.result:
  Updated results (see innodb_mysql_lock.test).
mysql-test/r/lock.result:
  Updated results (see lock.test).
mysql-test/r/lock_multi.result:
  Updated results (see lock_multi.test).
mysql-test/r/lock_sync.result:
  Updated results (see lock_sync.test).
mysql-test/r/mdl_sync.result:
  Updated results (see mdl_sync.test).
mysql-test/r/sp-threads.result:
  SHOW PROCESSLIST output has changed due to the fact that waiting
  for LOCK TABLES WRITE now happens within metadata locking
  subsystem.
mysql-test/r/truncate_coverage.result:
  Updated results (see truncate_coverage.test).
mysql-test/suite/funcs_1/datadict/processlist_val.inc:
  SELECT FROM I_S.PROCESSLIST output has changed due to fact that
  waiting for LOCK TABLES WRITE now happens within metadata locking
  subsystem.
mysql-test/suite/funcs_1/r/processlist_val_no_prot.result:
  SELECT FROM I_S.PROCESSLIST output has changed due to fact that
  waiting for LOCK TABLES WRITE now happens within metadata locking
  subsystem.
mysql-test/suite/rpl/t/rpl_sp.test:
  Updated to a new SHOW PROCESSLIST state name.
mysql-test/t/debug_sync.test:
  Use LOCK TABLES READ instead of LOCK TABLES WRITE as the latter
  no longer allows to trigger execution path involving waiting on
  thr_lock.c lock and therefore reaching debug sync-point covered
  by this test.
mysql-test/t/innodb-lock.test:
  Adjusted test case to the fact that innodb_table_locks=0 option is
  no longer supported, since LOCK TABLES WRITE handles all its
  conflicts within MDL subsystem.
mysql-test/t/innodb_mysql_lock.test:
  Added test for bug #37346 "innodb does not detect deadlock between
  update and alter table".
mysql-test/t/lock.test:
  Added test coverage which checks the fact that we no longer support
  DDL under LOCK TABLES on tables which were locked implicitly.
  Adjusted existing test cases accordingly.
mysql-test/t/lock_multi.test:
  Added test for bug #46272 "MySQL 5.4.4, new MDL: unnecessary
  deadlock".  Adjusted other test cases to take into account the
  fact that waiting for LOCK TABLES ... WRITE now happens within MDL
  subsystem.
mysql-test/t/lock_sync.test:
  Since LOCK TABLES ... WRITE now takes SNRW metadata lock for
  tables locked explicitly we have to implicitly lock InnoDB tables
  (through view) to trigger the table-level lock conflict between
  TL_WRITE and TL_WRITE_ALLOW_WRITE.
mysql-test/t/mdl_sync.test:
  Added basic test coverage for type-of-operation-aware metadata
  locks. Also covered with tests some use cases involving HANDLER
  statements in which a deadlock could arise.
  Adjusted existing tests to take type-of-operation-aware MDL into
  account.
mysql-test/t/multi_update.test:
  Update to a new SHOW PROCESSLIST state name.
mysql-test/t/truncate_coverage.test:
  Adjusted test case after making LOCK TABLES WRITE to wait until
  transactions that use the table to be locked are completed.
  Updated to the changed name of DEBUG_SYNC point.
sql/handler.cc:
  Global read lock functionality has been
  moved into a class.
sql/lock.cc:
  Global read lock functionality has been
  moved into a class.
  Updated code to use the new MDL API.
sql/mdl.cc:
  Introduced new type-of-operation aware metadata locks.
  To do this:
  - Changed MDL_lock to use one list for waiting requests and one
    list for granted requests. For each list, added a bitmap
    that holds information what lock types a list contains.
    Added a helper class MDL_lock::List to manipulate with granted
    and waited lists while keeping the bitmaps in sync
    with list contents.
  - Changed lock-compatibility functions to use bitmaps that
    define compatibility.
  - Introduced a graph based deadlock detector inspired by
    waiting_threads.c from Maria implementation.
  - Now that we have a deadlock detector, and no longer have
    a global lock to protect individual lock objects, but rather
    use an rw lock per object, removed redundant code for upgrade,
    and the global read lock. Changed the MDL API to
    no longer require the caller to acquire the global
    intention exclusive lock by means of a separate method.
    Removed a few more methods that became redundant.
  - Removed deadlock detection heuristic, it has been made
    obsolete by the deadlock detector.
  - With operation-type-aware metadata locks, MDL subsystem has
    become aware of potential conflicts between DDL and open
    transactions. This made it possible to remove calls to
    mysql_abort_transactions_with_shared_lock() from acquisition
    paths for exclusive lock and lock upgrade. Now we can simply
    wait for these transactions to complete without fear of
    deadlock. Function mysql_lock_abort() has also become
    unnecessary for all conflicting cases except when a DDL
    conflicts with a connection that has an open HANDLER.
sql/mdl.h:
  Introduced new type-of-operation aware metadata locks.
  Introduced a graph based deadlock detector and supporting
  methods.
  Added comments.
  God rid of redundant API calls.
  Renamed m_lt_or_ha_sentinel to m_trans_sentinel,
  since now it guards the global read lock as well as
  LOCK TABLES and HANDLER locks.
sql/mysql_priv.h:
  Moved the global read lock functionality into a
  class.
  Added MYSQL_OPEN_FORCE_SHARED_MDL flag which forces
  open_tables() to take MDL_SHARED on tables instead of
  metadata locks specified in the parser. We use this to
  allow PREPARE run concurrently in presence of
  LOCK TABLES ... WRITE.
  Added signature for find_table_for_mdl_ugprade().
sql/set_var.cc:
  Global read lock functionality has been
  moved into a class.
sql/sp_head.cc:
  When creating TABLE_LIST elements for prelocking or
  system tables set the type of request for metadata
  lock according to the operation that will be performed
  on the table.
sql/sql_base.cc:
  - Updated code to use the new MDL API.
  - In order to avoid locks starvation we take upgradable
    locks all at once. As result implicitly locked tables no
    longer get an upgradable lock. Consequently DDL and FLUSH
    TABLES for such tables is prohibited.
    find_write_locked_table() was replaced by
    find_table_for_mdl_upgrade() function.
    open_table() was adjusted to return TABLE instance with
    upgradable ticket when necessary.
  - We no longer wait for all locks on OT_WAIT back off
    action -- only on the lock that caused the wait
    conflict. Moreover, now we distinguish cases when we
    have to wait due to conflict in MDL and old version
    of table in TDC.
  - Upate mysql_notify_threads_having_share_locks()
    to only abort thr_lock.c waits of threads that
    have open HANDLERs, since lock conflicts with only
    these threads now can lead to deadlocks not detectable
    by the MDL deadlock detector.
  - Remove mysql_abort_transactions_with_shared_locks()
    which is no longer needed.
sql/sql_class.cc:
  Global read lock functionality has been moved into a class.
  Re-arranged code in THD::cleanup() to simplify assert.
sql/sql_class.h:
  Introduced class to incapsulate global read lock
  functionality.
  Now sentinel in MDL subsystem guards the global read lock
  as well as LOCK TABLES and HANDLER locks. Adjusted code
  accordingly.
sql/sql_db.cc:
  Global read lock functionality has been moved into a class.
sql/sql_delete.cc:
  We no longer acquire upgradable metadata locks on tables
  which are locked by LOCK TABLES implicitly. As result
  TRUNCATE TABLE is no longer allowed for such tables.
  Updated code to use the new MDL API.
sql/sql_handler.cc:
  Inform MDL_context about presence of open HANDLERs.
  Since HANLDERs break MDL protocol by acquiring table-level
  lock while holding only S metadata lock on a table MDL
  subsystem should take special care about such contexts (Now
  this is the only case when mysql_lock_abort() is used).
sql/sql_parse.cc:
  Global read lock functionality has been moved into a class.
  Do not take upgradable metadata locks when opening tables
  for CREATE TABLE SELECT as it is not necessary and limits
  concurrency.
  When initializing TABLE_LIST objects before adding them
  to the table list set the type of request for metadata lock
  according to the operation that will be performed on the
  table.
  We no longer acquire upgradable metadata locks on tables
  which are locked by LOCK TABLES implicitly. As result FLUSH
  TABLES is no longer allowed for such tables.
sql/sql_prepare.cc:
  Use MYSQL_OPEN_FORCE_SHARED_MDL flag when opening
  tables during PREPARE. This allows PREPARE to run
  concurrently in presence of LOCK TABLES ... WRITE.
sql/sql_rename.cc:
  Global read lock functionality has been moved into a class.
sql/sql_show.cc:
  Updated code to use the new MDL API.
sql/sql_table.cc:
  Global read lock functionality has been moved into a class.
  We no longer acquire upgradable metadata locks on tables
  which are locked by LOCK TABLES implicitly. As result DROP
  TABLE is no longer allowed for such tables.
  Updated code to use the new MDL API.
sql/sql_trigger.cc:
  Global read lock functionality has been moved into a class.
  We no longer acquire upgradable metadata locks on tables
  which are locked by LOCK TABLES implicitly. As result
  CREATE/DROP TRIGGER is no longer allowed for such tables.
  Updated code to use the new MDL API.
sql/sql_view.cc:
  Global read lock functionality has been moved into a class.
  Fixed results of wrong merge that led to misuse of GLR API.
  CREATE VIEW statement is not a commit statement.
sql/table.cc:
  When resetting TABLE_LIST objects for PS or SP re-execution
  set the type of request for metadata lock according to the
  operation that will be performed on the table. Do the same
  in auxiliary function initializing metadata lock requests
  in a table list.
sql/table.h:
  When initializing TABLE_LIST objects set the type of request
  for metadata lock according to the operation that will be
  performed on the table.
sql/transaction.cc:
  Global read lock functionality has been moved into a class.
2010-02-01 14:43:06 +03:00
Dmitry Lenev
afd15c43a9 Implement new type-of-operation-aware metadata locks.
Add a wait-for graph based deadlock detector to the
MDL subsystem.

Fixes bug #46272 "MySQL 5.4.4, new MDL: unnecessary deadlock" and
bug #37346 "innodb does not detect deadlock between update and
alter table".

The first bug manifested itself as an unwarranted abort of a
transaction with ER_LOCK_DEADLOCK error by a concurrent ALTER
statement, when this transaction tried to repeat use of a
table, which it has already used in a similar fashion before
ALTER started.

The second bug showed up as a deadlock between table-level
locks and InnoDB row locks, which was "detected" only after
innodb_lock_wait_timeout timeout.

A transaction would start using the table and modify a few
rows.
Then ALTER TABLE would come in, and start copying rows
into a temporary table. Eventually it would stumble on
the modified records and get blocked on a row lock.
The first transaction would try to do more updates, and get
blocked on thr_lock.c lock.
This situation of circular wait would only get resolved
by a timeout.

Both these bugs stemmed from inadequate solutions to the
problem of deadlocks occurring between different
locking subsystems.

In the first case we tried to avoid deadlocks between metadata
locking and table-level locking subsystems, when upgrading shared
metadata lock to exclusive one.
Transactions holding the shared lock on the table and waiting for
some table-level lock used to be aborted too aggressively.

We also allowed ALTER TABLE to start in presence of transactions
that modify the subject table. ALTER TABLE acquires
TL_WRITE_ALLOW_READ lock at start, and that block all writes
against the table (naturally, we don't want any writes to be lost
when switching the old and the new table). TL_WRITE_ALLOW_READ
lock, in turn, would block the started transaction on thr_lock.c
lock, should they do more updates. This, again, lead to the need
to abort such transactions.

The second bug occurred simply because we didn't have any
mechanism to detect deadlocks between the table-level locks
in thr_lock.c and row-level locks in InnoDB, other than
innodb_lock_wait_timeout.

This patch solves both these problems by moving lock conflicts
which are causing these deadlocks into the metadata locking
subsystem, thus making it possible to avoid or detect such
deadlocks inside MDL.

To do this we introduce new type-of-operation-aware metadata
locks, which allow MDL subsystem to know not only the fact that
transaction has used or is going to use some object but also what
kind of operation it has carried out or going to carry out on the
object.

This, along with the addition of a special kind of upgradable
metadata lock, allows ALTER TABLE to wait until all
transactions which has updated the table to go away.
This solves the second issue.
Another special type of upgradable metadata lock is acquired
by LOCK TABLE WRITE. This second lock type allows to solve the
first issue, since abortion of table-level locks in event of
DDL under LOCK TABLES becomes also unnecessary.

Below follows the list of incompatible changes introduced by
this patch:

- From now on, ALTER TABLE and CREATE/DROP TRIGGER SQL (i.e. those
  statements that acquire TL_WRITE_ALLOW_READ lock)
  wait for all transactions which has *updated* the table to
  complete.

- From now on, LOCK TABLES ... WRITE, REPAIR/OPTIMIZE TABLE
  (i.e. all statements which acquire TL_WRITE table-level lock) wait
  for all transaction which *updated or read* from the table
  to complete.
  As a consequence, innodb_table_locks=0 option no longer applies
  to LOCK TABLES ... WRITE.

- DROP DATABASE, DROP TABLE, RENAME TABLE no longer abort
  statements or transactions which use tables being dropped or
  renamed, and instead wait for these transactions to complete.

- Since LOCK TABLES WRITE now takes a special metadata lock,
  not compatible with with reads or writes against the subject table
  and transaction-wide, thr_lock.c deadlock avoidance algorithm
  that used to ensure absence of deadlocks between LOCK TABLES
  WRITE and other statements is no longer sufficient, even for
  MyISAM. The wait-for graph based deadlock detector of MDL
  subsystem may sometimes be necessary and is involved. This may
  lead to ER_LOCK_DEADLOCK error produced for multi-statement
  transactions even if these only use MyISAM:

  session 1:         session 2:
  begin;

  update t1 ...      lock table t2 write, t1 write;
                     -- gets a lock on t2, blocks on t1

  update t2 ...
  (ER_LOCK_DEADLOCK)

- Finally,  support of LOW_PRIORITY option for LOCK TABLES ... WRITE
  was abandoned.
  LOCK TABLE ... LOW_PRIORITY WRITE from now on has the same
  priority as the usual LOCK TABLE ... WRITE.
  SELECT HIGH PRIORITY no longer trumps LOCK TABLE ... WRITE  in
  the wait queue.

- We do not take upgradable metadata locks on implicitly
  locked tables. So if one has, say, a view v1 that uses
  table t1, and issues:
  LOCK TABLE v1 WRITE;
  FLUSH TABLE t1; -- (or just 'FLUSH TABLES'),
  an error is produced.
  In order to be able to perform DDL on a table under LOCK TABLES,
  the table must be locked explicitly in the LOCK TABLES list.
2010-02-01 14:43:06 +03:00
Konstantin Osipov
dfdbc84585 A prerequisite patch for the fix for Bug#46224
"HANDLER statements within a transaction might lead to deadlocks".
Introduce a notion of a sentinel to MDL_context. A sentinel
is a ticket that separates all tickets in the context into two
groups: before and after it. Currently we can have (and need) only
one designated sentinel -- it separates all locks taken by LOCK
TABLE or HANDLER statement, which must survive COMMIT and ROLLBACK
and all other locks, which must be released at COMMIT or ROLLBACK.
The tricky part is maintaining the sentinel up to date when
someone release its corresponding ticket. This can happen, e.g.
if someone issues DROP TABLE under LOCK TABLES (generally,
see all calls to release_all_locks_for_name()).
MDL_context::release_ticket() is modified to take care of it.

******
A fix and a test case for Bug#46224 "HANDLER statements within a
transaction might lead to deadlocks".

An attempt to mix HANDLER SQL statements, which are transaction-
agnostic, an open multi-statement transaction,
and DDL against the involved tables (in a concurrent connection) 
could lead to a deadlock. The deadlock would occur when
HANDLER OPEN or HANDLER READ would have to wait on a conflicting
metadata lock. If the connection that issued HANDLER statement
also had other metadata locks (say, acquired in scope of a 
transaction), a classical deadlock situation of mutual wait
could occur.

Incompatible change: entering LOCK TABLES mode automatically
closes all open HANDLERs in the current connection.

Incompatible change: previously an attempt to wait on a lock
in a connection that has an open HANDLER statement could wait
indefinitely/deadlock. After this patch, an error ER_LOCK_DEADLOCK
is produced.

The idea of the fix is to merge thd->handler_mdl_context
with the main mdl_context of the connection, used for transactional
locks. This makes deadlock detection possible, since all waits
with locks are "visible" and available to analysis in a single
MDL context of the connection.

Since HANDLER locks and transactional locks have a different life
cycle -- HANDLERs are explicitly open and closed, and so
are HANDLER locks, explicitly acquired and released, whereas
transactional locks "accumulate" till the end of a transaction
and are released only with COMMIT, ROLLBACK and ROLLBACK TO SAVEPOINT,
a concept of "sentinel" was introduced to MDL_context.
All locks, HANDLER and others, reside in the same linked list.
However, a selected element of the list separates locks with
different life cycle. HANDLER locks always reside at the
end of the list, after the sentinel. Transactional locks are
prepended to the beginning of the list, before the sentinel.
Thus, ROLLBACK, COMMIT or ROLLBACK TO SAVEPOINT, only
release those locks that reside before the sentinel. HANDLER locks
must be released explicitly as part of HANDLER CLOSE statement,
or an implicit close. 
The same approach with sentinel
is also employed for LOCK TABLES locks. Since HANDLER and LOCK TABLES
statement has never worked together, the implementation is
made simple and only maintains one sentinel, which is used either
for HANDLER locks, or for LOCK TABLES locks.


mysql-test/include/handler.inc:
  Add test coverage for Bug#46224 "HANDLER statements within a
  transaction might lead to deadlocks".
  Extended HANDLER coverage to cover a mix of HANDLER, transactions
  and DDL statements.
mysql-test/r/handler_innodb.result:
  Update results (Bug#46224).
mysql-test/r/handler_myisam.result:
  Update results (Bug#46224).
sql/lock.cc:
  Remove thd->some_tables_deleted, it's never used.
sql/log_event.cc:
  No need to check for thd->locked_tables_mode, 
  it's done inside release_transactional_locks().
sql/mdl.cc:
  Implement the concept of HANDLER and LOCK TABLES "sentinel".
  Implement a method to clone an acquired ticket.
  Do not return tickets beyond the sentinel when acquiring
  locks, create a copy.
  Remove methods to merge and backup MDL_context, they are now
  not used (Hurra!). This opens a path to a proper constructor
  and destructor of class MDL_context (to be done in a separate
  patch).
  Modify find_ticket() to provide information about where
  the ticket position is with regard to the sentinel.
sql/mdl.h:
  Add declarations necessary for the implementation of the concept
  of "sentinel", a dedicated ticket separating transactional and
  non-transactional locks.
sql/mysql_priv.h:
  Add mark_tmp_table_for_reuse() declaration, 
  a function to "close" a single session (temporary) table.
sql/sql_base.cc:
  Remove thd->some_tables_deleted.
  Modify deadlock-prevention asserts and deadlock detection
  heuristics to take into account that from now on HANDLER locks
  reside in the same locking context.
  Add broadcast_refresh() to mysql_notify_thread_having_shared_lock():
  this is necessary for the case when a thread having a shared lock
  is asleep in tdc_wait_for_old_versions(). This situation is only
  possible with HANDLER t1 OPEN; FLUSH TABLE (since all over code paths
  that lead to tdc_wait_for_old_versions() always have an
  empty MDL_context). Previously the server would simply deadlock
  in this situation.
sql/sql_class.cc:
  Remove now unused member "THD::some_tables_deleted". 
  Move mysql_ha_cleanup() a few lines above in THD::cleanup() 
  to make sure that all handlers are closed when it's time to 
  destroy the MDL_context of this connection.
  Remove handler_mdl_context and handler_tables.
sql/sql_class.h:
  Remove THD::handler_tables, THD::handler_mdl_context,
  THD::some_tables_deleted.
sql/sql_handler.cc:
  Remove thd->handler_tables.
  Remove thd->handler_mdl_context.
  Rewrite mysql_ha_open() to have no special provision for MERGE
  tables, now that we don't have to manipulate with thd->handler_tables
  it's easy to do.
  Remove dead code.
  Fix a bug in mysql_ha_flush() when we would always flush
  a temporary HANDLER when mysql_ha_flush() is called (actually
  mysql_ha_flush() never needs to flush temporary tables).
sql/sql_insert.cc:
  Update a comment, no more thd->some_tables_deleted.
sql/sql_parse.cc:
  Implement an incompatible change: entering LOCK TABLES closes
  active HANDLERs, if any.
  Now that we have a sentinel, we don't need to check
  for thd->locked_tables_mode when releasing metadata locks in
  COMMIT/ROLLBACK.
sql/sql_plist.h:
  Add new (now necessary) methods to the list class.
sql/sql_prepare.cc:
  Make sure we don't release HANDLER locks when rollback to a
  savepoint, set to not keep locks taken at PREPARE.
sql/sql_servers.cc:
  Update to a new signature of MDL_context::release_all_locks().
sql/sql_table.cc:
  Remove thd->some_tables_deleted.
sql/transaction.cc:
  Add comments. 
  Make sure rollback to (MDL) savepoint works under LOCK TABLES and
  with HANDLER tables.
2009-12-22 19:09:15 +03:00
Konstantin Osipov
39a1a50dfb A prerequisite patch for the fix for Bug#46224
"HANDLER statements within a transaction might lead to deadlocks".
Introduce a notion of a sentinel to MDL_context. A sentinel
is a ticket that separates all tickets in the context into two
groups: before and after it. Currently we can have (and need) only
one designated sentinel -- it separates all locks taken by LOCK
TABLE or HANDLER statement, which must survive COMMIT and ROLLBACK
and all other locks, which must be released at COMMIT or ROLLBACK.
The tricky part is maintaining the sentinel up to date when
someone release its corresponding ticket. This can happen, e.g.
if someone issues DROP TABLE under LOCK TABLES (generally,
see all calls to release_all_locks_for_name()).
MDL_context::release_ticket() is modified to take care of it.

******
A fix and a test case for Bug#46224 "HANDLER statements within a
transaction might lead to deadlocks".

An attempt to mix HANDLER SQL statements, which are transaction-
agnostic, an open multi-statement transaction,
and DDL against the involved tables (in a concurrent connection) 
could lead to a deadlock. The deadlock would occur when
HANDLER OPEN or HANDLER READ would have to wait on a conflicting
metadata lock. If the connection that issued HANDLER statement
also had other metadata locks (say, acquired in scope of a 
transaction), a classical deadlock situation of mutual wait
could occur.

Incompatible change: entering LOCK TABLES mode automatically
closes all open HANDLERs in the current connection.

Incompatible change: previously an attempt to wait on a lock
in a connection that has an open HANDLER statement could wait
indefinitely/deadlock. After this patch, an error ER_LOCK_DEADLOCK
is produced.

The idea of the fix is to merge thd->handler_mdl_context
with the main mdl_context of the connection, used for transactional
locks. This makes deadlock detection possible, since all waits
with locks are "visible" and available to analysis in a single
MDL context of the connection.

Since HANDLER locks and transactional locks have a different life
cycle -- HANDLERs are explicitly open and closed, and so
are HANDLER locks, explicitly acquired and released, whereas
transactional locks "accumulate" till the end of a transaction
and are released only with COMMIT, ROLLBACK and ROLLBACK TO SAVEPOINT,
a concept of "sentinel" was introduced to MDL_context.
All locks, HANDLER and others, reside in the same linked list.
However, a selected element of the list separates locks with
different life cycle. HANDLER locks always reside at the
end of the list, after the sentinel. Transactional locks are
prepended to the beginning of the list, before the sentinel.
Thus, ROLLBACK, COMMIT or ROLLBACK TO SAVEPOINT, only
release those locks that reside before the sentinel. HANDLER locks
must be released explicitly as part of HANDLER CLOSE statement,
or an implicit close. 
The same approach with sentinel
is also employed for LOCK TABLES locks. Since HANDLER and LOCK TABLES
statement has never worked together, the implementation is
made simple and only maintains one sentinel, which is used either
for HANDLER locks, or for LOCK TABLES locks.
2009-12-22 19:09:15 +03:00
Marc Alff
0531f85e16 Merge cleanup 2009-12-11 12:45:44 -07:00
Marc Alff
eadf9532fd Merge cleanup 2009-12-11 12:45:44 -07:00
Jon Olav Hauglid
fb6b5ee462 Backport of revno: 2617.68.37
Bug #46654 False deadlock on concurrent DML/DDL with partitions, 
           inconsistent behavior

The problem was that if one connection is running a multi-statement 
transaction which involves a single partitioned table, and another 
connection attempts to alter the table, the first connection gets 
ER_LOCK_DEADLOCK and cannot proceed anymore, even when the ALTER TABLE 
statement in another connection has timed out or failed.

The reason for this was that the prepare phase for ALTER TABLE for 
partitioned tables removed all instances of the table from the table 
definition cache before it started waiting on the lock. The transaction 
running in the first connection would notice this and report ER_LOCK_DEADLOCK. 

This patch changes the prep_alter_part_table() ALTER TABLE code so that 
tdc_remove_table() is no longer called. Instead, only the TABLE instance
changed by prep_alter_part_table() is marked as needing reopen.

The patch also removes an unnecessary call to tdc_remove_table() from 
mysql_unpack_partition() as the changed TABLE object is destroyed by the 
caller at a later point.

Test case added in partition_sync.test.
2009-12-10 14:26:00 +01:00
Jon Olav Hauglid
2945f773f2 Backport of revno: 2617.68.37
Bug #46654 False deadlock on concurrent DML/DDL with partitions, 
           inconsistent behavior

The problem was that if one connection is running a multi-statement 
transaction which involves a single partitioned table, and another 
connection attempts to alter the table, the first connection gets 
ER_LOCK_DEADLOCK and cannot proceed anymore, even when the ALTER TABLE 
statement in another connection has timed out or failed.

The reason for this was that the prepare phase for ALTER TABLE for 
partitioned tables removed all instances of the table from the table 
definition cache before it started waiting on the lock. The transaction 
running in the first connection would notice this and report ER_LOCK_DEADLOCK. 

This patch changes the prep_alter_part_table() ALTER TABLE code so that 
tdc_remove_table() is no longer called. Instead, only the TABLE instance
changed by prep_alter_part_table() is marked as needing reopen.

The patch also removes an unnecessary call to tdc_remove_table() from 
mysql_unpack_partition() as the changed TABLE object is destroyed by the 
caller at a later point.

Test case added in partition_sync.test.
2009-12-10 14:26:00 +01:00
Konstantin Osipov
f129367288 Merge with next-4284. 2009-12-10 11:41:03 +03:00
Konstantin Osipov
db6864b2a7 Merge with next-4284. 2009-12-10 11:41:03 +03:00
Konstantin Osipov
f26f632b44 Backport of:
------------------------------------------------------------
revno: 2617.68.25
committer: Dmitry Lenev <dlenev@mysql.com>
branch nick: mysql-next-bg-pre2-2
timestamp: Wed 2009-09-16 18:26:50 +0400
message:
  Follow-up for one of pre-requisite patches for fixing bug #30977
  "Concurrent statement using stored function and DROP FUNCTION
  breaks SBR".

  Made enum_mdl_namespace enum part of MDL_key class and removed MDL_
  prefix from the names of enum members. In order to do the latter
  changed name of PROCEDURE symbol to PROCEDURE_SYM (otherwise macro
  which was automatically generated for this symbol conflicted with
  MDL_key::PROCEDURE enum member).
2009-12-10 11:21:38 +03:00
Konstantin Osipov
2e73ea7ea8 Backport of:
------------------------------------------------------------
revno: 2617.68.25
committer: Dmitry Lenev <dlenev@mysql.com>
branch nick: mysql-next-bg-pre2-2
timestamp: Wed 2009-09-16 18:26:50 +0400
message:
  Follow-up for one of pre-requisite patches for fixing bug #30977
  "Concurrent statement using stored function and DROP FUNCTION
  breaks SBR".

  Made enum_mdl_namespace enum part of MDL_key class and removed MDL_
  prefix from the names of enum members. In order to do the latter
  changed name of PROCEDURE symbol to PROCEDURE_SYM (otherwise macro
  which was automatically generated for this symbol conflicted with
  MDL_key::PROCEDURE enum member).
2009-12-10 11:21:38 +03:00
Marc Alff
c082955f06 WL#2360 Performance schema
Part III: mysys instrumentation
2009-12-09 20:19:51 -07:00
Marc Alff
e33a8b2a1a WL#2360 Performance schema
Part III: mysys instrumentation
2009-12-09 20:19:51 -07:00
unknown
832ad46641 Backport of revno: 2617.68.36
---------------------------------------------

This is a patch for bug#47098 assert in MDL_context::destroy on
HANDLER <damaged merge table> OPEN.
      
The assert occurs in MDL_context::destroy when the connection is terminated,
because all mdl_tickets have not been released.
MERGE tables do not support being opened using the HANDLER ... OPEN command,
and trying to do so will result in an error. In the event of an error, all
tables that are opened, should be closed again. The fix for bug#45781 made
sure that this also works for MERGE tables, which causes multiple tables to
be opened.
This fix extends the fix for bug#45781, by ensuring that also all locks are
released, when MERGE tables are involved.

mysql-test/r/merge.result:
  The result of the test.
mysql-test/t/merge.test:
  Added a test based on the bug report, as well as a test of the more general
  scenario.
sql/sql_handler.cc:
  Added code to release all the locks.
2009-12-09 14:41:56 +01:00
lars-erik.bjork@sun.com
1642f67b40 Backport of revno: 2617.68.36
---------------------------------------------

This is a patch for bug#47098 assert in MDL_context::destroy on
HANDLER <damaged merge table> OPEN.
      
The assert occurs in MDL_context::destroy when the connection is terminated,
because all mdl_tickets have not been released.
MERGE tables do not support being opened using the HANDLER ... OPEN command,
and trying to do so will result in an error. In the event of an error, all
tables that are opened, should be closed again. The fix for bug#45781 made
sure that this also works for MERGE tables, which causes multiple tables to
be opened.
This fix extends the fix for bug#45781, by ensuring that also all locks are
released, when MERGE tables are involved.
2009-12-09 14:41:56 +01:00
Konstantin Osipov
351b912e85 Backport of:
----------------------------------------------------------
revno: 2617.69.25
committer: Konstantin Osipov <kostja@sun.com>
branch nick: 5.4-42546
timestamp: Fri 2009-08-14 23:52:00 +0400
message:
  A cleanup in open_tables() and lock_tables():
  change return type of these functions to bool from int,
  to follow convention in the rest of the code.
(Part of WL#4284 review fixes).

sql/mysql_priv.h:
  Change return type of open_talbes() and lock_tables() from
  int to bool.
sql/sql_base.cc:
  Change return type of open_tables() and lock_tables() from int to bool.
sql/sql_handler.cc:
  Use bool now that open_tables() returns bool.
2009-12-09 12:04:55 +03:00
Konstantin Osipov
c95448ba11 Backport of:
----------------------------------------------------------
revno: 2617.69.25
committer: Konstantin Osipov <kostja@sun.com>
branch nick: 5.4-42546
timestamp: Fri 2009-08-14 23:52:00 +0400
message:
  A cleanup in open_tables() and lock_tables():
  change return type of these functions to bool from int,
  to follow convention in the rest of the code.
(Part of WL#4284 review fixes).
2009-12-09 12:04:55 +03:00
Jon Olav Hauglid
546e16ebd8 Backport of revno: 2617.69.40
A pre-requisite patch for Bug#30977 "Concurrent statement using 
stored function and DROP FUNCTION breaks SBR".

This patch changes the MDL API by introducing a namespace for
lock keys: MDL_TABLE for tables and views and MDL_PROCEDURE
for stored procedures and functions. The latter is needed for
the fix for Bug#30977.
2009-12-09 09:51:20 +01:00
Jon Olav Hauglid
4592dd2d81 Backport of revno: 2617.69.40
A pre-requisite patch for Bug#30977 "Concurrent statement using 
stored function and DROP FUNCTION breaks SBR".

This patch changes the MDL API by introducing a namespace for
lock keys: MDL_TABLE for tables and views and MDL_PROCEDURE
for stored procedures and functions. The latter is needed for
the fix for Bug#30977.
2009-12-09 09:51:20 +01:00
unknown
08e4635fba merge 5.1-> 5.2 2009-12-08 23:47:54 +02:00
Jon Olav Hauglid
19ff2445b1 Backport of revno: 2617.68.9
Bug #43272 HANDLER SQL command does not work under LOCK TABLES

HANDLER commands are now explicitly disallowed in LOCK TABLES mode.

Before, HANDLER OPEN gave the misleading error message: "Table x was 
not locked with LOCK TABLES". This patch changes HANDLER OPEN/READ/CLOSE 
to give ER_LOCK_OR_ACTIVE_TRANSACTION "Can't execute the given command 
because you have active locked tables or an active transaction" in
LOCK TABLES mode.

Test case added to lock.test.
2009-12-08 15:56:06 +01:00
Jon Olav Hauglid
9e1cb3fe1b Backport of revno: 2617.68.9
Bug #43272 HANDLER SQL command does not work under LOCK TABLES

HANDLER commands are now explicitly disallowed in LOCK TABLES mode.

Before, HANDLER OPEN gave the misleading error message: "Table x was 
not locked with LOCK TABLES". This patch changes HANDLER OPEN/READ/CLOSE 
to give ER_LOCK_OR_ACTIVE_TRANSACTION "Can't execute the given command 
because you have active locked tables or an active transaction" in
LOCK TABLES mode.

Test case added to lock.test.
2009-12-08 15:56:06 +01:00
Konstantin Osipov
ce5c87a3d3 Backport of:
----------------------------------------------------------
revno: 2617.69.20
committer: Konstantin Osipov <kostja@sun.com>
branch nick: 5.4-4284-1-assert
timestamp: Thu 2009-08-13 18:29:55 +0400
message:
  WL#4284 "Transactional DDL locking"
  A review fix.
  Since WL#4284 implementation separated MDL_request and MDL_ticket,
  MDL_request becamse a utility object necessary only to get a ticket.
  Store it by-value in TABLE_LIST with the intent to merge
  MDL_request::key with table_list->table_name and table_list->db
  in future.
  Change the MDL subsystem to not require MDL_requests to
  stay around till close_thread_tables().
  Remove the list of requests from the MDL context.
  Requests for shared metadata locks acquired in open_tables()
  are only used as a list in recover_from_failed_open_table_attempt(),
  which calls mdl_context.wait_for_locks() for this list.
  To keep such list for recover_from_failed_open_table_attempt(),
  introduce a context class (Open_table_context), that collects
  all requests.
  A lot of minor cleanups and simplications that became possible
  with this change.


sql/event_db_repository.cc:
  Remove alloc_mdl_requests(). Now MDL_request instance is a member
  of TABLE_LIST, and init_one_table() initializes it.
sql/ha_ndbcluster_binlog.cc:
  Remove now unnecessary declaration and initialization
  of binlog_mdl_request.
sql/lock.cc:
  No need to allocate MDL requests in lock_table_names() now.
sql/log.cc:
  Use init_one_table() method, remove alloc_mdl_requests(),
  which is now unnecessary.
sql/log_event.cc:
  No need to allocate mdl_request separately now.
  Use init_one_table() method.
sql/log_event_old.cc:
  Update to the new signature of close_tables_for_reopen().
sql/mdl.cc:
  Update try_acquire_exclusive_lock() to be more easy to use.
  Function lock_table_name_if_not_cached() has been removed.
  Make acquire_shared_lock() signature consistent with
  try_acquire_exclusive_lock() signature.
  Remove methods that are no longer used.
  Update comments.
sql/mdl.h:
  Implement an assignment operator that doesn't
  copy MDL_key (MDL_key::operator= is private and
  should remain private).
  This is a hack to work-around assignment of TABLE_LIST
  by value in several places. Such assignments violate
  encapsulation, since only perform a shallow copy.
  In most cases these assignments are a hack on their own.
sql/mysql_priv.h:
  Update signatures of close_thread_tables() and close_tables_for_reopen().
sql/sp.cc:
  Allocate TABLE_LIST in thd->mem_root.
  Use init_one_table().
sql/sp_head.cc:
  Use init_one_table().
  Remove thd->locked_tables_root, it's no longer needed.
sql/sql_acl.cc:
  Use init_mdl_requests() and init_one_table().
sql/sql_base.cc:
  Update to new signatures of try_acquire_shared_lock() and
  try_acquire_exclusive_lock().
  Remove lock_table_name_if_not_cached().
  Fix a bug in open_ltable() that would not return ER_LOCK_DEADLOCK
  in case of a failed lock_tables() and a multi-statement
  transaction.
  Fix a bug in open_and_lock_tables_derived() that would
  not return ER_LOCK_DEADLOCK in case of a multi-statement
  transaction and a failure of lock_tables().
  Move assignment of enum_open_table_action to a method of Open_table_context, a new class that maintains information
  for backoff actions.
  Minor rearrangements of the code.
  Remove alloc_mdl_requests() in functions that work with system
  tables: instead the patch ensures that callers always initialize
  TABLE_LIST argument.
sql/sql_class.cc:
  THD::locked_tables_root is no more.
sql/sql_class.h:
  THD::locked_tables_root is no more.
  Add a declaration for Open_table_context class.
sql/sql_delete.cc:
  Update to use the simplified MDL API.
sql/sql_handler.cc:
  TABLE_LIST::mdl_request is stored by-value now.
  Ensure that mdl_request.ticket is NULL for every request
  that is passed into MDL, to satisfy MDL asserts.
  @ sql/sql_help.cc
  Function open_system_tables_for_read() no longer initializes
  mdl_requests.
  Move TABLE_LIST::mdl_request initialization closer to
  TABLE_LIST initialization.
sql/sql_help.cc:
  Function open_system_tables_for_read() no longer initializes
  mdl_requests.
  Move TABLE_LIST::mdl_request initialization closer to
  TABLE_LIST initialization.
sql/sql_insert.cc:
  Remove assignment by-value of TABLE_LIST in
  TABLEOP_HOOKS. We can't carry over a granted
  MDL ticket from one table list to another.
sql/sql_parse.cc:
  Change alloc_mdl_requests() -> init_mdl_requests().
  @todo We can remove init_mdl_requests() altogether
  in some places: all places that call add_table_to_list()
  already have mdl requests initialized.
sql/sql_plugin.cc:
  Use init_one_table().
  THD::locked_tables_root is no more.
sql/sql_servers.cc:
  Use init_one_table().
sql/sql_show.cc:
  Update acquire_high_priority_shared_lock() to use
  TABLE_LIST::mdl_request rather than allocate an own.
  Fix get_trigger_table_impl() to use init_one_table(),
  check for out of memory, follow the coding style.
sql/sql_table.cc:
  Update to work with TABLE_LIST::mdl_request by-value.
  Remove lock_table_name_if_not_cached().
  The code that used to delegate to it is quite simple and
  concise without it now.
sql/sql_udf.cc:
  Use init_one_table().
sql/sql_update.cc:
  Update to use the new signature of close_tables_for_reopen().
sql/table.cc:
  Move re-setting of mdl_requests for prepared statements
  and stored procedures from close_thread_tables() to
  reinit_stmt_before_use().
  Change alloc_mdl_requests() to init_mdl_requests().
  init_mdl_requests() is a hack that can't be deleted
  until we don't have a list-aware TABLE_LIST constructor.
  Hopefully its use will be minimal
sql/table.h:
  Change alloc_mdl_requests() to init_mdl_requests()
  TABLE_LIST::mdl_request is stored by value.
sql/tztime.cc:
  We no longer initialize mdl requests in open_system_tables_for*()
  functions. Move this initialization closer to initialization
  of the rest of TABLE_LIST members.
storage/myisammrg/ha_myisammrg.cc:
  Simplify mdl_request initialization.
2009-12-08 12:57:07 +03:00
Konstantin Osipov
a66a2608ae Backport of:
----------------------------------------------------------
revno: 2617.69.20
committer: Konstantin Osipov <kostja@sun.com>
branch nick: 5.4-4284-1-assert
timestamp: Thu 2009-08-13 18:29:55 +0400
message:
  WL#4284 "Transactional DDL locking"
  A review fix.
  Since WL#4284 implementation separated MDL_request and MDL_ticket,
  MDL_request becamse a utility object necessary only to get a ticket.
  Store it by-value in TABLE_LIST with the intent to merge
  MDL_request::key with table_list->table_name and table_list->db
  in future.
  Change the MDL subsystem to not require MDL_requests to
  stay around till close_thread_tables().
  Remove the list of requests from the MDL context.
  Requests for shared metadata locks acquired in open_tables()
  are only used as a list in recover_from_failed_open_table_attempt(),
  which calls mdl_context.wait_for_locks() for this list.
  To keep such list for recover_from_failed_open_table_attempt(),
  introduce a context class (Open_table_context), that collects
  all requests.
  A lot of minor cleanups and simplications that became possible
  with this change.
2009-12-08 12:57:07 +03:00
Konstantin Osipov
a9013f8fba Backport of:
----------------------------------------------------------
revno: 2617.23.20
committer: Konstantin Osipov <kostja@sun.com>
branch nick: mysql-6.0-runtime
timestamp: Wed 2009-03-04 16:31:31 +0300
message:
  WL#4284 "Transactional DDL locking"
  Review comments: "Objectify" the MDL API.
  MDL_request and MDL_context still need manual construction and
  destruction, since they are used in environment that is averse
  to constructors/destructors.


sql/mdl.cc:
  Improve comments.
  Add asserts to backup()/restore_from_backup()/merge() methods.
  Fix an order bug in the error path of mdl_acquire_exclusive_locks():
  we used to first free a ticket object, and only then exclude
  it from the list of tickets.
2009-12-04 02:52:05 +03:00
Konstantin Osipov
a3a23ec4d3 Backport of:
----------------------------------------------------------
revno: 2617.23.20
committer: Konstantin Osipov <kostja@sun.com>
branch nick: mysql-6.0-runtime
timestamp: Wed 2009-03-04 16:31:31 +0300
message:
  WL#4284 "Transactional DDL locking"
  Review comments: "Objectify" the MDL API.
  MDL_request and MDL_context still need manual construction and
  destruction, since they are used in environment that is averse
  to constructors/destructors.
2009-12-04 02:52:05 +03:00
Konstantin Osipov
f477e66ec5 Backport of:
------------------------------------------------------------
revno: 2617.23.18
committer: Davi Arnaut <Davi.Arnaut@Sun.COM>
branch nick: 4284-6.0
timestamp: Mon 2009-03-02 18:18:26 -0300
message:
Bug#989: If DROP TABLE while there's an active transaction, wrong binlog order
WL#4284: Transactional DDL locking

This is a prerequisite patch:

These changes are intended to split lock requests from granted
locks and to allow the memory and lifetime of granted locks to
be managed within the MDL subsystem. Furthermore, tickets can
now be shared and therefore are used to satisfy multiple lock
requests, but only shared locks can be recursive.

The problem is that the MDL subsystem morphs lock requests into
granted locks locks but does not manage the memory and lifetime
of lock requests, and hence, does not manage the memory of
granted locks either. This can be problematic because it puts the
burden of tracking references on the users of the subsystem and
it can't be easily done in transactional contexts where the locks
have to be kept around for the duration of a transaction.

Another issue is that recursive locks (when the context trying to
acquire a lock already holds a lock on the same object) requires
that each time the lock is granted, a unique lock request/granted
lock structure structure must be kept around until the lock is
released. This can lead to memory leaks in transactional contexts
as locks taken during the transaction should only be released at
the end of the transaction. This also leads to unnecessary wake
ups (broadcasts) in the MDL subsystem if the context still holds
a equivalent of the lock being released.

These issues are exacerbated due to the fact that WL#4284 low-level
design says that the implementation should "2) Store metadata locks
in transaction memory root, rather than statement memory root" but
this is not possible because a memory root, as implemented in mysys,
requires all objects allocated from it to be freed all at once.

This patch combines review input and significant code contributions
from Konstantin Osipov (kostja) and Dmitri Lenev (dlenev).


mysql-test/r/mdl_sync.result:
  Add test case result.
mysql-test/t/mdl_sync.test:
  Add test case for shared lock upgrade case.
sql/event_db_repository.cc:
  Rename mdl_alloc_lock to mdl_request_alloc.
sql/ha_ndbcluster_binlog.cc:
  Use new function names to initialize MDL lock requests.
sql/lock.cc:
  Rename MDL functions.
sql/log_event.cc:
  The MDL request now holds the table and database name data (MDL_KEY).
sql/mdl.cc:
  Move the MDL key to the MDL_LOCK structure in order to make the
  object suitable for allocation from a fixed-size allocator. This
  allows the simplification of the lists in the MDL_LOCK object,
  which now are just two, one for granted tickets and other for
  waiting (upgraders) tickets.
  
  Recursive requests for a shared lock on the same object can now
  be granted using the same lock ticket. This schema is only used
  for shared locks because that the only case that matters. This
  is used to avoid waste of resources in case a context (connection)
  already holds a shared lock on a object.
sql/mdl.h:
  Introduce a metadata lock object key which is used  to uniquely
  identify lock objects.
  
  Separate the structure used to represent pending lock requests
  from the structure used to represent granted metadata locks.
  
  Rename functions used to manipulate locks requests in order to
  have a more consistent function naming schema.
sql/sp_head.cc:
  Rename mdl_alloc_lock to mdl_request_alloc.
sql/sql_acl.cc:
  Rename alloc_mdl_locks to alloc_mdl_requests.
sql/sql_base.cc:
  Various changes to accommodate that lock requests are separated
  from lock tickets (granted locks).
sql/sql_class.h:
  Last acquired lock before the savepoint was set.
sql/sql_delete.cc:
  Various changes to accommodate that lock requests are separated
  from lock tickets (granted locks).
sql/sql_handler.cc:
  Various changes to accommodate that lock requests are separated
  from lock tickets (granted locks).
sql/sql_insert.cc:
  Rename alloc_mdl_locks to alloc_mdl_requests.
sql/sql_parse.cc:
  Rename alloc_mdl_locks to alloc_mdl_requests.
sql/sql_plist.h:
  Typedef for iterator type.
sql/sql_plugin.cc:
  Rename alloc_mdl_locks to alloc_mdl_requests.
sql/sql_servers.cc:
  Rename alloc_mdl_locks to alloc_mdl_requests.
sql/sql_show.cc:
  Various changes to accommodate that lock requests are separated
  from lock tickets (granted locks).
sql/sql_table.cc:
  Various changes to accommodate that lock requests are separated
  from lock tickets (granted locks).
sql/sql_trigger.cc:
  Save reference to the lock ticket so it can be downgraded later.
sql/sql_udf.cc:
  Rename alloc_mdl_locks to alloc_mdl_requests.
sql/table.cc:
  Rename mdl_alloc_lock to mdl_request_alloc.
sql/table.h:
  Separate MDL lock requests from lock tickets (granted locks).
storage/myisammrg/ha_myisammrg.cc:
  Rename alloc_mdl_locks to alloc_mdl_requests.
2009-12-04 02:29:40 +03:00
Konstantin Osipov
911c673edf Backport of:
------------------------------------------------------------
revno: 2617.23.18
committer: Davi Arnaut <Davi.Arnaut@Sun.COM>
branch nick: 4284-6.0
timestamp: Mon 2009-03-02 18:18:26 -0300
message:
Bug#989: If DROP TABLE while there's an active transaction, wrong binlog order
WL#4284: Transactional DDL locking

This is a prerequisite patch:

These changes are intended to split lock requests from granted
locks and to allow the memory and lifetime of granted locks to
be managed within the MDL subsystem. Furthermore, tickets can
now be shared and therefore are used to satisfy multiple lock
requests, but only shared locks can be recursive.

The problem is that the MDL subsystem morphs lock requests into
granted locks locks but does not manage the memory and lifetime
of lock requests, and hence, does not manage the memory of
granted locks either. This can be problematic because it puts the
burden of tracking references on the users of the subsystem and
it can't be easily done in transactional contexts where the locks
have to be kept around for the duration of a transaction.

Another issue is that recursive locks (when the context trying to
acquire a lock already holds a lock on the same object) requires
that each time the lock is granted, a unique lock request/granted
lock structure structure must be kept around until the lock is
released. This can lead to memory leaks in transactional contexts
as locks taken during the transaction should only be released at
the end of the transaction. This also leads to unnecessary wake
ups (broadcasts) in the MDL subsystem if the context still holds
a equivalent of the lock being released.

These issues are exacerbated due to the fact that WL#4284 low-level
design says that the implementation should "2) Store metadata locks
in transaction memory root, rather than statement memory root" but
this is not possible because a memory root, as implemented in mysys,
requires all objects allocated from it to be freed all at once.

This patch combines review input and significant code contributions
from Konstantin Osipov (kostja) and Dmitri Lenev (dlenev).
2009-12-04 02:29:40 +03:00
Konstantin Osipov
124cda8a0a Backport of:
------------------------------------------------------------
revno: 2630.4.33
committer: Dmitry Lenev <dlenev@mysql.com>
branch nick: mysql-6.0-3726-w2
timestamp: Fri 2008-06-20 17:11:20 +0400
message:
  WL#3726 "DDL locking for all metadata objects".

  After-review fixes in progress.

  Minimized dependency of mdl.cc on other modules (particularly
  made it independant of mysql_priv.h) in order to be able
  write unit tests for metadata locking subsystem.


sql/ha_ndbcluster_binlog.cc:
  Use newly introduced MAX_MDLKEY_LENGTH constant for allocating
  buffer for object key for metadata locking subsystem.
sql/log_event.cc:
  Use newly introduced MAX_MDLKEY_LENGTH constant for allocating
  buffer for object key for metadata locking subsystem.
sql/mdl.cc:
  Removed dependency on THD class (and thus on mysql_priv.h)
  by using direct access to members of st_my_thread_var instead
  of accessing THD::killed/enter_cond()/exit_cond().
sql/mdl.h:
  Added MAX_MDLKEY_LENGTH constant to be used for allocating
  buffers for key for metadata locking subsystem.
  Added declarations of server kernel functions used by metadata
  locking subsystem to mdl.h in order to decrease dependency of
  mdl.cc on other files.
sql/mysql_priv.h:
  Moved declaration of notify_thread_having_shared_lock() to the
  mdl.h (also renamed it to make clear in metadata locking code
  that it is a callback to SQL-layer).
sql/sql_base.cc:
  Renamed notify_thread_having_shared_lock() to make it clear
  in metadata locking subsystem code that it is a callback
  to SQL layer.
sql/sql_handler.cc:
  Use newly introduced MAX_MDLKEY_LENGTH constant for allocating
  buffer for object key for metadata locking subsystem.
sql/sql_show.cc:
  Use newly introduced MAX_MDLKEY_LENGTH constant for allocating
  buffer for object key for metadata locking subsystem.
2009-12-02 19:31:57 +03:00
Konstantin Osipov
edddfa0ef4 Backport of:
------------------------------------------------------------
revno: 2630.4.33
committer: Dmitry Lenev <dlenev@mysql.com>
branch nick: mysql-6.0-3726-w2
timestamp: Fri 2008-06-20 17:11:20 +0400
message:
  WL#3726 "DDL locking for all metadata objects".

  After-review fixes in progress.

  Minimized dependency of mdl.cc on other modules (particularly
  made it independant of mysql_priv.h) in order to be able
  write unit tests for metadata locking subsystem.
2009-12-02 19:31:57 +03:00
Konstantin Osipov
e3b3907c4f Backport of:
------------------------------------------------------------
revno: 2630.4.32
committer: Dmitry Lenev <dlenev@mysql.com>
branch nick: mysql-6.0-3726-w2
timestamp: Thu 2008-06-19 16:39:58 +0400
message:
  WL#3726 "DDL locking for all metadata objects".

  After-review fixes in progress.

  Ensure that metadata locking subsystem properly handles
  out-of-memory conditions. Clarified MDL interface by
  separating release of locks and removal of lock requests
  from the context.

sql/lock.cc:
  mdl_release_lock(), mdl_acquire_exclusive_locks() and 
  mdl_try_acquire_exclusive_lock() are no longer responsible
  for removal of metadata lock requests from the context.
  One should explicitly call mdl_remove_all_locks() and
  mdl_remove_lock() to do this.
sql/mdl.cc:
  Ensured that metadata locking subsystem properly handles
  out-of-memory conditions.
  Introduced new MDL_INITIALIZED state for metadata lock
  request which is used in all cases when lock is not acquired 
  and we have not associated request with object respesenting 
  lock.
  
  MDL_PENDING is now only used for requests for exclusive locks
  which are added to the MDL_LOCK::waiting_exclusive queue.
  mdl_release_lock(), mdl_acquire_exclusive_locks() and 
  mdl_try_acquire_exclusive_lock() are no longer responsible
  for removal of metadata lock requests from the context.
  One should explicitly call mdl_remove_all_locks() and
  newly introduced mdl_remove_lock() to do this.
  Also renamed mdl_release_all_locks_for_name() to 
  emphasize that it also actually removes lock requests
  from the context.
  
  Finally mdl_try_acquire_exclusive_lock() is now returs
  information about encountered lock conflict in separate
  out parameter since its return value is used for distinguishing
  between error (e.g. due to OOM) and success.
sql/mdl.h:
  Introduced new MDL_INITIALIZED state for metadata lock
  request which is used in all cases when lock is not acquired 
  and we have not associated request with object respesenting 
  lock.
  
  MDL_PENDING is now only used for requests for exclusive locks
  which are added to the MDL_LOCK::waiting_exclusive queue.
  mdl_release_lock(), mdl_acquire_exclusive_locks() and 
  mdl_try_acquire_exclusive_lock() are no longer responsible
  for removal of metadata lock requests from the context.
  One should explicitly call mdl_remove_all_locks() and
  newly introduced mdl_remove_lock() to do this.
  Also renamed mdl_release_all_locks_for_name() to 
  emphasize that it also actually removes lock requests
  from the context.
  
  Finally mdl_try_acquire_exclusive_lock() is now returs
  information about encountered lock conflict in separate
  out parameter since its return value is used for distinguishing
  between error (e.g. due to OOM) and success.
sql/sql_base.cc:
  mdl_release_lock(), mdl_acquire_exclusive_locks() and mdl_try_acquire_exclusive_lock() are no longer responsible
  for removal of metadata lock requests from the context.
  One should explicitly call mdl_remove_all_locks() and
  mdl_remove_lock() to do this.
  Also adjusted open_table() to ensure that it 
  releases/removes metadata locks in case of error 
  after adding/acquiring them (unless keeping these
  lock requests is required for recovering action).
sql/sql_delete.cc:
  mdl_release_lock(), mdl_acquire_exclusive_locks() and mdl_try_acquire_exclusive_lock() are no longer responsible
  for removal of metadata lock requests from the context.
  One should explicitly call mdl_remove_all_locks() and
  mdl_remove_lock() to do this.
sql/sql_handler.cc:
  mdl_release_lock(), mdl_acquire_exclusive_locks() and mdl_try_acquire_exclusive_lock() are no longer responsible
  for removal of metadata lock requests from the context.
  One should explicitly call mdl_remove_all_locks() and
  mdl_remove_lock() to do this.
sql/sql_show.cc:
  mdl_release_lock(), mdl_acquire_exclusive_locks() and mdl_try_acquire_exclusive_lock() are no longer responsible
  for removal of metadata lock requests from the context.
  One should explicitly call mdl_remove_all_locks() and
  mdl_remove_lock() to do this.
sql/sql_table.cc:
  Renamed mdl_release_all_locks_for_name() to emphasize
  that it also actually removes lock requests from the context.
  mdl_release_lock(), mdl_acquire_exclusive_locks() and mdl_try_acquire_exclusive_lock() are no longer responsible
  for removal of metadata lock requests from the context.
  One should explicitly call mdl_remove_all_locks() and
  mdl_remove_lock() to do this.
  Finally mdl_try_acquire_exclusive_lock() is now returs
  information about encountered lock conflict in separate
  out parameter since its return value is used for distinguishing
  between error (e.g. due to OOM) and success.
2009-12-02 19:15:40 +03:00
Konstantin Osipov
0a49fd92d9 Backport of:
------------------------------------------------------------
revno: 2630.4.32
committer: Dmitry Lenev <dlenev@mysql.com>
branch nick: mysql-6.0-3726-w2
timestamp: Thu 2008-06-19 16:39:58 +0400
message:
  WL#3726 "DDL locking for all metadata objects".

  After-review fixes in progress.

  Ensure that metadata locking subsystem properly handles
  out-of-memory conditions. Clarified MDL interface by
  separating release of locks and removal of lock requests
  from the context.
2009-12-02 19:15:40 +03:00
Konstantin Osipov
1480dafe2f Backport of:
------------------------------------------------------------
revno: 2630.8.3
committer: Dmitry Lenev <dlenev@mysql.com>
branch nick: mysql-6.0-3726-w4
timestamp: Thu 2008-06-05 10:48:36 +0400
message:
  WL#3726 "DDL locking for all metadata objects".

  After-review fixes in progress.

  Adjust some comments that were using old terminology
  (name locks instead of exclusive metadata locks), brought
  some of them up-to-date with current situation in code.


sql/sql_base.cc:
  Adjusted comments to use proper terminology.
sql/sql_delete.cc:
  Adjusted comments to use proper terminology.
sql/sql_handler.cc:
  Adjusted comments to use proper terminology.
sql/sql_partition.cc:
  Adjusted comments to use proper terminology also fixed
  one comment to correspond to what really happens in code.
sql/sql_show.cc:
  Adjusted comments to use proper terminology.
sql/sql_table.cc:
  Adjusted comments to use proper terminology, brought
   one of them up-to-date with current situation.
sql/sql_trigger.cc:
  Adjusted comments to use proper terminology.
sql/table.h:
  Removed two unused members of TABLE_SHARE struct.
2009-12-01 16:51:50 +03:00
Konstantin Osipov
386b95dfef Backport of:
------------------------------------------------------------
revno: 2630.8.3
committer: Dmitry Lenev <dlenev@mysql.com>
branch nick: mysql-6.0-3726-w4
timestamp: Thu 2008-06-05 10:48:36 +0400
message:
  WL#3726 "DDL locking for all metadata objects".

  After-review fixes in progress.

  Adjust some comments that were using old terminology
  (name locks instead of exclusive metadata locks), brought
  some of them up-to-date with current situation in code.
2009-12-01 16:51:50 +03:00
Konstantin Osipov
e23046d1bc Backport of:
------------------------------------------------------------
revno: 2630.4.17
committer: Dmitry Lenev <dlenev@mysql.com>
branch nick: mysql-6.0-3726-w2
timestamp: Thu 2008-05-29 16:52:56 +0400
message:
  WL#3726 "DDL locking for all metadata objects".

  After review fixes in progress.

  "The great correction of names".

  Renamed MDL_LOCK and MDL_LOCK_DATA classes to make usage of
  these names in metadata locking subsystem consistent with
  other parts of server (i.e. thr_lock.cc). Now we MDL_LOCK_DATA
  corresponds to request for a lock and MDL_LOCK to the lock
  itself. Adjusted code in MDL subsystem and other places
  using these classes accordingly.
  Did similar thing for GLOBAL_MDL_LOCK_DATA class and also
  changed name of its members to correspond to names of
  MDL_LOCK_DATA members.
  Finally got rid of usage of one letter variables in MDL
  code since it makes code harder to search in (according
  to reviewer).
2009-12-01 01:33:22 +03:00
Konstantin Osipov
a9dbad1afd Backport of:
------------------------------------------------------------
revno: 2630.4.17
committer: Dmitry Lenev <dlenev@mysql.com>
branch nick: mysql-6.0-3726-w2
timestamp: Thu 2008-05-29 16:52:56 +0400
message:
  WL#3726 "DDL locking for all metadata objects".

  After review fixes in progress.

  "The great correction of names".

  Renamed MDL_LOCK and MDL_LOCK_DATA classes to make usage of
  these names in metadata locking subsystem consistent with
  other parts of server (i.e. thr_lock.cc). Now we MDL_LOCK_DATA
  corresponds to request for a lock and MDL_LOCK to the lock
  itself. Adjusted code in MDL subsystem and other places
  using these classes accordingly.
  Did similar thing for GLOBAL_MDL_LOCK_DATA class and also
  changed name of its members to correspond to names of
  MDL_LOCK_DATA members.
  Finally got rid of usage of one letter variables in MDL
  code since it makes code harder to search in (according
  to reviewer).
2009-12-01 01:33:22 +03:00
Konstantin Osipov
cf45b61a6a Backport of:
------------------------------------------------------------
revno: 2630.4.16
committer: Dmitry Lenev <dlenev@mysql.com>
branch nick: mysql-6.0-3726-w
timestamp: Thu 2008-05-29 09:45:02 +0400
message:
  WL#3726 "DDL locking for all metadata objects".

  After review changes in progress.

  Tweaked some comments and did some renames to
  avoid ambiguites.


sql/mysql_priv.h:
  Removed name_lock_locked_table() function.
sql/sql_base.cc:
  Got rid of name_lock_locked_table() function after replacing
  the only call to it with its body.
  Simplified open_table() code by making "action" argument
  mandatory (i.e. one now should always pass non-0 pointer
  in this argument).
  Renamed TABLE_LIST::open_table_type to open_type to
  avoid confusing it with type of table.
  Adjusted comments according to review.
sql/sql_handler.cc:
  Added comment clarifying in which cases we can have TABLE::mdl_lock
  set to 0.
sql/sql_insert.cc:
  Now the 4th argument of open_table() is mandatory (it makes
  no sense to complicate open_table() code when we can simply
  pass dummy variable).
sql/sql_parse.cc:
  Renamed TABLE_LIST::open_table_type to open_type to
  avoid confusing it with type of table.
sql/sql_prepare.cc:
  Renamed TABLE_LIST::open_table_type to open_type to
  avoid confusing it with type of table.
sql/sql_table.cc:
  Now the 4th argument of open_table() is mandatory (it makes
  no sense to complicate open_table() code when we can simply
  pass dummy variable).
sql/sql_trigger.cc:
  Replaced the only call to name_lock_locked_table() function
  with its body.
sql/sql_view.cc:
  Renamed TABLE_LIST::open_table_type to open_type to
  avoid confusing it with type of table.
sql/table.h:
  Renamed TABLE_LIST::open_table_type to open_type (to
  avoid confusing it with type of table) and improved
  comments describing this member.
2009-12-01 01:13:06 +03:00
Konstantin Osipov
f56cc2a335 Backport of:
------------------------------------------------------------
revno: 2630.4.16
committer: Dmitry Lenev <dlenev@mysql.com>
branch nick: mysql-6.0-3726-w
timestamp: Thu 2008-05-29 09:45:02 +0400
message:
  WL#3726 "DDL locking for all metadata objects".

  After review changes in progress.

  Tweaked some comments and did some renames to
  avoid ambiguites.
2009-12-01 01:13:06 +03:00
Konstantin Osipov
0dcead9f61 Backport of:
------------------------------------------------------------
revno: 2630.4.14
committer: Dmitry Lenev <dlenev@mysql.com>
branch nick: mysql-6.0-3726-w
timestamp: Wed 2008-05-28 12:16:03 +0400
message:
  WL#3726 "DDL locking for all metadata objects".

  After review fixes in progress. Removed unused code and
  adjusted names of functions/methods to better reflect
  their current function.


sql/mysql_priv.h:
  Changed names of close_data_files_and_morph_locks() and
  close_handle_and_leave_table_as_lock() to better reflect
  their current function (locking is now responsibility
  of metadata locking subsystem).
sql/sql_base.cc:
  Changed names of close_data_files_and_morph_locks() and
  close_handle_and_leave_table_as_lock() to better reflect
  their current function (locking is now responsibility
  of metadata locking subsystem). Also adjusted comments
  describing these functions.
  Got rid of TABLE::open_placeholder since it is no longer
  used (its value is never read anywhere).
  TABLE::needs_reopen_or_name_lock() was renamed to needs_reopen()
  since we no longer use name-locks
sql/sql_handler.cc:
  TABLE::needs_reopen_or_name_lock() was renamed to needs_reopen()
  since we no longer use name-locks.
sql/sql_insert.cc:
  TABLE::needs_reopen_or_name_lock() was renamed to needs_reopen()
  since we no longer use name-locks
sql/sql_partition.cc:
  Changed name of close_data_files_and_morph_locks() to
  better reflect its current function (locking is now
  responsibility of metadata locking subsystem).
sql/sql_table.cc:
  Changed names of close_data_files_and_morph_locks() and
  close_handle_and_leave_table_as_lock() to better reflect
  their current function (locking is now responsibility
  of metadata locking subsystem).
  Got rid of TABLE::open_placeholder since it is no longer
  used.
sql/sql_trigger.cc:
  Changed name of close_data_files_and_morph_locks() to
  better reflect its current function (locking is now
  responsibility of metadata locking subsystem).
sql/table.h:
  Got rid of TABLE::open_placeholder which is no longer used
  altough its value was set in several places no code reads it).
  Removed unused TABLE::is_name_opened() method.
  Finally TABLE::needs_reopen_or_name_lock() was renamed to
  needs_reopen() since we no longer use name-locks.
2009-12-01 01:01:27 +03:00
Konstantin Osipov
3d19fdad34 Backport of:
------------------------------------------------------------
revno: 2630.4.14
committer: Dmitry Lenev <dlenev@mysql.com>
branch nick: mysql-6.0-3726-w
timestamp: Wed 2008-05-28 12:16:03 +0400
message:
  WL#3726 "DDL locking for all metadata objects".

  After review fixes in progress. Removed unused code and
  adjusted names of functions/methods to better reflect
  their current function.
2009-12-01 01:01:27 +03:00
Konstantin Osipov
aeebede195 Backport of:
------------------------------------------------------------
revno: 2630.4.11
committer: Dmitry Lenev <dlenev@mysql.com>
branch nick: mysql-6.0-3726-w
timestamp: Tue 2008-05-27 21:31:53 +0400
message:
  WL#3726 "DDL locking for all metadata objects".

  After review fixes in progress.

  Changed mysql_lock_tables() to be no longer responsible for
  reopening table if waiting for the lock on it was aborted.
  This allows to get rid of several annoying functions.


sql/ha_ndbcluster_binlog.cc:
  lock_tables() now also accepts set of options to be passed to
  mysql_lock_tables().
sql/lock.cc:
  Changed mysql_lock_tables() always requests caller to reopen
  table instead doing this on its own when waiting for lock was
  aborted. This allows us to get rid of several functions which
  were used in rare cases and significantly complicated our life.
sql/log_event_old.cc:
  lock_tables() now also accepts set of options to be passed
  to mysql_lock_tables().
sql/mysql_priv.h:
  Now mysql_lock_tables() always requests caller to reopen
  table instead doing this on its own when waiting for lock was
  aborted. So we no longer need wait_for_tables() and
  table_is_used() functions and MYSQL_LOCK_NOTIFY_IF_NEED_REOPEN
  flag.
  open_and_lock_table_derived() and lock_tables() now accept
  options to be passed to open_tables() and mysql_lock_tables()
  calls.
sql/sql_base.cc:
  Since now mysql_lock_tables() always requests caller to
  reopen table instead doing this on its own when waiting for
  lock was aborted we no longer need wait_for_tables(),
  table_is_used() and close_old_data_files() functions.
  open_and_lock_table_derived() and lock_tables() now accept
  options to be passed to open_tables() and mysql_lock_tables()
  calls. This was needed in order to get rid of redundant code
  in open_system_tables_for_read() function.
sql/sql_handler.cc:
  mysql_lock_tables() is now always requests reopen if waiting
  for lock is aborted. MYSQL_LOCK_NOTIFY_IF_NEED_REOPEN flag
  was removed.
sql/sql_insert.cc:
  handle_delayed_insert():
  Since mysql_lock_tables() is no longer responsible for
  reopening tables when waiting for lock was aborted we have
  to handle such situation outside of this function. To simplify
  this extracted code opening table for delayed insert thread to
  separate method of Delayed_insert class.
sql/sql_update.cc:
  lock_tables() now also accepts set of options to be passed
  to mysql_lock_tables().
2009-11-30 22:03:37 +03:00
Konstantin Osipov
3226c107fb Backport of:
------------------------------------------------------------
revno: 2630.4.11
committer: Dmitry Lenev <dlenev@mysql.com>
branch nick: mysql-6.0-3726-w
timestamp: Tue 2008-05-27 21:31:53 +0400
message:
  WL#3726 "DDL locking for all metadata objects".

  After review fixes in progress.

  Changed mysql_lock_tables() to be no longer responsible for
  reopening table if waiting for the lock on it was aborted.
  This allows to get rid of several annoying functions.
2009-11-30 22:03:37 +03:00
Konstantin Osipov
eff3780dd8 Initial import of WL#3726 "DDL locking for all metadata objects".
Backport of:
------------------------------------------------------------
revno: 2630.4.1
committer: Dmitry Lenev <dlenev@mysql.com>
branch nick: mysql-6.0-3726-w
timestamp: Fri 2008-05-23 17:54:03 +0400
message:
  WL#3726 "DDL locking for all metadata objects".

  After review fixes in progress.
------------------------------------------------------------

This is the first patch in series. It transforms the metadata 
locking subsystem to use a dedicated module (mdl.h,cc). No 
significant changes in the locking protocol. 
The import passes the test suite with the exception of 
deprecated/removed 6.0 features, and MERGE tables. The latter
are subject to a fix by WL#4144.
Unfortunately, the original changeset comments got lost in a merge,
thus this import has its own (largely insufficient) comments.

This patch fixes Bug#25144 "replication / binlog with view breaks".
Warning: this patch introduces an incompatible change:
Under LOCK TABLES, it's no longer possible to FLUSH a table that 
was not locked for WRITE.
Under LOCK TABLES, it's no longer possible to DROP a table or
VIEW that was not locked for WRITE.

******
Backport of:
------------------------------------------------------------
revno: 2630.4.2
committer: Dmitry Lenev <dlenev@mysql.com>
branch nick: mysql-6.0-3726-w
timestamp: Sat 2008-05-24 14:03:45 +0400
message:
  WL#3726 "DDL locking for all metadata objects".

  After review fixes in progress.

******
Backport of:
------------------------------------------------------------
revno: 2630.4.3
committer: Dmitry Lenev <dlenev@mysql.com>
branch nick: mysql-6.0-3726-w
timestamp: Sat 2008-05-24 14:08:51 +0400
message:
  WL#3726 "DDL locking for all metadata objects"

  Fixed failing Windows builds by adding mdl.cc to the lists
  of files needed to build server/libmysqld on Windows.

******
Backport of:
------------------------------------------------------------
revno: 2630.4.4
committer: Dmitry Lenev <dlenev@mysql.com>
branch nick: mysql-6.0-3726-w
timestamp: Sat 2008-05-24 21:57:58 +0400
message:
  WL#3726 "DDL locking for all metadata objects".

  Fix for assert failures in kill.test which occured when one
  tried to kill ALTER TABLE statement on merge table while it
  was waiting in wait_while_table_is_used() for other connections
  to close this table.

  These assert failures stemmed from the fact that cleanup code
  in this case assumed that temporary table representing new
  version of table was open with adding to THD::temporary_tables
  list while code which were opening this temporary table wasn't
  always fulfilling this.

  This patch changes code that opens new version of table to
  always do this linking in. It also streamlines cleanup process
  for cases when error occurs while we have new version of table
  open.

******
WL#3726 "DDL locking for all metadata objects"
Add libmysqld/mdl.cc to .bzrignore.
******
Backport of:
------------------------------------------------------------
revno: 2630.4.6
committer: Dmitry Lenev <dlenev@mysql.com>
branch nick: mysql-6.0-3726-w
timestamp: Sun 2008-05-25 00:33:22 +0400
message:
  WL#3726 "DDL locking for all metadata objects".

  Addition to the fix of assert failures in kill.test caused by
  changes for this worklog.


Make sure we close the new table only once.

.bzrignore:
  Add libmysqld/mdl.cc
libmysqld/CMakeLists.txt:
  Added mdl.cc to the list of files needed for building of libmysqld.
libmysqld/Makefile.am:
  Added files implementing new meta-data locking subsystem to the server.
mysql-test/include/handler.inc:
  Use separate connection for waiting while threads performing DDL
  operations conflicting with open HANDLER tables reach blocked
  state. This is required because now we check and close tables open
  by HANDLER statements in this connection conflicting with DDL in
  another each time open_tables() is called and thus select from I_S
  which is used for waiting will unblock DDL operations if issued
  from connection with open HANDLERs.
mysql-test/r/create.result:
  Adjusted test case after change in implementation of CREATE TABLE
  ... SELECT.  We no longer have special check in open_table() which
  catches the case when we select from the table created. Instead we
  rely on unique_table() call which happens after opening and
  locking all tables.
mysql-test/r/flush.result:
  FLUSH TABLES WITH READ LOCK can no longer happen under LOCK
  TABLES.  Updated test accordingly.
mysql-test/r/flush_table.result:
  Under LOCK TABLES we no longer allow to do FLUSH TABLES for tables
  locked for read. Updated test accordingly.
mysql-test/r/handler_innodb.result:
  Use separate connection for waiting while threads performing DDL
  operations conflicting with open HANDLER tables reach blocked
  state. This is required because now we check and close tables open
  by HANDLER statements in this connection conflicting with DDL in
  another each time open_tables() is called and thus select from I_S
  which is used for waiting will unblock DDL operations if issued
  from connection with open HANDLERs.
mysql-test/r/handler_myisam.result:
  Use separate connection for waiting while threads performing DDL
  operations conflicting with open HANDLER tables reach blocked
  state. This is required because now we check and close tables open
  by HANDLER statements in this connection conflicting with DDL in
  another each time open_tables() is called and thus select from I_S
  which is used for waiting will unblock DDL operations if issued
  from connection with open HANDLERs.
mysql-test/r/information_schema.result:
  Additional test for WL#3726 "DDL locking for all metadata
  objects".  Check that we use high-priority metadata lock requests
  when filling I_S tables.
  
  Rearrange tests to match 6.0 better (fewer merge conflicts).
mysql-test/r/kill.result:
  Added tests checking that DDL and DML statements waiting for
  metadata locks can be interrupted by KILL command.
mysql-test/r/lock.result:
  One no longer is allowed to do DROP VIEW under LOCK TABLES even if
  this view is locked by LOCK TABLES. The problem is that in such
  situation write locks on view are not mutually exclusive so
  upgrading metadata lock which is required for dropping of view
  will lead to deadlock.
mysql-test/r/partition_column_prune.result:
  Update results (same results in 6.0), WL#3726
mysql-test/r/partition_pruning.result:
  Update results (same results in 6.0), WL#3726
mysql-test/r/ps_ddl.result:
  We no longer invalidate prepared CREATE TABLE ... SELECT statement
  if target table changes. This is OK since it is not strictly
  necessary.
  
  
  The first change is wrong, is caused by FLUSH TABLE
  now flushing all unused tables. This is a regression that
  Dmitri fixed in 6.0 in a follow up patch.
mysql-test/r/sp.result:
  Under LOCK TABLES we no longer allow accessing views which were
  not explicitly locked. To access view we need to obtain metadata
  lock on it and doing this under LOCK TABLES may lead to deadlocks.
mysql-test/r/view.result:
  One no longer is allowed to do DROP VIEW under LOCK TABLES even if
  this view is locked by LOCK TABLES. The problem is that in such
  situation even "write locks" on view are not mutually exclusive so
  upgrading metadata lock which is required for dropping of view
  will lead to deadlock
mysql-test/r/view_grant.result:
  ALTER VIEW implementation was changed to open a view only after
  checking that user which does alter has appropriate privileges on
  it. This means that in case when user's privileges are
  insufficient for this we won't check that new view definer is the
  same as original one or user performing alter has SUPER privilege.
  Adjusted test case accordingly.
mysql-test/r/view_multi.result:
  Added test case for bug#25144 "replication / binlog with view
  breaks".
mysql-test/suite/rpl/t/disabled.def:
  Disable test for deprecated features (they don't work with new MDL).
mysql-test/t/create.test:
  Adjusted test case after change in implementation of CREATE TABLE
  ... SELECT.  We no longer have special check in open_table() which
  catches the case when we select from the table created. Instead we
  rely on unique_table() call which happens after opening and
  locking all tables.
mysql-test/t/disabled.def:
  Disable merge.test, subject of WL#4144
mysql-test/t/flush.test:
  
  FLUSH TABLES WITH READ LOCK can no longer happen under LOCK
  TABLES.  Updated test accordingly.
mysql-test/t/flush_table.test:
  Under LOCK TABLES we no longer allow to do FLUSH TABLES for tables
  locked for read. Updated test accordingly.
mysql-test/t/information_schema.test:
  Additional test for WL#3726 "DDL locking for all metadata
  objects".  Check that we use high-priority metadata lock requests
  when filling I_S tables.
  
  Rearrange the results for easier merges with 6.0.
mysql-test/t/kill.test:
  Added tests checking that DDL and DML statements waiting for
  metadata locks can be interrupted by KILL command.
mysql-test/t/lock.test:
  One no longer is allowed to do DROP VIEW under LOCK TABLES even if
  this view is locked by LOCK TABLES. The problem is that in such
  situation write locks on view are not mutually exclusive so
  upgrading metadata lock which is required for dropping of view
  will lead to deadlock.
mysql-test/t/lock_multi.test:
  Adjusted test case to the changes of status in various places
  caused by change in implementation FLUSH TABLES WITH READ LOCK,
  which is now takes global metadata lock before flushing tables and
  therefore waits on at these places.
mysql-test/t/ps_ddl.test:
  We no longer invalidate prepared CREATE TABLE ... SELECT statement
  if target table changes. This is OK since it is not strictly
  necessary.
  
  
  The first change is wrong, is caused by FLUSH TABLE
  now flushing all unused tables. This is a regression that
  Dmitri fixed in 6.0 in a follow up patch.
mysql-test/t/sp.test:
  Under LOCK TABLES we no longer allow accessing views which were
  not explicitly locked. To access view we need to obtain metadata
  lock on it and doing this under LOCK TABLES may lead to deadlocks.
mysql-test/t/trigger_notembedded.test:
  Adjusted test case to the changes of status in various places
  caused by change in implementation FLUSH TABLES WITH READ LOCK,
  which is now takes global metadata lock before flushing tables and
  therefore waits on at these places.
mysql-test/t/view.test:
  One no longer is allowed to do DROP VIEW under LOCK TABLES even if
  this view is locked by LOCK TABLES. The problem is that in such
  situation even "write locks" on view are not mutually exclusive so
  upgrading metadata lock which is required for dropping of view
  will lead to deadlock.
mysql-test/t/view_grant.test:
  ALTER VIEW implementation was changed to open a view only after
  checking that user which does alter has appropriate privileges on
  it. This means that in case when user's privileges are
  insufficient for this we won't check that new view definer is the
  same as original one or user performing alter has SUPER privilege.
  Adjusted test case accordingly.
mysql-test/t/view_multi.test:
  Added test case for bug#25144 "replication / binlog with view
  breaks".
sql/CMakeLists.txt:
  Added mdl.cc to the list of files needed for building of server.
sql/Makefile.am:
  Added files implementing new meta-data locking subsystem to the
  server.
sql/event_db_repository.cc:
  
  Allocate metadata lock requests objects (MDL_LOCK) on execution
  memory root in cases when TABLE_LIST objects is also allocated
  there or on stack.
sql/ha_ndbcluster.cc:
  Adjusted code to work nicely with new metadata locking subsystem.
  close_cached_tables() no longer has wait_for_placeholder argument.
  Instead of relying on this parameter and related behavior FLUSH
  TABLES WITH READ LOCK now takes global shared metadata lock.
sql/ha_ndbcluster_binlog.cc:
  Adjusted code to work with new metadata locking subsystem.
  close_cached_tables() no longer has wait_for_placeholder argument.
  Instead of relying on this parameter and related behavior FLUSH
  TABLES WITH READ LOCK now takes global shared metadata lock.
sql/handler.cc:
  update_frm_version():
    Directly update TABLE_SHARE::mysql_version member instead of
    going through all TABLE instances for this table (old code was a
    legacy from pre-table-definition-cache days).
sql/lock.cc:
  Use new metadata locking subsystem. Threw away most of functions
  related to name locking as now one is supposed to use metadata
  locking API instead.  In lock_global_read_lock() and
  unlock_global_read_lock() in order to avoid problems with global
  read lock sneaking in at the moment when we perform FLUSH TABLES
  or ALTER TABLE under LOCK TABLES and when tables being reopened
  are protected only by metadata locks we also have to take global
  shared meta data lock.
sql/log_event.cc:
  Adjusted code to work with new metadata locking subsystem.  For
  tables open by slave thread for applying RBR events allocate
  memory for lock request object in the same chunk of memory as
  TABLE_LIST objects for them. In order to ensure that we keep these
  objects around until tables are open always close tables before
  calling Relay_log_info::clear_tables_to_lock(). Use new auxiliary
  Relay_log_info::slave_close_thread_tables() method to enforce
  this.
sql/log_event_old.cc:
  Adjusted code to work with new metadata locking subsystem.  Since
  for tables open by slave thread for applying RBR events memory for
  lock request object is allocated in the same chunk of memory as
  TABLE_LIST objects for them we have to ensure that we keep these
  objects around until tables are open. To ensure this we always
  close tables before calling
  Relay_log_info::clear_tables_to_lock(). To enfore this we use
  new auxiliary Relay_log_info::slave_close_thread_tables()
  method.
sql/mdl.cc:
  Implemented new metadata locking subsystem and API described in
  WL3726 "DDL locking for all metadata objects".
sql/mdl.h:
  Implemented new metadata locking subsystem and API described in
  WL3726 "DDL locking for all metadata objects".
sql/mysql_priv.h:
  - close_thread_tables()/close_tables_for_reopen() now has one more
    argument which indicates that metadata locks should be released
    but not removed from the context in order to be used later in
    mdl_wait_for_locks() and tdc_wait_for_old_version().
  - close_cached_table() routine is no longer public.
  - Thread waiting in wait_while_table_is_used() can be now killed
    so this function returns boolean to make caller aware of such
    situation.
  - We no longer have  table cache as separate entity instead used
    and unused TABLE instances are linked to TABLE_SHARE objects in
    table definition cache.
  - Now third argument of open_table() is also used for requesting
    table repair or auto-discovery of table's new definition. So its
    type was changed from bool to enum.
  - Added tdc_open_view() function for opening view by getting its
    definition from disk (and table cache in future).
  - reopen_name_locked_table() no longer needs "link_in" argument as
    now we have exclusive metadata locks instead of dummy TABLE
    instances when this function is called.
  - find_locked_table() now takes head of list of TABLE instances
    instead of always scanning through THD::open_tables list. Also
    added find_write_locked_table() auxiliary.
  - reopen_tables(), close_cached_tables() no longer have
    mark_share_as_old and wait_for_placeholder arguments. Instead of
    relying on this parameters and related behavior FLUSH TABLES
    WITH READ LOCK now takes global shared metadata lock.
  - We no longer need drop_locked_tables() and
    abort_locked_tables().
  - mysql_ha_rm_tables() now always assume that LOCK_open is not
    acquired by caller.
  - Added notify_thread_having_shared_lock() callback invoked by
    metadata locking subsystem when acquiring an exclusive lock, for
    each thread that has a conflicting shared metadata lock.
  - Introduced expel_table_from_cache() as replacement for
    remove_table_from_cache() (the main difference is that this new
    function assumes that caller follows metadata locking protocol
    and never waits).
  - Threw away most of functions related to name locking. One should
    use new metadata locking subsystem and API instead.
sql/mysqld.cc:
  Got rid of call initializing/deinitializing table cache since now
  it is embedded into table definition cache. Added calls for
  initializing/ deinitializing metadata locking subsystem.
sql/rpl_rli.cc:
  Introduced auxiliary Relay_log_info::slave_close_thread_tables()
  method which is used for enforcing that we always close tables
  open for RBR before deallocating TABLE_LIST elements and MDL_LOCK
  objects for them.
sql/rpl_rli.h:
  Introduced auxiliary Relay_log_info::slave_close_thread_tables()
  method which is used for enforcing that we always close tables
  open for RBR before deallocating TABLE_LIST elements and MDL_LOCK
  objects for them.
sql/set_var.cc:
  close_cached_tables() no longer has wait_for_placeholder argument.
  Instead of relying on this parameter and related behavior FLUSH
  TABLES WITH READ LOCK now takes global shared metadata lock.
sql/sp_head.cc:
  For tables added to the statement's table list by prelocking
  algorithm we allocate these objects either on the same memory as
  corresponding table list elements or on THD::locked_tables_root
  (if we are building table list for LOCK TABLES).
sql/sql_acl.cc:
  Allocate metadata lock requests objects (MDL_LOCK) on execution
  memory root in cases when we use stack TABLE_LIST objects to open
  tables.  Got rid of redundant code by using unlock_locked_tables()
  function.
sql/sql_base.cc:
  Changed code to use new MDL subsystem. Got rid of separate table
  cache.  Now used and unused TABLE instances are linked to the
  TABLE_SHAREs in table definition cache.
  
  check_unused():
    Adjusted code to the fact that we no longer have separate table
    cache.  Removed dead code.
  table_def_free():
    Free TABLE instances referenced from TABLE_SHARE objects before
    destroying table definition cache.
  get_table_share():
    Added assert which ensures that noone will be able to access
    table (and its share) without acquiring some kind of metadata
    lock first.
  close_handle_and_leave_table_as_lock():
    Adjusted code to the fact that TABLE instances now are linked to
    list in TABLE_SHARE.
  list_open_tables():
    Changed this function to use table definition cache instead of
    table cache.
  free_cache_entry():
    Unlink freed TABLE elements from the list of all TABLE instances
    for the table in TABLE_SHARE.
  kill_delayed_thread_for_table():
    Added auxiliary for killing delayed insert threads for
    particular table.
  close_cached_tables():
    Got rid of wait_for_refresh argument as we now rely on global
    shared metadata lock to prevent FLUSH WITH READ LOCK sneaking in
    when we are reopening tables. Heavily reworked this function to
    use new MDL code and not to rely on separate table cache entity.
  close_open_tables():
    We no longer have separate table cache.
  close_thread_tables():
    Release metadata locks after closing all tables. Added skip_mdl
    argument which allows us not to remove metadata lock requests
    from the context in case when we are going to use this requests
    later in mdl_wait_for_locks() and tdc_wait_for_old_versions().
  close_thread_table()/close_table_for_reopen():
    Since we no longer have separate table cache and all TABLE
    instances are linked to TABLE_SHARE objects in table definition
    cache we have to link/unlink TABLE object to/from appropriate
    lists in the share.
  name_lock_locked_table():
   Moved redundant code to find_write_locked_table() function and
    adjusted code to the fact that wait_while_table_is_used() can
    now return with an error if our thread is killed.
  reopen_table_entry():
    We no longer need "link_in" argument as with MDL we no longer
    call this function with dummy TABLE object pre-allocated and
    added to the THD::open_tables. Also now we add newly-open TABLE
    instance to the list of share's used TABLE instances.
  table_cache_insert_placeholder():
    Got rid of name-locking legacy.
  lock_table_name_if_not_cached():
    Moved to sql_table.cc the only place where it is used. It was
    also reimplemented using new MDL API.
  open_table():
    - Reworked this function to use new MDL subsystem.
    - Changed code to deal with table definition cache directly
      instead of going through separate table cache.
    - Now third argument is also used for requesting table repair
      or auto-discovery of table's new definition. So its type was
      changed from bool to enum.
  find_locked_table()/find_write_locked_table():
    Accept head of list of TABLE objects as first argument and use
    this list instead of always searching in THD::open_tables list.
    Also added auxiliary for finding write-locked locked tables.
  reopen_table():
    Adjusted function to work with new MDL subsystem and to properly
    manuipulate with lists of used/unused TABLE instaces in
    TABLE_SHARE.
  reopen_tables():
    Removed mark_share_as_old parameter. Instead of relying on it
    and related behavior FLUSH TABLES WITH READ LOCK now takes
    global shared metadata lock. Changed code after removing
    separate table cache.
  drop_locked_tables()/abort_locked_tables():
    Got rid of functions which are no longer needed.
    unlock_locked_tables():
    Moved this function from sql_parse.cc and changed it to release
    memory which was used for allocating metadata lock requests for
    tables open and locked by LOCK TABLES.
  tdc_open_view():
    Intoduced function for opening a view by getting its definition
    from disk (and table cache in future).
  reopen_table_entry():
    Introduced function for opening table definitions while holding
    exclusive metatadata lock on it.
  open_unireg_entry():
   Got rid of this function. Most of its functionality is relocated
    to open_table() and open_table_fini() functions, and some of it
    to reopen_table_entry() and tdc_open_view(). Also code
    resposible for auto-repair and auto-discovery of tables was
    moved to separate function.
  open_table_entry_fini():
    Introduced function which contains common actions which finalize
    process of TABLE object creation.
  auto_repair_table():
    Moved code responsible for auto-repair of table being opened
    here.
  handle_failed_open_table_attempt()
    Moved code responsible for handling failing attempt to open
    table to one place (retry due to lock conflict/old version,
    auto-discovery and repair).
  open_tables():
    - Flush open HANDLER tables if they have old version of if there
      is conflicting metadata lock against them (before this moment
      we had this code in open_table()).
    - When we open view which should be processed via derived table
      on the second execution of prepared statement or stored
      routine we still should call open_table() for it in order to
      obtain metadata lock on it and prepare its security context.
    - In cases when we discover that some special handling of
      failure to open table is needed call
      handle_failed_open_table_attempt() which handles all such
      scenarios.
  open_ltable():
    Handling of various special scenarios of failure to open a table
    was moved to separate handle_failed_open_table_attempt()
    function.
  remove_db_from_cache():
    Removed this function as it is no longer used.
  notify_thread_having_shared_lock():
    Added callback which is invoked by MDL subsystem when acquiring
    an exclusive lock, for each thread that has a conflicting shared
    metadata lock.
  expel_table_from_cache():
    Introduced function for removing unused TABLE instances. Unlike
    remove_table_from_cache() it relies on caller following MDL
    protocol and having appropriate locks when calling it and thus
    does not do any waiting if table is still in use.
  tdc_wait_for_old_version():
    Added function which allows open_tables() to wait in cases when
    we discover that we should back-off due to presence of old
    version of table.
  abort_and_upgrade_lock():
    Use new MDL calls.
  mysql_wait_completed_table():
    Got rid of unused function.
  open_system_tables_for_read/for_update()/performance_schema_table():
    Allocate MDL_LOCK objects on execution memory root in cases when
    TABLE_LIST objects for corresponding tables is allocated on
    stack.
  close_performance_schema_table():
    Release metadata locks after closing tables.
  ******
  Use I_P_List for free/used tables list in the table share.
sql/sql_binlog.cc:
  Use Relay_log_info::slave_close_thread_tables() method to enforce
  that we always close tables open for RBR before deallocating
  TABLE_LIST elements and MDL_LOCK objects for them.
sql/sql_class.cc:
  Added meta-data locking contexts as part of Open_tables_state
  context.  Also introduced THD::locked_tables_root memory root
  which is to be used for allocating MDL_LOCK objects for tables in
  LOCK TABLES statement (end of lifetime for such objects is UNLOCK
  TABLES so we can't use statement or execution root for them).
sql/sql_class.h:
  Added meta-data locking contexts as part of Open_tables_state
  context.  Also introduced THD::locked_tables_root memory root
  which is to be used for allocating MDL_LOCK objects for tables in
  LOCK TABLES statement (end of lifetime for such objects is UNLOCK
  TABLES so we can't use statement or execution root for them).
  
  Note: handler_mdl_context and locked_tables_root and
  mdl_el_root will be removed by subsequent patches.
sql/sql_db.cc:
  mysql_rm_db() does not really need to call remove_db_from_cache()
  as it drops each table in the database using
  mysql_rm_table_part2(), which performs all necessary operations on
  table (definition) cache.
sql/sql_delete.cc:
  Use the new metadata locking API for TRUNCATE.
sql/sql_handler.cc:
  Changed HANDLER implementation to use new metadata locking
  subsystem.  Note that MDL_LOCK objects for HANDLER tables are
  allocated in the same chunk of heap memory as TABLE_LIST object
  for those tables.
sql/sql_insert.cc:
  mysql_insert():
    find_locked_table() now takes head of list of TABLE object as
    its argument instead of always scanning through THD::open_tables
    list.
  handle_delayed_insert():
    Allocate metadata lock request object for table open by delayed
    insert thread on execution memroot.  create_table_from_items():
    We no longer allocate dummy TABLE objects for tables being
    created if they don't exist. As consequence
    reopen_name_locked_table() no longer has link_in argument.
    open_table() now has one more argument which is not relevant for
    temporary tables.
sql/sql_parse.cc:
  - Moved unlock_locked_tables() routine to sql_base.cc and made
    available it in other files. Got rid of some redundant code by
    using this function.
  - Replaced boolean TABLE_LIST::create member with enum
    open_table_type member.
  - Use special memory root for allocating MDL_LOCK objects for
    tables open and locked by LOCK TABLES (these object should live
    till UNLOCK TABLES so we can't allocate them on statement nor
    execution memory root). Also properly set metadata lock
    upgradability attribure for those tables.
  - Under LOCK TABLES it is no longer allowed to flush tables which
    are not write-locked as this breaks metadata locking protocol
    and thus potentially might lead to deadlock.
  - Added auxiliary adjust_mdl_locks_upgradability() function.
sql/sql_partition.cc:
  Adjusted code to the fact that reopen_tables() no longer has
  "mark_share_as_old" argument. Got rid of comments which are no
  longer true.
sql/sql_plist.h:
  Added I_P_List template class for parametrized intrusive doubly
  linked lists and I_P_List_iterator for corresponding iterator.
  Unlike for I_List<> list elements of such list can participate in
  several lists. Unlike List<> such lists are doubly-linked and
  intrusive.
sql/sql_plugin.cc:
  Allocate metadata lock requests objects (MDL_LOCK) on execution
  memory root in cases when we use stack TABLE_LIST objects to open
  tables.
sql/sql_prepare.cc:
  Replaced boolean TABLE_LIST::create member with enum
  open_table_type member.  This allows easily handle situation in
  which instead of opening the table we want only to take exclusive
  metadata lock on it.
sql/sql_rename.cc:
  Use new metadata locking subsystem in implementation of RENAME
  TABLE.
sql/sql_servers.cc:
  Allocate metadata lock requests objects (MDL_LOCK) on execution
  memory root in cases when we use stack TABLE_LIST objects to open
  tables. Got rid of redundant code by using unlock_locked_tables()
  function.
sql/sql_show.cc:
  Acquire shared metadata lock when we are getting information for
  I_S table directly from TABLE_SHARE without doing full-blown table
  open.  We use high priority lock request in this situation in
  order to avoid deadlocks.
  Also allocate metadata lock requests objects (MDL_LOCK) on
  execution memory root in cases when TABLE_LIST objects are also
  allocated there
sql/sql_table.cc:
  mysql_rm_table():
    Removed comment which is no longer relevant.
  mysql_rm_table_part2():
    Now caller of mysql_ha_rm_tables() should not own LOCK_open.
    Adjusted code to use new metadata locking subsystem instead of
    name-locks.
  lock_table_name_if_not_cached():
    Moved this function from sql_base.cc to this file and
    reimplemented it using metadata locking API.
  mysql_create_table():
    Adjusted code to use new MDL API.
  wait_while_table_is_used():
    Changed function to use new MDL subsystem. Made thread waiting
    in it killable (this also led to introduction of return value so
    caller can distinguish successful executions from situations
    when waiting was aborted).
  close_cached_tables():
    Thread waiting in this function is killable now. As result it
    has return value for distinguishing between succes and failure.
    Got rid of redundant boradcast_refresh() call.
  prepare_for_repair():
    Use MDL subsystem instead of name-locks.
  mysql_admin_table():
    mysql_ha_rm_tables() now always assumes that caller doesn't own
    LOCK_open.
  mysql_repair_table():
    We should mark all elements of table list as requiring
    upgradable metadata locks.
  mysql_create_table_like():
    Use new MDL subsystem instead of name-locks.
  create_temporary_tables():
    We don't need to obtain metadata locks when creating temporary
    table.
  mysql_fast_or_online_alter_table():
    Thread waiting in wait_while_table_is_used() is now killable.
  mysql_alter_table():
    Adjusted code to work with new MDL subsystem and to the fact
    that threads waiting in what_while_table_is_used() and
    close_cached_table() are now killable.
sql/sql_test.cc:
  We no longer have separate table cache. TABLE instances are now
  associated with/linked to TABLE_SHARE objects in table definition
  cache.
sql/sql_trigger.cc:
  Adjusted code to work with new metadata locking subsystem.  Also
  reopen_tables() no longer has mark_share_as_old argument (Instead
  of relying on this parameter and related behavior FLUSH TABLES
  WITH READ LOCK now takes global shared metadata lock).
sql/sql_udf.cc:
  Allocate metadata lock requests objects (MDL_LOCK) on execution
  memory root in cases when we use stack TABLE_LIST objects to open
  tables.
sql/sql_update.cc:
  Adjusted code to work with new meta-data locking subsystem.
sql/sql_view.cc:
  Added proper meta-data locking to implementations of
  CREATE/ALTER/DROP VIEW statements. Now we obtain exclusive
  meta-data lock on a view before creating/ changing/dropping it.
  This ensures that all concurrent statements that use this view
  will finish before our statement will proceed and therefore we
  will get correct order of statements in the binary log.
  Also ensure that TABLE_LIST::mdl_upgradable attribute is properly
  propagated for underlying tables of view.
sql/table.cc:
  Added auxiliary alloc_mdl_locks() function for allocating metadata
  lock request objects for all elements of table list.
sql/table.h:
  TABLE_SHARE:
    Got rid of unused members. Introduced members for storing lists
    of used and unused TABLE objects for this share.
  TABLE:
    Added members for linking TABLE objects into per-share lists of
    used and unused TABLE instances. Added member for holding
    pointer to metadata lock for this table.
  TABLE_LIST:
    Replaced boolean TABLE_LIST::create member with enum
    open_table_type member.  This allows easily handle situation in
    which instead of opening the table we want only to take
    exclusive meta-data lock on it (we need this in order to handle
    ALTER VIEW and CREATE VIEW statements).
    Introduced new mdl_upgradable member for marking elements of
    table list for which we need to take upgradable shared metadata
    lock instead of plain shared metadata lock.  Added pointer for
    holding pointer to MDL_LOCK for the table.
  Added auxiliary alloc_mdl_locks() function for allocating metadata
  lock requests objects for all elements of table list.  Added
  auxiliary set_all_mdl_upgradable() function for marking all
  elements in table list as requiring upgradable metadata locks.
storage/myisammrg/ha_myisammrg.cc:
  Allocate MDL_LOCK objects for underlying tables of MERGE table.
  To be reworked once Ingo pushes his patch for WL4144.
2009-11-30 18:55:03 +03:00
Konstantin Osipov
69b9761f29 Initial import of WL#3726 "DDL locking for all metadata objects".
Backport of:
------------------------------------------------------------
revno: 2630.4.1
committer: Dmitry Lenev <dlenev@mysql.com>
branch nick: mysql-6.0-3726-w
timestamp: Fri 2008-05-23 17:54:03 +0400
message:
  WL#3726 "DDL locking for all metadata objects".

  After review fixes in progress.
------------------------------------------------------------

This is the first patch in series. It transforms the metadata 
locking subsystem to use a dedicated module (mdl.h,cc). No 
significant changes in the locking protocol. 
The import passes the test suite with the exception of 
deprecated/removed 6.0 features, and MERGE tables. The latter
are subject to a fix by WL#4144.
Unfortunately, the original changeset comments got lost in a merge,
thus this import has its own (largely insufficient) comments.

This patch fixes Bug#25144 "replication / binlog with view breaks".
Warning: this patch introduces an incompatible change:
Under LOCK TABLES, it's no longer possible to FLUSH a table that 
was not locked for WRITE.
Under LOCK TABLES, it's no longer possible to DROP a table or
VIEW that was not locked for WRITE.

******
Backport of:
------------------------------------------------------------
revno: 2630.4.2
committer: Dmitry Lenev <dlenev@mysql.com>
branch nick: mysql-6.0-3726-w
timestamp: Sat 2008-05-24 14:03:45 +0400
message:
  WL#3726 "DDL locking for all metadata objects".

  After review fixes in progress.

******
Backport of:
------------------------------------------------------------
revno: 2630.4.3
committer: Dmitry Lenev <dlenev@mysql.com>
branch nick: mysql-6.0-3726-w
timestamp: Sat 2008-05-24 14:08:51 +0400
message:
  WL#3726 "DDL locking for all metadata objects"

  Fixed failing Windows builds by adding mdl.cc to the lists
  of files needed to build server/libmysqld on Windows.

******
Backport of:
------------------------------------------------------------
revno: 2630.4.4
committer: Dmitry Lenev <dlenev@mysql.com>
branch nick: mysql-6.0-3726-w
timestamp: Sat 2008-05-24 21:57:58 +0400
message:
  WL#3726 "DDL locking for all metadata objects".

  Fix for assert failures in kill.test which occured when one
  tried to kill ALTER TABLE statement on merge table while it
  was waiting in wait_while_table_is_used() for other connections
  to close this table.

  These assert failures stemmed from the fact that cleanup code
  in this case assumed that temporary table representing new
  version of table was open with adding to THD::temporary_tables
  list while code which were opening this temporary table wasn't
  always fulfilling this.

  This patch changes code that opens new version of table to
  always do this linking in. It also streamlines cleanup process
  for cases when error occurs while we have new version of table
  open.

******
WL#3726 "DDL locking for all metadata objects"
Add libmysqld/mdl.cc to .bzrignore.
******
Backport of:
------------------------------------------------------------
revno: 2630.4.6
committer: Dmitry Lenev <dlenev@mysql.com>
branch nick: mysql-6.0-3726-w
timestamp: Sun 2008-05-25 00:33:22 +0400
message:
  WL#3726 "DDL locking for all metadata objects".

  Addition to the fix of assert failures in kill.test caused by
  changes for this worklog.


Make sure we close the new table only once.
2009-11-30 18:55:03 +03:00
Konstantin Osipov
9a9e8d2311 Backport of:
----------------------------------------------------------------------
ChangeSet@1.2571, 2008-04-08 12:30:06+02:00, vvaintroub@wva. +122 -0
  Bug#32082 : definition of VOID in my_global.h conflicts with Windows
  SDK headers
  
  VOID macro is now removed. Its usage is replaced with void cast.
  In some cases, where cast does not make much sense (pthread_*, printf, 
  hash_delete, my_seek), cast is ommited.


client/mysqladmin.cc:
  Bug#32082 : remove VOID macro
client/mysqldump.c:
  Bug#32082 : remove VOID macro
client/mysqlimport.c:
  Bug#32082 : remove VOID macro
client/mysqlslap.c:
  Bug#32082 : remove VOID macro
client/mysqltest.cc:
  Bug#32082 : remove VOID macro
client/sql_string.cc:
  Bug#32082 : remove VOID macro
extra/comp_err.c:
  Bug#32082 : remove VOID macro
extra/replace.c:
  Bug#32082 : remove VOID macro
include/my_alarm.h:
  Bug#32082 : remove VOID macro
include/my_global.h:
  Bug#32082 : remove VOID macro
libmysql/libmysql.c:
  Bug#32082 : remove VOID macro
mysys/errors.c:
  Bug#32082 : remove VOID macro
mysys/hash.c:
  Bug#32082 : remove VOID macro
mysys/mf_iocache2.c:
  Bug#32082 : remove VOID macro
mysys/mf_loadpath.c:
  Bug#32082 : remove VOID macro
mysys/mf_path.c:
  Bug#32082 : remove VOID macro
mysys/my_append.c:
  Bug#32082 : remove VOID macro
mysys/my_clock.c:
  Bug#32082 : remove VOID macro
mysys/my_copy.c:
  Bug#32082 : remove VOID macro
mysys/my_fstream.c:
  Bug#32082 : remove VOID macro
mysys/my_getwd.c:
  Bug#32082 : remove VOID macro
mysys/my_lib.c:
  Bug#32082 : remove VOID macro
mysys/my_lockmem.c:
  Bug#32082 : remove VOID macro
mysys/my_pthread.c:
  Bug#32082 : remove VOID macro
mysys/my_redel.c:
  Bug#32082 : remove VOID macro
mysys/stacktrace.c:
  Bug#32082 : remove VOID macro
mysys/thr_alarm.c:
  Bug#32082 : remove VOID macro
mysys/thr_lock.c:
  Bug#32082 : remove VOID macro
sql/derror.cc:
  Bug#32082 : remove VOID macro
sql/des_key_file.cc:
  Bug#32082 : remove VOID macro
sql/discover.cc:
  Bug#32082 : remove VOID macro
sql/field.cc:
  Bug#32082 : remove VOID macro
sql/filesort.cc:
  Bug#32082 : remove VOID macro
sql/ha_ndbcluster.cc:
  Bug#32082 : remove VOID macro
sql/ha_partition.cc:
  Bug#32082 : remove VOID macro
sql/handler.cc:
  Bug#32082 : remove VOID macro
sql/hostname.cc:
  Bug#32082 : remove VOID macro
sql/init.cc:
  Bug#32082 : remove VOID macro
sql/item.cc:
  Bug#32082 : remove VOID macro
sql/item_cmpfunc.cc:
  Bug#32082 : remove VOID macro
sql/item_strfunc.cc:
  Bug#32082 : remove VOID macro
sql/lock.cc:
  Bug#32082 : remove VOID macro
sql/log.cc:
  Bug#32082 : remove VOID macro
sql/log_event.cc:
  Bug#32082 : remove VOID macro
sql/mysqld.cc:
  Bug#32082 : remove VOID macro
sql/opt_range.h:
  Bug#32082 : remove VOID macro
sql/protocol.cc:
  Bug#32082 : remove VOID macro
sql/records.cc:
  Bug#32082 : remove VOID macro
sql/sp_head.cc:
  Bug#32082 : remove VOID macro
sql/sp_pcontext.cc:
  Bug#32082 : remove VOID macro
sql/sql_acl.cc:
  Bug#32082 : remove VOID macro
sql/sql_base.cc:
  Bug#32082 : remove VOID macro
sql/sql_cache.cc:
  Bug#32082 : remove VOID macro
sql/sql_connect.cc:
  Bug#32082 : remove VOID macro
sql/sql_db.cc:
  Bug#32082 : remove VOID macro
sql/sql_delete.cc:
  Bug#32082 : remove VOID macro
sql/sql_handler.cc:
  Bug#32082 : remove VOID macro
sql/sql_insert.cc:
  Bug#32082 : remove VOID macro
sql/sql_map.cc:
  Bug#32082 : remove VOID macro
sql/sql_parse.cc:
  Bug#32082 : remove VOID macro
sql/sql_select.cc:
  Bug#32082 : remove VOID macro
sql/sql_servers.cc:
  Bug#32082 : remove VOID macro
sql/sql_show.cc:
  Bug#32082 : remove VOID macro
sql/sql_string.cc:
  Bug#32082 : remove VOID macro
sql/sql_table.cc:
  Bug#32082 : remove VOID macro
sql/sql_test.cc:
  Bug#32082 : remove VOID macro
sql/sql_trigger.cc:
  Bug#32082 : remove VOID macro
sql/sql_update.cc:
  Bug#32082 : remove VOID macro
sql/sql_view.cc:
  Bug#32082 : remove VOID macro
sql/table.cc:
  Bug#32082 : remove VOID macro
sql/tztime.cc:
  Bug#32082 : remove VOID macro
sql/udf_example.c:
  Bug#32082 : remove VOID macro
sql/uniques.cc:
  Bug#32082 : remove VOID macro
sql/unireg.cc:
  Bug#32082 : remove VOID macro
storage/archive/ha_archive.cc:
  Bug#32082 : remove VOID macro
storage/blackhole/ha_blackhole.cc:
  Bug#32082 : remove VOID macro
storage/csv/ha_tina.cc:
  Bug#32082 : remove VOID macro
storage/csv/transparent_file.cc:
  Bug#32082 : remove VOID macro
storage/example/ha_example.cc:
  Bug#32082 : remove VOID macro
storage/federated/ha_federated.cc:
  Bug#32082 : remove VOID macro
storage/heap/hp_clear.c:
  Bug#32082 : remove VOID macro
storage/heap/hp_create.c:
  Bug#32082 : remove VOID macro
storage/heap/hp_test1.c:
  Bug#32082 : remove VOID macro
storage/heap/hp_test2.c:
  Bug#32082 : remove VOID macro
storage/innobase/handler/ha_innodb.cc:
  Bug#32082 : remove VOID macro
storage/myisam/ft_eval.c:
  Bug#32082 : remove VOID macro
storage/myisam/ha_myisam.cc:
  Bug#32082 : remove VOID macro
storage/myisam/mi_changed.c:
  Bug#32082 : remove VOID macro
storage/myisam/mi_check.c:
  Bug#32082 : remove VOID macro
storage/myisam/mi_close.c:
  Bug#32082 : remove VOID macro
storage/myisam/mi_create.c:
  Bug#32082 : remove VOID macro
storage/myisam/mi_dbug.c:
  Bug#32082 : remove VOID macro
storage/myisam/mi_delete.c:
  Bug#32082 : remove VOID macro
storage/myisam/mi_delete_all.c:
  Bug#32082 : remove VOID macro
storage/myisam/mi_dynrec.c:
  Bug#32082 : remove VOID macro
storage/myisam/mi_info.c:
  Bug#32082 : remove VOID macro
storage/myisam/mi_locking.c:
  Bug#32082 : remove VOID macro
storage/myisam/mi_log.c:
  Bug#32082 : remove VOID macro
storage/myisam/mi_open.c:
  Bug#32082 : remove VOID macro
storage/myisam/mi_packrec.c:
  Bug#32082 : remove VOID macro
storage/myisam/mi_panic.c:
  Bug#32082 : remove VOID macro
storage/myisam/mi_rsame.c:
  Bug#32082 : remove VOID macro
storage/myisam/mi_statrec.c:
  Bug#32082 : remove VOID macro
storage/myisam/mi_test1.c:
  Bug#32082 : remove VOID macro
storage/myisam/mi_test2.c:
  Bug#32082 : remove VOID macro
storage/myisam/mi_test3.c:
  Bug#32082 : remove VOID macro
storage/myisam/mi_update.c:
  Bug#32082 : remove VOID macro
storage/myisam/mi_write.c:
  Bug#32082 : remove VOID macro
storage/myisam/myisamchk.c:
  Bug#32082 : remove VOID macro
storage/myisam/myisamlog.c:
  Bug#32082 : remove VOID macro
storage/myisam/myisampack.c:
  Bug#32082 : remove VOID macro
storage/myisam/sort.c:
  Bug#32082 : remove VOID macro
storage/myisammrg/myrg_close.c:
  Bug#32082 : remove VOID macro
storage/myisammrg/myrg_create.c:
  Bug#32082 : remove VOID macro
storage/myisammrg/myrg_open.c:
  Bug#32082 : remove VOID macro
strings/str_test.c:
  Bug#32082 : remove VOID macro
tests/thread_test.c:
  Bug#32082 : remove VOID macro
2009-11-24 16:54:59 +03:00
Konstantin Osipov
4cff617c25 Backport of:
----------------------------------------------------------------------
ChangeSet@1.2571, 2008-04-08 12:30:06+02:00, vvaintroub@wva. +122 -0
  Bug#32082 : definition of VOID in my_global.h conflicts with Windows
  SDK headers
  
  VOID macro is now removed. Its usage is replaced with void cast.
  In some cases, where cast does not make much sense (pthread_*, printf, 
  hash_delete, my_seek), cast is ommited.
2009-11-24 16:54:59 +03:00
Igor Babaev
e4e1ae0d13 Merge of the patch introducing virtual columns into maria-5.2 2009-11-11 20:31:28 -08:00
Alexander Nozdrin
a708ba6524 Manual merge from mysql-next-mr. 2009-11-02 14:10:04 +03:00
Alexander Nozdrin
8c95f3c53b Manual merge from mysql-next-mr. 2009-11-02 14:10:04 +03:00
Alexander Nozdrin
2dc132b209 Merge from mysql-next-mr. 2009-10-23 15:22:21 +04:00
Alexander Nozdrin
069d78c067 Merge from mysql-next-mr. 2009-10-23 15:22:21 +04:00
Sergey Glukhov
96dbafaa8d Bug#35428 When selecting from INFORMATION_SCHEMA tables, incomplete metadata
backport to Betony
2009-10-23 14:19:54 +05:00
Sergey Glukhov
676c12e2d4 Bug#35428 When selecting from INFORMATION_SCHEMA tables, incomplete metadata
backport to Betony
2009-10-23 14:19:54 +05:00
Konstantin Osipov
8ec23470f1 Backport of revno 2630.28.10, 2630.28.31, 2630.28.26, 2630.33.1,
2630.39.1, 2630.28.29, 2630.34.3, 2630.34.2, 2630.34.1, 2630.29.29,
2630.29.28, 2630.31.1, 2630.28.13, 2630.28.10, 2617.23.14 and
some other minor revisions.

This patch implements: 

WL#4264 "Backup: Stabilize Service Interface" -- all the
server prerequisites except si_objects.{h,cc} themselves (they can
be just copied over, when needed).

WL#4435: Support OUT-parameters in prepared statements.

(and all issues in the initial patches for these two
tasks, that were discovered in pushbuild and during testing).

Bug#39519: mysql_stmt_close() should flush all data
associated with the statement.

After execution of a prepared statement, send OUT parameters of the invoked
stored procedure, if any, to the client.

When using the binary protocol, send the parameters in an additional result
set over the wire.  When using the text protocol, assign out parameters to
the user variables from the CALL(@var1, @var2, ...) specification.

The following refactoring has been made:
  - Protocol::send_fields() was renamed to Protocol::send_result_set_metadata();
  - A new Protocol::send_result_set_row() was introduced to incapsulate
    common functionality for sending row data.
  - Signature of Protocol::prepare_for_send() was changed: this operation
    does not need a list of items, the number of items is fully sufficient.

The following backward incompatible changes have been made:
  - CLIENT_MULTI_RESULTS is now enabled by default in the client;
  - CLIENT_PS_MULTI_RESUTLS is now enabled by default in the client.

include/mysql.h:
  Add a new flag to MYSQL_METHODS::flush_use_result
  function pointer. This flag determines if all results
  should be flushed or only the first one:
      
  - if flush_all_results is TRUE, then cli_flush_use_result()
    will read/flush all pending results. I.e. it will read
    all packets while server status attribute indicates that
    there are more results. This is a new semantic, required
    to fix the bug.
              
  - if flush_all_results is FALSE, the old sematic
    is preserved -- i.e. cli_flush_use_result() reads data
    until first EOF-packet.
include/mysql.h.pp:
  Update the ABI with new calls (compatible changes).
include/mysql_com.h:
  Add CLIENT_PS_OUT_PARAMS -- a client capability indicating that the client supportsю
libmysql/libmysql.c:
  Add mysql_stmt_next_result() -- analogue of mysql_next_result() for binary protocol.
  Fix a minor bug in alloc_fields() -- not all members were copied over,
  and some only shallow-copied (catalog).
  Flush all results in mysql_stmt_close() (Bug#39519).
libmysqld/lib_sql.cc:
  Rename send_fields() -> send_result_set_metadata().
  Refactoring: change prepare_for_send() so that it accepts only 
  what it really needs -- a number of elements in the list.
mysql-test/r/ps.result:
  Update results: WL#4435.
mysql-test/t/ps.test:
  WL#4435: A test case for an SQL-part of the problem.
sql-common/client.c:
  Bug#39519.
  Implement new functionality in cli_flush_use_result():
  if flush_all_delete is TRUE, then it should read/flush
  all pending results.
sql/Makefile.am:
  Add a new header sql_prepare.h to the list
  of build headers.
sql/events.cc:
  Rename: Protocol::send_fields() -> 
  Protocol::send_result_set_metadata().
sql/handler.cc:
  Rename: Protocol::send_fields() -> 
  Protocol::send_result_set_metadata().
sql/mysql_priv.h:
  Move sql_prepare.cc-specific declarations to a new
  header - sql_prepare.h.
sql/procedure.h:
  Rename: Protocol::send_fields() -> 
  Protocol::send_result_set_metadata().
sql/protocol.cc:
  Move the logic responsible for sending of one result
  set row to the Protocol class. Define a template
  for end-of-statement action. 
  Refactoring: change prepare_for_send() so that it accepts 
  only what it really needs -- a number of elements in the list.
  Rename send_fields() to send_result_set_metadata().
sql/protocol.h:
  Update with new declarations (WL#4435).
  Rename send_fields() -> send_result_set_metadata().
  prepare_for_send() only needs the number of columns to send,
  and doesn't use the item list - update signature to require
  only what's needed.
  Add a new protocol type -- Protocol_local.
sql/repl_failsafe.cc:
  Rename: Protocol::send_fields() -> 
  Protocol::send_result_set_metadata().
sql/slave.cc:
  Rename: Protocol::send_fields() -> 
  Protocol::send_result_set_metadata().
sql/sql_acl.cc:
  Rename: Protocol::send_fields() -> 
  Protocol::send_result_set_metadata().
sql/sql_base.cc:
  Include sql_prepare.h (for Reprepare_observer).
sql/sql_cache.cc:
  Extend the query cache flags block to be able
  to store a numeric id for the result format,
  not just a flag binary/non-binary.
sql/sql_class.cc:
  Update to use the rename of Protocol::send_fields()
  to Protocol::send_result_set_metadata().
  Use Protocol::send_one_result_set_row().
sql/sql_class.h:
  Move the declaration of Reprepare_observer to the 
  new header - sql_prepare.h.
  Update to the new signature of class Protocol::send_fields().
sql/sql_connect.cc:
  Use a protocol template method instead of
  raw NET layer API at the end of a statement.
sql/sql_cursor.cc:
  Rename: Protocol::send_fields() -> 
  Protocol::send_result_set_metadata().
sql/sql_error.cc:
  Rename: Protocol::send_fields() -> 
  Protocol::send_result_set_metadata().
sql/sql_handler.cc:
  Rename: Protocol::send_fields() -> 
  Protocol::send_result_set_metadata().
  Use new method Protocol::send_one_result_set_row().
sql/sql_help.cc:
  Rename: Protocol::send_fields() -> 
  Protocol::send_result_set_metadata().
sql/sql_lex.cc:
  Initialize multi_statements variable.
  Add a handy constant for empty lex
  string.
sql/sql_lex.h:
  Add a separate member for a standalone
  parsing option - multi-statements support.
sql/sql_list.cc:
  sql_list.h is a standalone header now, 
  no need to include mysql_priv.h.
sql/sql_list.h:
  Make sql_list.h a stand-alone header.
sql/sql_parse.cc:
  Include sql_prepare.h for prepared
  statements- related declarations.
  Use a new Protocol template method to end
  each statement (send OK, EOF or ERROR to
  the client).
sql/sql_prepare.cc:
  Implement Execute Direct API (WL#4264), 
  currently unused. It will be used by the service
  interface (Backup).
  Use a new header - sql_prepare.h.
  Add support for OUT parameters in the 
  binary and text protocol (prepared statements 
  only).
sql/sql_prepare.h:
  Add a new header to contain (for now)
  all prepared statement- external
  related declarations.
sql/sql_profile.cc:
  Rename: Protocol::send_fields() -> 
  Protocol::send_result_set_metadata().
sql/sql_repl.cc:
  Rename: Protocol::send_fields() -> 
  Protocol::send_result_set_metadata().
sql/sql_select.cc:
  Rename: Protocol::send_fields() -> 
  Protocol::send_result_set_metadata().
sql/sql_show.cc:
  Rename: Protocol::send_fields() -> 
  Protocol::send_result_set_metadata().
sql/sql_string.h:
  Add a way to convert a String to LEX_STRING.
sql/sql_table.cc:
  Rename: Protocol::send_fields() -> 
  Protocol::send_result_set_metadata().
sql/sql_update.cc:
  Remove an extraneous my_error(). The error
  is already reported in update_non_unique_table_error().
sql/sql_yacc.yy:
  Support for multi-statements is an independent
  property of parsing, not derived from 
  the protocol type.
tests/mysql_client_test.c:
  Add tests for WL#4435 (binary protocol).
2009-10-22 00:02:06 +04:00
Konstantin Osipov
d4632dff5a Backport of revno 2630.28.10, 2630.28.31, 2630.28.26, 2630.33.1,
2630.39.1, 2630.28.29, 2630.34.3, 2630.34.2, 2630.34.1, 2630.29.29,
2630.29.28, 2630.31.1, 2630.28.13, 2630.28.10, 2617.23.14 and
some other minor revisions.

This patch implements: 

WL#4264 "Backup: Stabilize Service Interface" -- all the
server prerequisites except si_objects.{h,cc} themselves (they can
be just copied over, when needed).

WL#4435: Support OUT-parameters in prepared statements.

(and all issues in the initial patches for these two
tasks, that were discovered in pushbuild and during testing).

Bug#39519: mysql_stmt_close() should flush all data
associated with the statement.

After execution of a prepared statement, send OUT parameters of the invoked
stored procedure, if any, to the client.

When using the binary protocol, send the parameters in an additional result
set over the wire.  When using the text protocol, assign out parameters to
the user variables from the CALL(@var1, @var2, ...) specification.

The following refactoring has been made:
  - Protocol::send_fields() was renamed to Protocol::send_result_set_metadata();
  - A new Protocol::send_result_set_row() was introduced to incapsulate
    common functionality for sending row data.
  - Signature of Protocol::prepare_for_send() was changed: this operation
    does not need a list of items, the number of items is fully sufficient.

The following backward incompatible changes have been made:
  - CLIENT_MULTI_RESULTS is now enabled by default in the client;
  - CLIENT_PS_MULTI_RESUTLS is now enabled by default in the client.
2009-10-22 00:02:06 +04:00
Michael Widenius
ab0905c6d7 This is based on the userstatv2 patch from Percona and OurDelta.
The original code comes, as far as I know, from Google (Mark Callaghan's team) with additional work from Percona, Ourdelta and Weldon Whipple.

This code provides the same functionallity, but with a lot of changes to make it faster and better fit the MariaDB infrastucture.

Added new status variables:
- Com_show_client_statistics, Com_show_index_statistics, Com_show_table_statistics, Com_show_user_statistics
- Access_denied_errors, Busy_time (clock time), Binlog_bytes_written, Cpu_time, Empty_queries, Rows_sent, Rows_read

Added new variable / startup option 'userstat' to control if user statistics should be enabled or not

Added my_getcputime(); Returns cpu time used by this thread.
New FLUSH commands:
- FLUSH SLOW QUERY LOG
- FLUSH TABLE_STATISTICS
- FLUSH INDEX_STATISTICS
- FLUSH USER_STATISTICS
- FLUSH CLIENT_STATISTICS

New SHOW commands:
- SHOW CLIENT_STATISTICS
- SHOW USER_STATISTICS
- SHOW TABLE_STATISTICS
- SHOW INDEX_STATISTICS

New Information schemas:
- CLIENT_STATISTICS
- USER_STATISTICS
- INDEX_STATISTICS
- TABLE_STATISTICS

Added support for all new flush commands to mysqladmin

Added handler::ha_... wrappers for all handler read calls to do statistics counting
- Changed all code to use new ha_... calls
- Count number of read rows, changed rows and rows read trough an index

Added counting of number of bytes sent to binary log (status variable Binlog_bytes_written)
Added counting of access denied errors (status variable Access_denied_erors)

Bugs fixed:
- Fixed bug in add_to_status() and add_diff_to_status() where longlong variables where threated as long
- CLOCK_GETTIME was not propely working on Linuxm

client/mysqladmin.cc:
  Added support for all new flush commmands and some common combinations:
  
  flush-slow-log
  flush-table-statistics
  flush-index-statistics
  flush-user-statistics
  flush-client-statistics
  flush-all-status
  flush-all-statistics
configure.in:
  Added checking if clock_gettime needs the librt.
  (Fixes Bug #37639 clock_gettime is never used/enabled in Linux/Unix)
include/my_sys.h:
  Added my_getcputime()
include/mysql_com.h:
  Added LIST_PROCESS_HOST_LEN & new REFRESH target defines
mysql-test/r/information_schema.result:
  New information schema tables added
mysql-test/r/information_schema_all_engines.result:
  New information schema tables added
mysql-test/r/information_schema_db.result:
  New information schema tables added
mysql-test/r/log_slow.result:
  Added testing that flosh slow query logs is accepted
mysql-test/r/status_user.result:
  Basic testing of user, client, table and index statistics
mysql-test/t/log_slow.test:
  Added testing that flosh slow query logs is accepted
mysql-test/t/status_user-master.opt:
  Ensure that we get a fresh restart before running status_user.test
mysql-test/t/status_user.test:
  Basic testing of user, client, table and index statistics
mysys/my_getsystime.c:
  Added my_getcputime()
  Returns cpu time used by this thread.
sql/authors.h:
  Updated authors to have core and original MySQL developers first.
sql/event_data_objects.cc:
  Updated call to mysql_reset_thd_for_next_command()
sql/event_db_repository.cc:
  Changed to use new ha_... calls
sql/filesort.cc:
  Changed to use new ha_... calls
sql/ha_partition.cc:
  Changed to use new ha_... calls
  Fixed comment syntax
sql/handler.cc:
  Changed to use new ha_... calls
  Reset table statistics
  Added code to update global table and index status
  Added counting of rows changed
sql/handler.h:
  Added table and index statistics variables
  Added function reset_statistics()
  Added handler::ha_... wrappers for all handler read calls to do statistics counting
  Protected all normal read calls to ensure we use the new calls in the server.
  Made ha_partition a friend class so that partition code can call the old read functions
sql/item_subselect.cc:
  Changed to use new ha_... calls
sql/lex.h:
  Added keywords for new information schema tables and flush commands
sql/log.cc:
  Added flush_slow_log()
  Added counting of number of bytes sent to binary log
  Removed not needed test of thd (It's used before, so it's safe to use)
  Added THD object to MYSQL_BIN_LOG::write_cache() to simplify statistics counting
sql/log.h:
  Added new parameter to write_cache()
  Added flush_slow_log() functions.
sql/log_event.cc:
  Updated call to mysql_reset_thd_for_next_command()
  Changed to use new ha_... calls
sql/log_event_old.cc:
  Updated call to mysql_reset_thd_for_next_command()
  Changed to use new ha_... calls
sql/mysql_priv.h:
  Updated call to mysql_reset_thd_for_next_command()
  Added new statistics functions and variables needed by these.
sql/mysqld.cc:
  Added new statistics variables and structures to handle these
  Added new status variables:
  - Com_show_client_statistics, Com_show_index_statistics, Com_show_table_statistics, Com_show_user_statistics
  - Access_denied_errors, Busy_time (clock time), Binlog_bytes_written, Cpu_time, Empty_queries, Rows_set, Rows_read
  Added new option 'userstat' to control if user statistics should be enabled or not
sql/opt_range.cc:
  Changed to use new ha_... calls
sql/opt_range.h:
  Changed to use new ha_... calls
sql/opt_sum.cc:
  Changed to use new ha_... calls
sql/records.cc:
  Changed to use new ha_... calls
sql/set_var.cc:
  Added variable 'userstat'
sql/sp.cc:
  Changed to use new ha_... calls
sql/sql_acl.cc:
  Changed to use new ha_... calls
  Added counting of access_denied_errors
sql/sql_base.cc:
  Added call to statistics functions
sql/sql_class.cc:
  Added usage of org_status_var, to store status variables at start of command
  Added functions THD::update_stats(), THD::update_all_stats()
  Fixed bug in add_to_status() and add_diff_to_status() where longlong variables where threated as long
sql/sql_class.h:
  Added new status variables to status_var
  Moved variables that was not ulong in status_var last.
  Added variables to THD for storing temporary values during statistics counting
sql/sql_connect.cc:
  Variables and functions to calculate user and client statistics
  Added counting of access_denied_errors and lost_connections
sql/sql_cursor.cc:
  Changed to use new ha_... calls
sql/sql_handler.cc:
  Changed to use new ha_... calls
sql/sql_help.cc:
  Changed to use new ha_... calls
sql/sql_insert.cc:
  Changed to use new ha_... calls
sql/sql_lex.h:
  Added SQLCOM_SHOW_USER_STATS, SQLCOM_SHOW_TABLE_STATS, SQLCOM_SHOW_INDEX_STATS, SQLCOM_SHOW_CLIENT_STATS
sql/sql_parse.cc:
  Added handling of:
  - SHOW CLIENT_STATISTICS
  - SHOW USER_STATISTICS
  - SHOW TABLE_STATISTICS
  - SHOW INDEX_STATISTICS
  Added handling of new FLUSH commands:
  - FLUSH SLOW QUERY LOGS
  - FLUSH TABLE_STATISTICS
  - FLUSH INDEX_STATISTICS
  - FLUSH USER_STATISTICS
  - FLUSH CLIENT_STATISTICS
  Added THD parameter to mysql_reset_thd_for_next_command()
  Added initialization and calls to user statistics functions
  Added increment of statistics variables empty_queries, rows_sent and access_denied_errors.
  Added counting of cpu time per query
sql/sql_plugin.cc:
  Changed to use new ha_... calls
sql/sql_prepare.cc:
  Updated call to mysql_reset_thd_for_next_command()
sql/sql_select.cc:
  Changed to use new ha_... calls
  Indentation changes
sql/sql_servers.cc:
  Changed to use new ha_... calls
sql/sql_show.cc:
  Added counting of access denied errors
  Added function for new information schema tables:
  - CLIENT_STATISTICS
  - USER_STATISTICS
  - INDEX_STATISTICS
  - TABLE_STATISTICS
  Changed to use new ha_... calls
sql/sql_table.cc:
  Changed to use new ha_... calls
sql/sql_udf.cc:
  Changed to use new ha_... calls
sql/sql_update.cc:
  Changed to use new ha_... calls
sql/sql_yacc.yy:
  Add new show and flush commands
sql/structs.h:
  Add name_length to KEY to avoid some strlen
  Added cache_name to KEY for fast storage of keyvalue in cache
  Added structs USER_STATS, TABLE_STATS, INDEX_STATS
  Added function prototypes for statistics functions
sql/table.cc:
  Store db+table+index name into keyinfo->cache_name
sql/table.h:
  Added new information schema tables
sql/tztime.cc:
  Changed to use new ha_... calls
2009-10-19 20:14:48 +03:00
Igor Babaev
f7a75b999b The main commit of Andrey Zhakov's patch introducing vurtual(computed) columns.
The original patch has been ameliorated by Sanja and Igor.
2009-10-16 15:57:48 -07:00
Konstantin Osipov
9b41c7532d Backport of:
----------------------------------------------------------
revno: 2617.22.5
committer: Konstantin Osipov <kostja@sun.com>
branch nick: mysql-6.0-runtime
timestamp: Tue 2009-01-27 05:08:48 +0300
message:
  Remove non-prefixed use of HASH.
  Always use my_hash_init(), my_hash_inited(), my_hash_search(),
  my_hash_element(), my_hash_delete(), my_hash_free() rather
  than non-prefixed counterparts (hash_init(), etc).
  Remove the backward-compatible defines.
2009-10-14 20:37:38 +04:00
Konstantin Osipov
64dbe379d7 Backport of:
----------------------------------------------------------
revno: 2617.22.5
committer: Konstantin Osipov <kostja@sun.com>
branch nick: mysql-6.0-runtime
timestamp: Tue 2009-01-27 05:08:48 +0300
message:
  Remove non-prefixed use of HASH.
  Always use my_hash_init(), my_hash_inited(), my_hash_search(),
  my_hash_element(), my_hash_delete(), my_hash_free() rather
  than non-prefixed counterparts (hash_init(), etc).
  Remove the backward-compatible defines.
2009-10-14 20:37:38 +04:00
Staale Smedseng
d6ca0cbb23 Merge from 5.0 2009-09-17 17:25:52 +02:00
Staale Smedseng
5051100a1a Merge from 5.0 2009-09-17 17:25:52 +02:00
Staale Smedseng
e5888b16af Bug #43414 Parenthesis (and other) warnings compiling MySQL
with gcc 4.3.2
      
This is the fifth patch cleaning up more GCC warnings about
variables used before initialized using the new macro
UNINIT_VAR().
2009-09-17 17:10:30 +02:00
Staale Smedseng
38b6d49e82 Bug #43414 Parenthesis (and other) warnings compiling MySQL
with gcc 4.3.2
      
This is the fifth patch cleaning up more GCC warnings about
variables used before initialized using the new macro
UNINIT_VAR().
2009-09-17 17:10:30 +02:00
Kristofer Pettersson
fae95a4933 Bug#45781 infinite hang/crash in "opening tables" after handler tries to open merge
table

The MERGE table storage engine does not support the HA_CAN_SQL_HANDLE feature
and any attempt to open the merge table will fail with ER_ILLEGAL_HA.

After an error occurred the tables that was opened must be closed again
or they will be left in an inconsistent state. However, the assumption
made in the code for closing and register handler tables was that only
one table will be opened, and this is not true for MERGE tables which
will cause multiple tables to open.

The next time a SELECT operation was issued on the merge table it
caused the system to freeze.

This patch fixes this issue by making sure that all tables which
are opened also are closed in the event of an error.


mysql-test/r/merge.result:
  Added test case for bug 45781
mysql-test/t/merge.test:
  Added test case for bug 45781
sql/sql_handler.cc:
  * mysql_ha_open() was never ment to open more than one table. If we encounter more tables, we should
    close all tables related to the current substatement and raise an exception.
2009-07-16 01:23:57 +02:00
Kristofer Pettersson
c9df2a13ac Bug#45781 infinite hang/crash in "opening tables" after handler tries to open merge
table

The MERGE table storage engine does not support the HA_CAN_SQL_HANDLE feature
and any attempt to open the merge table will fail with ER_ILLEGAL_HA.

After an error occurred the tables that was opened must be closed again
or they will be left in an inconsistent state. However, the assumption
made in the code for closing and register handler tables was that only
one table will be opened, and this is not true for MERGE tables which
will cause multiple tables to open.

The next time a SELECT operation was issued on the merge table it
caused the system to freeze.

This patch fixes this issue by making sure that all tables which
are opened also are closed in the event of an error.
2009-07-16 01:23:57 +02:00
Sergey Glukhov
bf2e29d374 5.0-bugteam->5.1-bugteam merge 2009-04-17 13:46:27 +05:00
Sergey Glukhov
65e3d360f9 5.0-bugteam->5.1-bugteam merge 2009-04-17 13:46:27 +05:00
Sergey Glukhov
ff923cc82d Bug#44151 using handler commands on information_schema tables crashes server
information schema tables are based on internal tmp tables which are removed
after each statement execution. So HANDLER comands can not be used with
information schema.


mysql-test/r/handler.result:
  test result
mysql-test/t/handler.test:
  test case
sql/sql_handler.cc:
  information schema tables are based on internal tmp tables which are removed
  after each statement execution. So HANDLER comands can not be used with
  information schema.
2009-04-17 12:41:15 +05:00
Sergey Glukhov
4fbfa8db45 Bug#44151 using handler commands on information_schema tables crashes server
information schema tables are based on internal tmp tables which are removed
after each statement execution. So HANDLER comands can not be used with
information schema.
2009-04-17 12:41:15 +05:00
Ignacio Galarza
675c3ce2bb auto-merge 2009-03-19 09:44:58 -04:00
Ignacio Galarza
e82390130e auto-merge 2009-03-19 09:44:58 -04:00
Davi Arnaut
e4f4765391 Bug#41110: crash with handler command when used concurrently with alter table
Bug#41112: crash in mysql_ha_close_table/get_lock_data with alter table

The problem is that the server wasn't handling robustly failures
to re-open a table during a HANDLER .. READ statement. If the
table needed to be re-opened due to it's storage engine being
altered to one that doesn't support HANDLER, a reference (dangling
pointer) to a closed table could be left in place and accessed in
later attempts to fetch from the table using the handler. Also,
if the server failed to set a error message if the re-open
failed. These problems could lead to server crashes or hangs.

The solution is to remove any references to a closed table and
to set a error if reopening a table during a HANDLER .. READ
statement fails.

mysql-test/include/handler.inc:
  Add test case for Bug#41110 and Bug#41112
mysql-test/r/handler_innodb.result:
  Add test case result for Bug#41110 and Bug#41112
mysql-test/r/handler_myisam.result:
  Add test case result for Bug#41110 and Bug#41112
sql/sql_handler.cc:
  Remove redundant reopen check.
  Set errors even if reopening table.
  Reset TABLE_LIST::table reference when the table is closed.
2009-02-24 10:49:18 +01:00
Davi Arnaut
1959c4966e Bug#41110: crash with handler command when used concurrently with alter table
Bug#41112: crash in mysql_ha_close_table/get_lock_data with alter table

The problem is that the server wasn't handling robustly failures
to re-open a table during a HANDLER .. READ statement. If the
table needed to be re-opened due to it's storage engine being
altered to one that doesn't support HANDLER, a reference (dangling
pointer) to a closed table could be left in place and accessed in
later attempts to fetch from the table using the handler. Also,
if the server failed to set a error message if the re-open
failed. These problems could lead to server crashes or hangs.

The solution is to remove any references to a closed table and
to set a error if reopening a table during a HANDLER .. READ
statement fails.
2009-02-24 10:49:18 +01:00
Davi Arnaut
11b20f27af Bug#41110: crash with handler command when used concurrently with alter table
Bug#41112: crash in mysql_ha_close_table/get_lock_data with alter table

The problem is that the server wasn't handling robustly failures
to re-open a table during a HANDLER .. READ statement. If the
table needed to be re-opened due to it's storage engine being
altered to one that doesn't support HANDLER, a reference (dangling
pointer) to a closed table could be left in place and accessed in
later attempts to fetch from the table using the handler. Also,
if the server failed to set a error message if the re-open
failed. These problems could lead to server crashes or hangs.

The solution is to remove any references to a closed table and
to set a error if reopening a table during a HANDLER .. READ
statement fails.

There is no test case in this change set as the test depends on
a testing feature only available on 5.1 and later.

sql/sql_handler.cc:
  Remove redundant reopen check.
  Set errors even if reopening table.
  Reset TABLE_LIST::table reference when the table is closed.
2009-02-24 10:15:21 +01:00
Davi Arnaut
322a5a39ad Bug#41110: crash with handler command when used concurrently with alter table
Bug#41112: crash in mysql_ha_close_table/get_lock_data with alter table

The problem is that the server wasn't handling robustly failures
to re-open a table during a HANDLER .. READ statement. If the
table needed to be re-opened due to it's storage engine being
altered to one that doesn't support HANDLER, a reference (dangling
pointer) to a closed table could be left in place and accessed in
later attempts to fetch from the table using the handler. Also,
if the server failed to set a error message if the re-open
failed. These problems could lead to server crashes or hangs.

The solution is to remove any references to a closed table and
to set a error if reopening a table during a HANDLER .. READ
statement fails.

There is no test case in this change set as the test depends on
a testing feature only available on 5.1 and later.
2009-02-24 10:15:21 +01:00
Ignacio Galarza
54fbbf9591 Bug#29125 Windows Server X64: so many compiler warnings
- Remove bothersome warning messages.  This change focuses on the warnings 
that are covered by the ignore file: support-files/compiler_warnings.supp.
- Strings are guaranteed to be max uint in length
2009-02-10 17:47:54 -05:00
Ignacio Galarza
2b85c64d65 Bug#29125 Windows Server X64: so many compiler warnings
- Remove bothersome warning messages.  This change focuses on the warnings 
that are covered by the ignore file: support-files/compiler_warnings.supp.
- Strings are guaranteed to be max uint in length
2009-02-10 17:47:54 -05:00
unknown
9060b50f14 Rename send_eof() to my_eof() for consistency with my_ok() and my_error() 2008-02-19 15:58:08 +03:00
kostja@dipika.(none)
72495c968b Rename send_eof() to my_eof() for consistency with my_ok() and my_error() 2008-02-19 15:58:08 +03:00
unknown
14021c96c4 Rename send_ok to my_ok. Similarly to my_error, it only records the status,
does not send it to the client.
2008-02-19 15:45:21 +03:00
kostja@dipika.(none)
f106d9738a Rename send_ok to my_ok. Similarly to my_error, it only records the status,
does not send it to the client.
2008-02-19 15:45:21 +03:00
unknown
87143063d3 Bug#23713 LOCK TABLES + CREATE TRIGGER + FLUSH TABLES WITH READ LOCK = deadlock
This bug is actually two bugs in one, one of which is CREATE TRIGGER under
LOCK TABLES and the other is CREATE TRIGGER under LOCK TABLES simultaneous
to a FLUSH TABLES WITH READ LOCK (global read lock). Both situations could
lead to a server crash or deadlock.

The first problem arises from the fact that when under LOCK TABLES, if the
table is in the set of locked tables, the table is already open and it doesn't
need to be reopened (not a placeholder). Also in this case, if the table is
not write locked, a exclusive lock can't be acquired because of a possible
deadlock with another thread also holding a (read) lock on the table. The
second issue arises from the fact that one should never wait for a global
read lock if it's holding any locked tables, because the global read lock
is waiting for these tables and this leads to a circular wait deadlock.

The solution for the first case is to check if the table is write locked
and upgraded the write lock to a exclusive lock and fail otherwise for non
write locked tables. Grabbin the exclusive lock in this case also means
to ensure that the table is opened only by the calling thread. The second
issue is partly fixed by not waiting for the global read lock if the thread
is holding any locked tables.

The second issue is only partly addressed in this patch because it turned
out to be much wider and also affects other DDL statements. Reported as
Bug#32395


mysql-test/r/trigger.result:
  Add test case result for Bug#23713
mysql-test/r/trigger_notembedded.result:
  Add test case result for Bug#23713
mysql-test/t/trigger.test:
  Add test case for Bug#23713
mysql-test/t/trigger_notembedded.test:
  Add test case for Bug#23713
sql/mysql_priv.h:
  Locally export wait_while_table_is_used and name_lock_locked_table
  and add flag to mysql_ha_rm_tables to signal that LOCK_open is locked.
sql/sql_base.cc:
  Introduce name_lock_locked_table function and match
  close_old_data_files function declaration and definition.
sql/sql_handler.cc:
  Add flag to mysql_ha_rm_tables to signal that LOCK_open is locked.
sql/sql_rename.cc:
  Fix mysql_ha_rm_tables caller.
sql/sql_table.cc:
  Export wait_while_table_is_used and assert that LOCK_open is locked
  and fix mysql_ha_rm_tables caller.
sql/sql_trigger.cc:
  Upgrade write locked tables to a exclusive lock and fail if
  the table is not write locked. Also, don't wait for the global
  read lock if under LOCK TABLES.
2007-11-29 09:42:26 -02:00
davi@mysql.com/endora.local
d179bb64c2 Bug#23713 LOCK TABLES + CREATE TRIGGER + FLUSH TABLES WITH READ LOCK = deadlock
This bug is actually two bugs in one, one of which is CREATE TRIGGER under
LOCK TABLES and the other is CREATE TRIGGER under LOCK TABLES simultaneous
to a FLUSH TABLES WITH READ LOCK (global read lock). Both situations could
lead to a server crash or deadlock.

The first problem arises from the fact that when under LOCK TABLES, if the
table is in the set of locked tables, the table is already open and it doesn't
need to be reopened (not a placeholder). Also in this case, if the table is
not write locked, a exclusive lock can't be acquired because of a possible
deadlock with another thread also holding a (read) lock on the table. The
second issue arises from the fact that one should never wait for a global
read lock if it's holding any locked tables, because the global read lock
is waiting for these tables and this leads to a circular wait deadlock.

The solution for the first case is to check if the table is write locked
and upgraded the write lock to a exclusive lock and fail otherwise for non
write locked tables. Grabbin the exclusive lock in this case also means
to ensure that the table is opened only by the calling thread. The second
issue is partly fixed by not waiting for the global read lock if the thread
is holding any locked tables.

The second issue is only partly addressed in this patch because it turned
out to be much wider and also affects other DDL statements. Reported as
Bug#32395
2007-11-29 09:42:26 -02:00
unknown
4d6543a6f0 Bug#31397 Inconsistent drop table behavior of handler tables.
The problem is that DROP TABLE and other DDL statements failed to
automatically close handlers associated with tables that were marked
for reopen (FLUSH TABLES).

The current implementation fails to properly discard handlers of
dropped tables (that were marked for reopen) because it searches
on the open handler tables list and using the current alias of the
table being dropped. The problem is that it must not use the open
handler tables list to search because the table might have been
closed (marked for reopen) by a flush tables command and also it
must not use the current table alias at all since multiple different
aliases may be associated with a single table. This is specially
visible when a user has two open handlers (using alias) of a same
table and a flush tables command is issued before the table is
dropped (see test case). Scanning the handler table list is also
useless for dropping handlers associated with temporary tables,
because temporary tables are not kept in the THD::handler_tables
list.

The solution is to simple scan the handlers hash table searching
for, and deleting all handlers with matching table names if the
reopen flag is not passed to the flush function, indicating that
the handlers should be deleted. All matching handlers are deleted
even if the associated the table is not open.


mysql-test/include/handler.inc:
  Add test case for Bug#31397
mysql-test/r/handler_innodb.result:
  Add test case result for Bug#31397
mysql-test/r/handler_myisam.result:
  Add test case result for Bug#31397
sql/mysql_priv.h:
  Rename flush functions to better match the intent of the caller and
  update functions prototypes and remove unused flags.
sql/sql_base.cc:
  Rename flush functions to better match the intent of the caller.
sql/sql_class.cc:
  Rename the flush functions to better match the intent of the caller.
  The hash_free function is moved to the cleanup.
sql/sql_handler.cc:
  When dropping tables for a final close, scan the handler's hash table since
  the table might not be in the handlers open table list because the table was
  marked for reopen or because it's a temporary table.
sql/sql_rename.cc:
  Drop handlers associated with tables that are being renamed.
sql/sql_table.cc:
  Now that temporary tables are properly removed even when opened
  by a SQL HANDLER, enable the assert since this branch can't be taken
  outside of SF/trigger/prelocked mode.
2007-11-20 15:17:53 -02:00
davi@endora.local
94e6e4ff44 Bug#31397 Inconsistent drop table behavior of handler tables.
The problem is that DROP TABLE and other DDL statements failed to
automatically close handlers associated with tables that were marked
for reopen (FLUSH TABLES).

The current implementation fails to properly discard handlers of
dropped tables (that were marked for reopen) because it searches
on the open handler tables list and using the current alias of the
table being dropped. The problem is that it must not use the open
handler tables list to search because the table might have been
closed (marked for reopen) by a flush tables command and also it
must not use the current table alias at all since multiple different
aliases may be associated with a single table. This is specially
visible when a user has two open handlers (using alias) of a same
table and a flush tables command is issued before the table is
dropped (see test case). Scanning the handler table list is also
useless for dropping handlers associated with temporary tables,
because temporary tables are not kept in the THD::handler_tables
list.

The solution is to simple scan the handlers hash table searching
for, and deleting all handlers with matching table names if the
reopen flag is not passed to the flush function, indicating that
the handlers should be deleted. All matching handlers are deleted
even if the associated the table is not open.
2007-11-20 15:17:53 -02:00
unknown
611dbd0bb3 Bug#30882 Dropping a temporary table inside a stored function may cause a server crash
If a stored function that contains a drop temporary table statement
is invoked by a create temporary table of the same name may cause
a server crash. The problem is that when dropping a table no check
is done to ensure that table is not being used by some outer query
(or outer statement), potentially leaving the outer query with a
reference to a stale (freed) table.

The solution is when dropping a temporary table, always check if
the table is being used by some outer statement as a temporary
table can be dropped inside stored procedures.

The check is performed by looking at the TABLE::query_id value for
temporary tables. To simplify this check and to solve a bug related
to handling of temporary tables in prelocked mode, this patch changes
the way in which this member is used to track the fact that table is
used/unused. Now we ensure that TABLE::query_id is zero for unused
temporary tables (which means that all temporary tables which were
used by a statement should be marked as free for reuse after it's
execution has been completed).


mysql-test/include/handler.inc:
  Add test case for side effect of Bug#30882
mysql-test/r/handler_innodb.result:
  Add test case result for side effect of Bug#30882
mysql-test/r/handler_myisam.result:
  Add test case result for side effect of Bug#30882
mysql-test/r/sp-error.result:
  Add test case result for Bug#30882
mysql-test/t/sp-error.test:
  Add test case for Bug#30882
sql/event_db_repository.cc:
  Update close_thread_tables call, no more default values.
sql/mysql_priv.h:
  Remove implicit default parameters values of the close_thread_tables
  function as no callers are using it.
sql/slave.cc:
  Update close_thread_tables call, no more default values
sql/sp_head.cc:
  Update close_thread_tables call, no more default values
sql/sql_base.cc:
  Changed the approach to distinguishing currently unused temporary tables.
  Now we ensure that such tables always have TABLE::query_id set to 0 and
  use this fact to perform checks during opening and dropping of temporary
  tables. This means that we have to call close_thread_tables() even for
  statements which use only temporary tables. To make this call cheaper,
  we re-factored close_thread_tables() to not take LOCK_open unless there
  are open base tables.
sql/sql_handler.cc:
  Properly close temporary tables associated with a handler.
sql/sql_insert.cc:
  close_temporary_table is now merged into drop_temporary_table.
sql/sql_parse.cc:
  Now the condition doesn't cover all cases because close_thread_tables()
  must be called even for statements that use only temporary tables.
sql/sql_table.cc:
  Use drop_temporary_table which perform checks to verify if
  the table is not being used. Error path problem is due to
  a handler tables issue and is going to be addressed in bug
  31397.
sql/table.h:
  Rename previously unused clear_query_id and document the usage of
  query_id and open_by_handler.
2007-11-01 18:52:56 -02:00
davi@endora.local
cc007acb78 Bug#30882 Dropping a temporary table inside a stored function may cause a server crash
If a stored function that contains a drop temporary table statement
is invoked by a create temporary table of the same name may cause
a server crash. The problem is that when dropping a table no check
is done to ensure that table is not being used by some outer query
(or outer statement), potentially leaving the outer query with a
reference to a stale (freed) table.

The solution is when dropping a temporary table, always check if
the table is being used by some outer statement as a temporary
table can be dropped inside stored procedures.

The check is performed by looking at the TABLE::query_id value for
temporary tables. To simplify this check and to solve a bug related
to handling of temporary tables in prelocked mode, this patch changes
the way in which this member is used to track the fact that table is
used/unused. Now we ensure that TABLE::query_id is zero for unused
temporary tables (which means that all temporary tables which were
used by a statement should be marked as free for reuse after it's
execution has been completed).
2007-11-01 18:52:56 -02:00
unknown
7c25308aa4 Merge moksha.com.br:/Users/davi/mysql/bugs/post-rename-5.0
into  moksha.com.br:/Users/davi/mysql/mysql-5.1-runtime


sql/sql_handler.cc:
  Auto merged
2007-10-12 10:56:50 -03:00
davi@moksha.com.br
0eea821636 Merge moksha.com.br:/Users/davi/mysql/bugs/post-rename-5.0
into  moksha.com.br:/Users/davi/mysql/mysql-5.1-runtime
2007-10-12 10:56:50 -03:00
unknown
4eb4b37cfa Bug#31409 RENAME TABLE causes server crash or deadlock when used with HANDLER statements
If mysql_lock_tables fails because the lock was aborted, we need to
reset thd->some_tables_delete, otherwise we might loop indefinitely
because handler's tables are not closed in a standard way, meaning
that close_thread_tables() (which resets some_tables_deleted) is not
used.

This patch fixes sporadical failures of handler_myisam/innodb tests
which were introduced by previous fix for this bug.


sql/sql_handler.cc:
  Properly reset thd->some_tables_deleted if mysql_lock_tables
  fails for some reason.
2007-10-12 10:55:46 -03:00
davi@moksha.com.br
b92f3309f1 Bug#31409 RENAME TABLE causes server crash or deadlock when used with HANDLER statements
If mysql_lock_tables fails because the lock was aborted, we need to
reset thd->some_tables_delete, otherwise we might loop indefinitely
because handler's tables are not closed in a standard way, meaning
that close_thread_tables() (which resets some_tables_deleted) is not
used.

This patch fixes sporadical failures of handler_myisam/innodb tests
which were introduced by previous fix for this bug.
2007-10-12 10:55:46 -03:00
unknown
b24d4a977f Merge moksha.com.br:/Users/davi/mysql/mysql-5.0-runtime
into  moksha.com.br:/Users/davi/mysql/bugs/31409-5.1


sql/sql_base.cc:
  Auto merged
sql/sql_handler.cc:
  Auto merged
2007-10-10 21:16:53 -03:00
davi@moksha.com.br
9f088628eb Merge moksha.com.br:/Users/davi/mysql/mysql-5.0-runtime
into  moksha.com.br:/Users/davi/mysql/bugs/31409-5.1
2007-10-10 21:16:53 -03:00
unknown
954bb0f555 Merge moksha.com.br:/Users/davi/mysql/bugs/21587-5.0
into  moksha.com.br:/Users/davi/mysql/bugs/21587-5.1


sql/sql_handler.cc:
  Auto merged
2007-10-10 18:17:11 -03:00
davi@moksha.com.br
f74f363aac Merge moksha.com.br:/Users/davi/mysql/bugs/21587-5.0
into  moksha.com.br:/Users/davi/mysql/bugs/21587-5.1
2007-10-10 18:17:11 -03:00
unknown
f57813e457 Bug#31409 RENAME TABLE causes server crash or deadlock when used with HANDLER statements
This deadlock occurs when a client issues a HANDLER ... OPEN statement
that tries to open a table that has a pending name-lock on it by another
client that also needs a name-lock on some other table which is already
open and associated to a HANDLER instance owned by the first client.
The deadlock happens because the open_table() function will back-off
and wait until the name-lock goes away, causing a circular wait if some
other name-lock is also pending for one of the open HANDLER tables.

Such situation, for example, can be easily repeated by issuing a RENAME
TABLE command in such a way that the existing table is already open
as a HANDLER table by another client and this client tries to open
a HANDLER to the new table name.

The solution is to allow handler tables with older versions (marked for
flush) to be closed before waiting for the name-lock completion. This is
safe because no other name-lock can be issued between the flush and the
check for pending name-locks.

The test case for this bug is going to be committed into 5.1 because it
requires a test feature only avaiable in 5.1 (wait_condition).


sql/sql_base.cc:
  Improve comments in the open_table() function, stating the importance
  of the handler tables flushing for the back-off process.
sql/sql_handler.cc:
  Allows handler tables flushes when opening new tables in order to avoid
  potential deadlocks. Add comments explaining the importance of the flush.
2007-10-09 12:02:59 -03:00
davi@moksha.local
7252cbe1e0 Bug#31409 RENAME TABLE causes server crash or deadlock when used with HANDLER statements
This deadlock occurs when a client issues a HANDLER ... OPEN statement
that tries to open a table that has a pending name-lock on it by another
client that also needs a name-lock on some other table which is already
open and associated to a HANDLER instance owned by the first client.
The deadlock happens because the open_table() function will back-off
and wait until the name-lock goes away, causing a circular wait if some
other name-lock is also pending for one of the open HANDLER tables.

Such situation, for example, can be easily repeated by issuing a RENAME
TABLE command in such a way that the existing table is already open
as a HANDLER table by another client and this client tries to open
a HANDLER to the new table name.

The solution is to allow handler tables with older versions (marked for
flush) to be closed before waiting for the name-lock completion. This is
safe because no other name-lock can be issued between the flush and the
check for pending name-locks.

The test case for this bug is going to be committed into 5.1 because it
requires a test feature only avaiable in 5.1 (wait_condition).
2007-10-09 12:02:59 -03:00
unknown
f5dd3491f2 Bug#21587 FLUSH TABLES causes server crash when used with HANDLER statements
This bug is a symptom of the way handler's tables are managed. The
most different aspect, compared to the conventional behavior, is that
the handler's tables are long lived, meaning that their lifetimes are
not bounded by the duration of the command that opened them. For this
effect the handler code uses its own list (handler_tables instead of
open_tables) to hold open handler tables so that the tables won't be
closed at the end of the command/statement. Besides the handler_tables
list, there is a hash (handler_tables_hash) which is used to associate
handler aliases to tables and to refresh the tables upon demand (flush
tables).

The current implementation doesn't work properly with refreshed tables
-- more precisely when flush commands are issued by other initiators.
This happens because when a handler open or read statement is being
processed, the associated table has to be opened or locked and, for this
matter, the open_tables and handler_tables lists are swapped so that the
new table being opened is inserted into the handler_tables list. But when
opening or locking the table, if the refresh version is different from the
thread refresh version then all used tables in the open_tables list (now
handler_tables) are refreshed. In the "refreshing" process the handler
tables are flushed (closed) without being properly unlinked from the
handler hash.

The current implementation also fails to properly discard handlers of
dropped tables, but this and other problems are going to be addressed
in the fixes for bugs 31397 and 31409.

The chosen approach tries to properly save and restore the table state
so that no table is flushed during the table open and lock operations.
The logic is almost the same as before with the list swapping, but with
a working glue code.

The test case for this bug is going to be committed into 5.1 because it
requires a test feature only avaiable in 5.1 (wait_condition).


sql/sql_handler.cc:
  Backup and reset the open_tables and handler_table lists when opening
  a new handler table and merge the opened table into the handler_tables
  list afterwards. When locking, do the same but possibly close the table
  if a refresh is pending.
2007-10-04 17:34:41 -03:00
davi@moksha.local
305ebc1e21 Bug#21587 FLUSH TABLES causes server crash when used with HANDLER statements
This bug is a symptom of the way handler's tables are managed. The
most different aspect, compared to the conventional behavior, is that
the handler's tables are long lived, meaning that their lifetimes are
not bounded by the duration of the command that opened them. For this
effect the handler code uses its own list (handler_tables instead of
open_tables) to hold open handler tables so that the tables won't be
closed at the end of the command/statement. Besides the handler_tables
list, there is a hash (handler_tables_hash) which is used to associate
handler aliases to tables and to refresh the tables upon demand (flush
tables).

The current implementation doesn't work properly with refreshed tables
-- more precisely when flush commands are issued by other initiators.
This happens because when a handler open or read statement is being
processed, the associated table has to be opened or locked and, for this
matter, the open_tables and handler_tables lists are swapped so that the
new table being opened is inserted into the handler_tables list. But when
opening or locking the table, if the refresh version is different from the
thread refresh version then all used tables in the open_tables list (now
handler_tables) are refreshed. In the "refreshing" process the handler
tables are flushed (closed) without being properly unlinked from the
handler hash.

The current implementation also fails to properly discard handlers of
dropped tables, but this and other problems are going to be addressed
in the fixes for bugs 31397 and 31409.

The chosen approach tries to properly save and restore the table state
so that no table is flushed during the table open and lock operations.
The logic is almost the same as before with the list swapping, but with
a working glue code.

The test case for this bug is going to be committed into 5.1 because it
requires a test feature only avaiable in 5.1 (wait_condition).
2007-10-04 17:34:41 -03:00
unknown
89d3d58511 Merge weblab.(none):/home/marcsql/TREE/mysql-5.1-base
into  weblab.(none):/home/marcsql/TREE/mysql-5.1-rt50-merge


client/mysql.cc:
  Auto merged
mysql-test/r/query_cache.result:
  Auto merged
mysql-test/t/query_cache.test:
  Auto merged
sql/item_cmpfunc.h:
  Auto merged
sql/sp.cc:
  Auto merged
sql/sp_head.cc:
  Auto merged
sql/sql_class.h:
  Auto merged
sql/sql_db.cc:
  Auto merged
sql/sql_handler.cc:
  Auto merged
sql/sql_lex.cc:
  Auto merged
sql/sql_lex.h:
  Auto merged
sql/sql_yacc.yy:
  Auto merged
2007-08-30 13:23:59 -06:00
malff/marcsql@weblab.(none)
2482c59740 Merge weblab.(none):/home/marcsql/TREE/mysql-5.1-base
into  weblab.(none):/home/marcsql/TREE/mysql-5.1-rt50-merge
2007-08-30 13:23:59 -06:00
unknown
30678bc067 Merge moksha.local:/Users/davi/mysql/push/bugs/old/30632-5.0
into  moksha.local:/Users/davi/mysql/push/bugs/30632-5.1


sql/sql_handler.cc:
  Auto merged
mysql-test/include/handler.inc:
  Auto merged
mysql-test/r/handler_myisam.result:
  Auto merged
2007-08-29 18:32:19 -03:00
davi@moksha.local
68047f7f88 Merge moksha.local:/Users/davi/mysql/push/bugs/old/30632-5.0
into  moksha.local:/Users/davi/mysql/push/bugs/30632-5.1
2007-08-29 18:32:19 -03:00
unknown
34ded62908 Bug#30632 HANDLER read failure causes hang
If, after the tables are locked, one of the conditions to read from a
HANDLER table is not met, the handler code wrongly jumps to a error path
that won't unlock the tables.

The user-visible effect is that after a error in a handler read command,
all subsequent handler operations on the same table will hang.

The fix is simply to correct the code to jump to the (same) error path that
unlocks the tables.


mysql-test/r/handler.result:
  Bug#30632 test case result
mysql-test/t/handler.test:
  Bug#30632 test case
sql/sql_handler.cc:
  Always unlock the internal and external table level locks if any of the conditions
  (including errors) to read from a HANDLER table are not met.
2007-08-27 10:37:12 -03:00
davi@moksha.local
77d78a883f Bug#30632 HANDLER read failure causes hang
If, after the tables are locked, one of the conditions to read from a
HANDLER table is not met, the handler code wrongly jumps to a error path
that won't unlock the tables.

The user-visible effect is that after a error in a handler read command,
all subsequent handler operations on the same table will hang.

The fix is simply to correct the code to jump to the (same) error path that
unlocks the tables.
2007-08-27 10:37:12 -03:00
unknown
b3dd7d5ca6 Merge hynda.mysql.fi:/home/my/mysql-5.1-main
into  hynda.mysql.fi:/home/my/mysql-5.1-marvel


client/mysqldump.c:
  Auto merged
sql/event_db_repository.cc:
  Auto merged
sql/event_queue.cc:
  Auto merged
sql/field.cc:
  Auto merged
sql/item.cc:
  Auto merged
sql/item_subselect.cc:
  Auto merged
sql/log_event.h:
  Auto merged
sql/sp.cc:
  Auto merged
sql/sql_class.cc:
  Auto merged
sql/sql_db.cc:
  Auto merged
sql/sql_handler.cc:
  Auto merged
sql/sql_lex.cc:
  Auto merged
sql/sql_plugin.cc:
  Auto merged
sql/sql_select.cc:
  Auto merged
sql/sql_show.cc:
  Auto merged
sql/table.h:
  Auto merged
sql/sql_yacc.yy:
  Manual merge with 5.1 main tree.
2007-08-22 17:29:38 +03:00
jani@hynda.mysql.fi
6519de0469 Merge hynda.mysql.fi:/home/my/mysql-5.1-main
into  hynda.mysql.fi:/home/my/mysql-5.1-marvel
2007-08-22 17:29:38 +03:00
unknown
b8381eb964 Merge hynda.mysql.fi:/home/my/mysql-5.1-main
into  hynda.mysql.fi:/home/my/mysql-5.1-marvel


mysql-test/mysql-test-run.pl:
  Auto merged
sql/field.cc:
  Auto merged
sql/handler.cc:
  Auto merged
sql/item_func.cc:
  Auto merged
sql/log.cc:
  Auto merged
sql/log_event_old.cc:
  Auto merged
sql/mysql_priv.h:
  Auto merged
sql/mysqld.cc:
  Auto merged
sql/sp_head.cc:
  Auto merged
sql/sql_class.cc:
  Auto merged
sql/sql_class.h:
  Auto merged
sql/sql_handler.cc:
  Auto merged
sql/sql_insert.cc:
  Auto merged
sql/sql_select.cc:
  Auto merged
sql/sql_string.cc:
  Auto merged
sql/sql_table.cc:
  Auto merged
mysql-test/r/status.result:
  Manual merge with main 5.0 tree.
mysql-test/t/status.test:
  Manual merge with main 5.0 tree.
sql/log_event.cc:
  Manual merge with main 5.0 tree.
sql/log_event.h:
  Manual merge with main 5.0 tree.
2007-08-21 19:03:28 +03:00
jani@hynda.mysql.fi
2fd7a743e4 Merge hynda.mysql.fi:/home/my/mysql-5.1-main
into  hynda.mysql.fi:/home/my/mysql-5.1-marvel
2007-08-21 19:03:28 +03:00
unknown
780590641d Merge weblab.(none):/home/marcsql/TREE/mysql-5.1-base
into  weblab.(none):/home/marcsql/TREE/mysql-5.1-rt-merge


sql/field.cc:
  Auto merged
sql/field.h:
  Auto merged
sql/log_event.h:
  Auto merged
sql/rpl_record.cc:
  Auto merged
sql/slave.h:
  Auto merged
sql/sql_base.cc:
  Auto merged
sql/sql_class.cc:
  Auto merged
sql/sql_handler.cc:
  Auto merged
sql/sql_parse.cc:
  Auto merged
sql/sql_select.cc:
  Auto merged
2007-08-20 11:13:31 -06:00
malff/marcsql@weblab.(none)
1c27dd1d67 Merge weblab.(none):/home/marcsql/TREE/mysql-5.1-base
into  weblab.(none):/home/marcsql/TREE/mysql-5.1-rt-merge
2007-08-20 11:13:31 -06:00
unknown
3c52b2b3a8 Merge weblab.(none):/home/marcsql/TREE/mysql-5.0-base
into  weblab.(none):/home/marcsql/TREE/mysql-5.0-rt-merge


sql/sql_base.cc:
  Auto merged
sql/sql_handler.cc:
  Auto merged
2007-08-20 10:45:16 -06:00
malff/marcsql@weblab.(none)
8d507c5897 Merge weblab.(none):/home/marcsql/TREE/mysql-5.0-base
into  weblab.(none):/home/marcsql/TREE/mysql-5.0-rt-merge
2007-08-20 10:45:16 -06:00
unknown
8bdb043f08 Bug#25856 (HANDLER table OPEN in one connection lock DROP TABLE in another one)
mysql_ha_open calls mysql_ha_close on the error path (unsupported) to close the (opened) table before inserting it into the tables hash list handler_tables_hash) but mysql_ha_close only closes tables which are on the hash list, causing the table to be left open and locked.

This change moves the table close logic into a separate function that is always called on the error path of mysql_ha_open or on a normal handler close (mysql_ha_close).


mysql-test/r/lock_multi.result:
  Bug#25856 test result
mysql-test/t/lock_multi.test:
  Bug#25856 test case
sql/sql_handler.cc:
  Move the table close logic into a separate function that is always called on the error path of mysql_ha_open or on a normal handler close.
2007-08-17 11:34:12 -03:00
davi@moksha.local
a63738db6c Bug#25856 (HANDLER table OPEN in one connection lock DROP TABLE in another one)
mysql_ha_open calls mysql_ha_close on the error path (unsupported) to close the (opened) table before inserting it into the tables hash list handler_tables_hash) but mysql_ha_close only closes tables which are on the hash list, causing the table to be left open and locked.

This change moves the table close logic into a separate function that is always called on the error path of mysql_ha_open or on a normal handler close (mysql_ha_close).
2007-08-17 11:34:12 -03:00
unknown
430df009a0 Merge ramayana.hindu.god:/home/tsmith/m/bk/maint/50
into  ramayana.hindu.god:/home/tsmith/m/bk/maint/51


sql/mysql_priv.h:
  Auto merged
sql/sql_base.cc:
  SCCS merged
sql/sql_handler.cc:
  SCCS merged
2007-08-16 12:03:49 -06:00
tsmith@ramayana.hindu.god
18ffae6ab6 Merge ramayana.hindu.god:/home/tsmith/m/bk/maint/50
into  ramayana.hindu.god:/home/tsmith/m/bk/maint/51
2007-08-16 12:03:49 -06:00
unknown
163420d2d7 Bug #29474: 21587 Regression Ever increasing open tables/fd when using HANDLER READ + DELETE
Revert the fix for bug 21587.  That bug will be re-opened, and a new
fix must be created.
2007-08-16 10:56:09 -06:00
tsmith@ramayana.hindu.god
49891223c3 Bug #29474: 21587 Regression Ever increasing open tables/fd when using HANDLER READ + DELETE
Revert the fix for bug 21587.  That bug will be re-opened, and a new
fix must be created.
2007-08-16 10:56:09 -06:00
unknown
a0ed0ea128 Rework doxygen documentation for the function mysql_ha_close_table.
sql/sql_handler.cc:
  Add missing parameter to the @param tag and fix style.
2007-08-15 17:12:09 -03:00
davi@moksha.local
d4aad35095 Rework doxygen documentation for the function mysql_ha_close_table. 2007-08-15 17:12:09 -03:00
unknown
9c1ffac09a Bug#25856 (HANDLER table OPEN in one connection lock DROP TABLE in another one)
mysql_ha_open calls mysql_ha_close on the error path (unsupported) to close the (opened) table before inserting it into the tables hash list handler_tables_hash) but mysql_ha_close only closes tables which are on the hash list, causing the table to be left open and locked.

This change moves the table close logic into a separate function that is always called on the error path of mysql_ha_open or on a normal handler close (mysql_ha_close).


mysql-test/r/handler.result:
  Bug#25856 test result
mysql-test/t/handler.test:
  Bug#25856 test case
sql/sql_handler.cc:
  Move the table close logic into a separate function that is always called on the error path of mysql_ha_open or on a normal handler close
2007-08-15 12:13:34 -03:00
davi@moksha.local
c290b26c0e Bug#25856 (HANDLER table OPEN in one connection lock DROP TABLE in another one)
mysql_ha_open calls mysql_ha_close on the error path (unsupported) to close the (opened) table before inserting it into the tables hash list handler_tables_hash) but mysql_ha_close only closes tables which are on the hash list, causing the table to be left open and locked.

This change moves the table close logic into a separate function that is always called on the error path of mysql_ha_open or on a normal handler close (mysql_ha_close).
2007-08-15 12:13:34 -03:00
unknown
09a53f28a7 Fixed a lot of compiler warnings and errors detected by Forte C++ on Solaris
Faster thr_alarm()
Added 'Opened_files' status variable to track calls to my_open()
Don't give warnings when running mysql_install_db
Added option --source-install to mysql_install_db

I had to do the following renames() as used polymorphism didn't work with Forte compiler on 64 bit systems
index_read()      -> index_read_map()
index_read_idx()  -> index_read_idx_map()
index_read_last() -> index_read_last_map()


BUILD/compile-solaris-sparc-forte:
  Updated script to current Solaris installations
  Now we compile by default for 64 bits
client/mysql.cc:
  Declare functions sent to C code with extern "C" to avoid compiler warnings (on Forte)
client/mysql_upgrade.c:
  Fixed compiler warning (on Forte)
client/mysqladmin.cc:
  Declare functions sent to C code with extern "C" to avoid compiler warnings (on Forte)
client/mysqlcheck.c:
  Fixed compiler warning (on Forte)
client/mysqldump.c:
  Fixed compiler warning (on Forte)
client/mysqlslap.c:
  Fixed compiler warning (on Forte)
client/mysqltest.c:
  Fixed compiler warning (on Forte)
client/sql_string.cc:
  Avoid compiler warnings when using C function pointers in C++
configure.in:
  Added detection of mtmalloc and ieeefp.h
extra/replace.c:
  Fixed compiler warning (on Forte)
include/m_ctype.h:
  Added some typedef's to make it easy to use C function pointers in C++
include/my_sys.h:
  Added my_file_total_opened (counter for calls to my_open())
include/myisam.h:
  Fixed compiler warning (on Forte)
libmysql/libmysql.c:
  Fixed compiler warning (on Forte) by adding casts and change types
libmysql/manager.c:
  Fixed compiler warning (on Forte) by adding casts and change types
mysql-test/r/ctype_cp932_binlog_stm.result:
  Updated positions
  (Needed because we didn't before correctly restore collation_database after running stored procedure
mysys/my_fopen.c:
  Count number of opened files
mysys/my_open.c:
  Count number of opened files
mysys/my_static.c:
  Count number of opened files
mysys/thr_alarm.c:
  Optimization to do less alarm() and pthread_sigmask() calls.
  Idea is to remember time for next pending alarm and not reschedule a new alarm if it's after the current one.
  Before we only did this if there was other pending alarms.
  We don't have to use pthread_sigmask() in case of 'USE_ONE_SIGNAL_HAND' as the alarm()
  signal will be blocked for the calling thread anyway and no other thread will have the alarm() signal enabled to call process_alarm()
regex/regcomp.c:
  Fixed compiler warning (on Forte) by adding casts and change types
scripts/mysql_install_db.sh:
  Added option --source-install to allow one to create a mysql database from the source tree without installing MySQL
  Don't give (unnecessary) warnings
server-tools/instance-manager/angel.cc:
  Declare functions sent to C code with extern "C" to avoid compiler warnings (on Forte)
server-tools/instance-manager/thread_registry.cc:
  Declare functions sent to C code with extern "C" to avoid compiler warnings (on Forte)
sql/event_db_repository.cc:
  index_read() -> index_read_map()
sql/event_queue.cc:
  Declare functions sent to C code with extern "C" to avoid compiler warnings (on Forte)
sql/field.cc:
  Fixed compiler warnings about hidden fields
sql/ha_partition.cc:
  Fixed compiler warnings about hidden fields
  index_read() -> index_read_map()
sql/ha_partition.h:
  index_read() -> index_read_map()
sql/handler.cc:
  Added PAGE option to row types (to prepare for future)
  index_read() -> index_read_map()
sql/handler.h:
  Added ROW_TYPE_PAGE (for future)
  Added flag to signal if table was to be created transactionally
  I had to do the following renames() as used polymorphism didn't work with Forte compiler on 64 bit systems
  index_read()      -> index_read_map()
  index_read_idx()  -> index_read_idx_map()
  index_read_last() -> index_read_last_map()
sql/item.cc:
  Fixed indentation
  Renamed local variable to avoid hiding class variable
sql/item_cmpfunc.cc:
  Renamed local variable to avoid hiding class variable
sql/item_cmpfunc.h:
  Removed not used variable
sql/item_func.cc:
  Renamed local variable to avoid hiding class variable
sql/item_strfunc.cc:
  Moved functions from Item_strfunc.cc
sql/item_strfunc.h:
  Move functions to item_strfunc.cc
  Use C function pointer type to avoid compiler warnings (with Forte)
sql/item_subselect.cc:
  index_read() -> index_read_map()
sql/item_xmlfunc.cc:
  Renamed local variable to avoid hiding class variable
  Declare functions sent to C code with extern "C" to avoid compiler warnings (on Forte)
sql/key.cc:
  Fixed indentation
sql/log.cc:
  Renamed local variable to avoid hiding class variable
sql/log_event.cc:
  Removed call to my_time() when creating class instance of Log_event() as this may have static instances.
  (One can't call my_time() before my_init())
  index_read() -> index_read_map()
  Renamed local variable to avoid hiding class variable
sql/log_event_old.cc:
  Renamed local variable to avoid hiding class variable
sql/mysql_priv.h:
  Made all create_backup_ctx() declarations identical.
  This lifted up a bug where wrong create_backup_ctx() was called in some cases.
  Declare functions sent to C code with extern "C" to avoid compiler warnings (on Forte)
sql/mysqld.cc:
  Declare functions sent to C code with extern "C" to avoid compiler warnings (on Forte)
  Fixed indentation
  Don't call end_thr_alarm() when calling unireg_abort() as unireg_abort() already calls end_thr_alarm()
  Added variable 'Opened_files' (number of calls to my_open() or my_fopen())
  Don't print 'loose' warnings when using --bootstrap (to avoid warnings when running mysql_install_db)
  Fixed compiler warnings
sql/opt_range.cc:
  index_read() -> index_read_map()
sql/opt_sum.cc:
  index_read() -> index_read_map()
sql/partition_info.cc:
  Renamed local variable to avoid hiding class variable
sql/rpl_filter.cc:
  Declare functions sent to C code with extern "C" to avoid compiler warnings (on Forte)
sql/set_var.cc:
  Renamed local variable to avoid hiding class variable
  Added 'process_key_cache_t' type to avoid compiler warning (on Forte)
sql/set_var.h:
  Added 'process_key_cache_t' type to avoid compiler warning (on Forte)
sql/sp.cc:
  More debugging
  index_read() -> index_read_map()
sql/sp_cache.cc:
  Declare functions sent to C code with extern "C" to avoid compiler warnings (on Forte)
sql/sp_head.cc:
  Declare functions sent to C code with extern "C" to avoid compiler warnings (on Forte)
  Moved 'saved_creation_ctx' higher up to be able to free objects allocated by create_backup_ctx()
sql/sql_acl.cc:
  index_read() -> index_read_map()
sql/sql_class.cc:
  Renamed local variable to avoid hiding class variable
  Declare functions sent to C code with extern "C" to avoid compiler warnings (on Forte)
sql/sql_class.h:
  Renamed local variable to avoid hiding class variable
sql/sql_db.cc:
  Declare functions sent to C code with extern "C" to avoid compiler warnings (on Forte)
sql/sql_delete.cc:
  Renamed local variable to avoid hiding class variable
sql/sql_handler.cc:
  index_read() -> index_read_map()
sql/sql_help.cc:
  index_read() -> index_read_map()
sql/sql_insert.cc:
  index_read() -> index_read_map()
  Renamed local variable to avoid hiding class variable
sql/sql_lex.cc:
  Renamed local variable to avoid hiding class variable
sql/sql_plugin.cc:
  Declare functions sent to C code with extern "C" to avoid compiler warnings (on Forte)
  index_read() -> index_read_map()
  Don't give warnings about not used plugins if we are using --warnings=0
sql/sql_select.cc:
  index_read() -> index_read_map()
sql-common/client.c:
  Fixed compiler warning (on Forte)
sql-common/my_time.c:
  Removed never accessed code
  Fixed compiler warning (on Forte)
sql/sql_servers.cc:
  index_read() -> index_read_map()
sql/sql_show.cc:
  Added TRANSACTIONAL to SHOW CREATE
  Fixed ROW_TYPE_PAGE
sql/sql_string.cc:
  Avoid compiler warnings when using C function pointers in C++
sql/sql_table.cc:
  Set create_info->transactional if we used TRANSACTIONAL=1
sql/sql_udf.cc:
  index_read() -> index_read_map()
sql/sql_yacc.yy:
  Added TRANSACTIONAL=0|1 to CREATE (for future)
  Added row type PAGE (was only partionally handled before)
sql/strfunc.cc:
  Avoid compiler warnings when using C function pointers in C++
sql/table.cc:
  More DBUG statements
  Declare all create_backup_ctx() functions identically
  Remember if table was created with TRANSACTIONAL flag or not (future safe)
  Renamed local variable to avoid hiding class variable
sql/table.h:
  Remember if table was created with TRANSACTIONAL=1
sql/tztime.cc:
  index_read() -> index_read_map()
sql-common/pack.c:
  Fixed compiler warning (on Forte)
storage/archive/archive_reader.c:
  Fixed compiler warning (on Forte)
storage/archive/azio.c:
  Fixed compiler warning (on Forte)
storage/blackhole/ha_blackhole.cc:
  index_read() -> index_read_map()
storage/blackhole/ha_blackhole.h:
  index_read() -> index_read_map()
storage/csv/ha_tina.cc:
  Declare functions sent to C code with extern "C" to avoid compiler warnings (on Forte)
storage/example/ha_example.cc:
  index_read() -> index_read_map()
storage/example/ha_example.h:
  index_read() -> index_read_map()
storage/heap/ha_heap.cc:
  index_read() -> index_read_map()
storage/heap/ha_heap.h:
  index_read() -> index_read_map()
storage/heap/hp_test1.c:
  Fixed compiler warning (on Forte)
storage/heap/hp_test2.c:
  Fixed compiler warning (on Forte)
storage/myisam/ft_boolean_search.c:
  Fixed compiler warning (on Forte)
storage/myisam/ft_nlq_search.c:
  Fixed compiler warning (on Forte)
storage/myisam/ft_parser.c:
  Fixed compiler warning (on Forte)
storage/myisam/ft_stopwords.c:
  Fixed compiler warning (on Forte)
storage/myisam/ha_myisam.cc:
  index_read() -> index_read_map()
storage/myisam/ha_myisam.h:
  index_read() -> index_read_map()
storage/myisam/mi_check.c:
  Fixed compiler warning (on Forte)
storage/myisam/mi_delete.c:
  Fixed compiler warning (on Forte)
storage/myisam/mi_dynrec.c:
  Fixed compiler warning (on Forte)
storage/myisam/mi_extra.c:
  Fixed compiler warning (on Forte)
storage/myisam/mi_key.c:
  Fixed compiler warning (on Forte)
storage/myisam/mi_keycache.c:
  Fixed compiler warning (on Forte)
storage/myisam/mi_locking.c:
  Fixed compiler warning (on Forte)
storage/myisam/mi_log.c:
  Fixed compiler warning (on Forte)
storage/myisam/mi_open.c:
  Fixed compiler warning (on Forte)
storage/myisam/mi_packrec.c:
  Fixed compiler warning (on Forte)
storage/myisam/mi_page.c:
  Fixed compiler warning (on Forte)
storage/myisam/mi_rkey.c:
  Added comment
storage/myisam/mi_search.c:
  Fixed compiler warning (on Forte)
storage/myisam/mi_statrec.c:
  Fixed compiler warning (on Forte)
storage/myisam/mi_test1.c:
  Fixed compiler warning (on Forte)
storage/myisam/mi_test2.c:
  Fixed compiler warning (on Forte)
storage/myisam/mi_test3.c:
  Fixed compiler warning (on Forte)
storage/myisam/mi_update.c:
  Fixed compiler warning (on Forte)
storage/myisam/mi_write.c:
  Fixed compiler warning (on Forte)
storage/myisam/myisamdef.h:
  Fixed that file_read/file_write returns type size_t
  Changed some functions to use uchar * as argument/return value instead of char*
  This fixed some compiler warnings on Forte
storage/myisam/myisamlog.c:
  Fixed compiler warning (on Forte)
storage/myisam/myisampack.c:
  Fixed compiler warning (on Forte)
storage/myisam/rt_test.c:
  Fixed compiler warning (on Forte)
storage/myisam/sort.c:
  Fixed compiler warning (on Forte) by adding casts or changing variables to uchar*
storage/myisam/sp_test.c:
  Fixed compiler warning (on Forte) by adding casts or changing variables to uchar*
storage/myisammrg/ha_myisammrg.cc:
  index_read() -> index_read_map()
storage/myisammrg/ha_myisammrg.h:
  index_read() -> index_read_map()
storage/myisammrg/myrg_create.c:
  Fixed compiler warning (on Forte) by adding casts or changing variable types
storage/ndb/src/kernel/blocks/dbtup/DbtupExecQuery.cpp:
  Tdummy -> align  (as in other part of cluster code)
storage/ndb/src/kernel/vm/DynArr256.cpp:
  Removed not used variable
storage/ndb/src/ndbapi/Ndb.cpp:
  Removed not used variable
strings/strtod.c:
  Include ieeefp.h to avoid compiler warning
tests/bug25714.c:
  Fixed compiler warning
tests/mysql_client_test.c:
  Remove not used variable
  Fixed indentation
  Removed never reached code
  Fixed compiler warning (on Forte) by adding casts or changing variable types
vio/viosocket.c:
  Fixed compiler warning (on Forte) by adding casts or changing variable types
2007-08-13 16:11:25 +03:00
monty@mysql.com/nosik.monty.fi
e53a73e26c Fixed a lot of compiler warnings and errors detected by Forte C++ on Solaris
Faster thr_alarm()
Added 'Opened_files' status variable to track calls to my_open()
Don't give warnings when running mysql_install_db
Added option --source-install to mysql_install_db

I had to do the following renames() as used polymorphism didn't work with Forte compiler on 64 bit systems
index_read()      -> index_read_map()
index_read_idx()  -> index_read_idx_map()
index_read_last() -> index_read_last_map()
2007-08-13 16:11:25 +03:00
unknown
6e84990797 Merge jamppa@bk-internal.mysql.com:/home/bk/mysql-5.1
into  a88-113-38-195.elisa-laajakaista.fi:/home/my/bk/mysql-5.1-marvel


BitKeeper/etc/ignore:
  auto-union
client/mysql.cc:
  Auto merged
client/mysqldump.c:
  Auto merged
client/mysqltest.c:
  Auto merged
extra/comp_err.c:
  Auto merged
include/decimal.h:
  Auto merged
include/my_getopt.h:
  Auto merged
include/my_global.h:
  Auto merged
include/my_sys.h:
  Auto merged
include/mysql.h:
  Auto merged
mysys/array.c:
  Auto merged
mysys/hash.c:
  Auto merged
mysys/typelib.c:
  Auto merged
sql/derror.cc:
  Auto merged
sql/event_data_objects.cc:
  Auto merged
sql/event_queue.cc:
  Auto merged
sql/field.cc:
  Auto merged
sql/filesort.cc:
  Auto merged
sql/ha_ndbcluster.h:
  Auto merged
sql/ha_ndbcluster_binlog.cc:
  Auto merged
sql/ha_partition.cc:
  Auto merged
sql/ha_partition.h:
  Auto merged
sql/handler.cc:
  Auto merged
sql/handler.h:
  Auto merged
sql/item.cc:
  Auto merged
sql/item.h:
  Auto merged
sql/item_cmpfunc.cc:
  Auto merged
sql/item_func.cc:
  Auto merged
sql/item_subselect.cc:
  Auto merged
sql/item_sum.cc:
  Auto merged
sql/item_timefunc.cc:
  Auto merged
sql/item_timefunc.h:
  Auto merged
sql/log.cc:
  Auto merged
sql/log_event.cc:
  Auto merged
sql/my_decimal.cc:
  Auto merged
sql/my_decimal.h:
  Auto merged
sql/mysql_priv.h:
  Auto merged
sql/opt_range.cc:
  Auto merged
sql/opt_range.h:
  Auto merged
sql/opt_sum.cc:
  Auto merged
sql/protocol.cc:
  Auto merged
sql/protocol.h:
  Auto merged
sql/rpl_utility.h:
  Auto merged
sql/slave.cc:
  Auto merged
sql/sp.cc:
  Auto merged
sql/sp_head.cc:
  Auto merged
sql/sp_head.h:
  Auto merged
sql/sql_cache.cc:
  Auto merged
sql/sql_class.cc:
  Auto merged
sql/sql_class.h:
  Auto merged
sql/sql_connect.cc:
  Auto merged
sql/sql_delete.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_partition.cc:
  Auto merged
sql/sql_prepare.cc:
  Auto merged
sql/sql_repl.cc:
  Auto merged
sql/sql_select.cc:
  Auto merged
sql/sql_select.h:
  Auto merged
sql/sql_show.cc:
  Auto merged
sql/sql_trigger.cc:
  Auto merged
sql/sql_union.cc:
  Auto merged
sql/sql_update.cc:
  Auto merged
sql/sql_view.cc:
  Auto merged
sql/structs.h:
  Auto merged
sql/table.h:
  Auto merged
sql/tztime.cc:
  Auto merged
sql/unireg.cc:
  Auto merged
storage/example/ha_example.cc:
  Auto merged
storage/federated/ha_federated.cc:
  Auto merged
storage/heap/ha_heap.cc:
  Auto merged
storage/innobase/handler/ha_innodb.h:
  Auto merged
storage/myisam/ha_myisam.cc:
  Auto merged
storage/myisam/sort.c:
  Auto merged
storage/myisammrg/ha_myisammrg.cc:
  Auto merged
storage/ndb/tools/restore/consumer_restore.cpp:
  Auto merged
strings/decimal.c:
  Auto merged
strings/strtod.c:
  Auto merged
include/hash.h:
  Manual merge with 5.1 main tree.
mysys/my_getopt.c:
  Manual merge with 5.1 main tree.
sql/field.h:
  Manual merge with 5.1 main tree.
sql/ha_ndbcluster.cc:
  Manual merge with 5.1 main tree.
sql/item_cmpfunc.h:
  Manual merge with 5.1 main tree.
sql/item_create.cc:
  Manual merge with 5.1 main tree.
sql/item_func.h:
  Manual merge with 5.1 main tree.
sql/key.cc:
  Manual merge with 5.1 main tree.
sql/lock.cc:
  Manual merge with 5.1 main tree.
sql/mysqld.cc:
  Manual merge with 5.1 main tree.
sql/set_var.cc:
  Manual merge with 5.1 main tree.
sql/set_var.h:
  Manual merge with 5.1 main tree.
sql/sql_base.cc:
  Manual merge with 5.1 main tree.
sql/sql_handler.cc:
  Manual merge with 5.1 main tree.
sql/sql_insert.cc:
  Manual merge with 5.1 main tree.
sql/sql_plugin.cc:
  Manual merge with 5.1 main tree.
sql/sql_table.cc:
  Manual merge with 5.1 main tree.
sql/sql_yacc.yy:
  Manual merge with 5.1 main tree.
sql/table.cc:
  Manual merge with 5.1 main tree.
storage/innobase/handler/ha_innodb.cc:
  Manual merge with 5.1 main tree.
storage/ndb/src/mgmsrv/InitConfigFileParser.cpp:
  Manual merge with 5.1 main tree.
storage/ndb/tools/restore/restore_main.cpp:
  Manual merge with 5.1 main tree.
2007-05-24 13:24:36 +03:00
jani@a88-113-38-195.elisa-laajakaista.fi
fc3b3a0a86 Merge jamppa@bk-internal.mysql.com:/home/bk/mysql-5.1
into  a88-113-38-195.elisa-laajakaista.fi:/home/my/bk/mysql-5.1-marvel
2007-05-24 13:24:36 +03:00
unknown
d46c8ce634 Fix for:
Bug #20662 "Infinite loop in CREATE TABLE IF NOT EXISTS ... SELECT
              with locked tables"
  Bug #20903 "Crash when using CREATE TABLE .. SELECT and triggers"
  Bug #24738 "CREATE TABLE ... SELECT is not isolated properly"
  Bug #24508 "Inconsistent results of CREATE TABLE ... SELECT when
              temporary table exists"

Deadlock occured when one tried to execute CREATE TABLE IF NOT
EXISTS ... SELECT statement under LOCK TABLES which held
read lock on target table.
Attempt to execute the same statement for already existing
target table with triggers caused server crashes.
Also concurrent execution of CREATE TABLE ... SELECT statement
and other statements involving target table suffered from
various races (some of which might've led to deadlocks).
Finally, attempt to execute CREATE TABLE ... SELECT in case
when a temporary table with same name was already present
led to the insertion of data into this temporary table and
creation of empty non-temporary table.
 
All above problems stemmed from the old implementation of CREATE
TABLE ... SELECT in which we created, opened and locked target
table without any special protection in a separate step and not
with the rest of tables used by this statement.
This underminded deadlock-avoidance approach used in server
and created window for races. It also excluded target table
from prelocking causing problems with trigger execution.

The patch solves these problems by implementing new approach to
handling of CREATE TABLE ... SELECT for base tables.
We try to open and lock table to be created at the same time as
the rest of tables used by this statement. If such table does not
exist at this moment we create and place in the table cache special
placeholder for it which prevents its creation or any other usage
by other threads.
We still use old approach for creation of temporary tables.

Note that we have separate fix for 5.0 since there we use slightly
different less intrusive approach.


mysql-test/r/create.result:
  Extended test coverage for CREATE TABLE ... SELECT. In particular added
  tests for bug #24508 "Inconsistent results of CREATE TABLE ... SELECT
  when temporary table exists" and bug #20662 "Infinite loop in CREATE
  TABLE IF NOT EXISTS ... SELECT with locked tables".
mysql-test/r/trigger.result:
  Added test case for bug #20903 "Crash when using CREATE TABLE .. SELECT
  and triggers"
mysql-test/t/create.test:
  Extended test coverage for CREATE TABLE ... SELECT. In particular added
  tests for bug #24508 "Inconsistent results of CREATE TABLE ... SELECT
  when temporary table exists" and bug #20662 "Infinite loop in CREATE
  TABLE IF NOT EXISTS ... SELECT with locked tables".
mysql-test/t/trigger.test:
  Added test case for bug #20903 "Crash when using CREATE TABLE .. SELECT
  and triggers"
sql/lock.cc:
  Now for creation of name-lock placeholder lock_table_name() uses
  auxiliary function table_cache_insert_placeholder().
sql/mysql_priv.h:
  Removed declaration of non-existing build_table_path() routine.
  The former mysql_create_table_internal() was renamed to
  mysql_create_table_no_lock() and now exposed to other modules to
  give them opportunity of creation of tables in cases when name-lock
  is already obtained.
  reopen_name_locked_table() now has 3rd argument which controls linking
  in of table being opened into THD::open_tables (this is useful in
  cases when placeholder used for name-locking is already linked into
  this list).
  Added declaration of auxiliary function table_cache_insert_placeholder()
  which is used for creation of table placeholders for name-locking.
  Added declaration of lock_table_name_if_not_cached() which can be
  used to take an exclusive name-lock on table if there are no records
  for it in table cache.
  Changed signature of unlink_open_table() function to simplify its use
  and make it useful for table placeholders and tables that are only open.
  Added auxiliary drop_open_table() routine.
  Moved declaration of refresh_version to table.h header to make it
  accessible from inline methods of TABLE class.
  MYSQL_OPEN_IGNORE_LOCKED_TABLES flag is no longer used. Instead
  MYSQL_OPEN_TEMPORARY_ONLY option was added.
sql/sql_base.cc:
  Added support for the new approach to the handling of CREATE TABLE
  ... SELECT for base tables.
  
  Now we try to open and lock table to be created at the same time as
  the rest of tables used by this statement. If such table does not
  exist at this moment we create and place in the table cache special
  placeholder for it which prevents its creation or any other usage
  by other threads.
  
  Note significant distinctions of this placeholder from the placeholder
  used for normal name-lock: 1) It is treated like open table by other
  name-locks so it does not allow name-lock taking operations like DROP
  TABLE or RENAME TABLE to proceed. 2) it is linked into THD::open_tables
  list and automatically removed during close_thread_tables() call
    
  open_tables():
    Implemented logic described above. To do this added
    auxiliary check_if_table_exists() function.
    Removed support for MYSQL_OPEN_IGNORE_LOCKED_TABLES option
    which is no longer used.
    Added MYSQL_OPEN_TEMPORARY_ONLY which is used to restrict
    search for temporary tables only.
  close_cached_tables()/close_thread_table()/reopen_tables()/
  close_old_data_files()/table_is_used()/remove_table_from_cache():
    Added support for open placeholders (note that we also use them
    when we need to re-open tables during flush).
  unlink_open_table():
    Changed function signature to simplify its use and to make
    useful for open placeholders and tables which are only
    open and not locked.
  Added auxiliary drop_open_table() routine.
  reopen_name_locked_table():
    Now has 3rd argument which controls linking in of table being
    opened into THD::open_tables (this is useful in cases when
    placeholder used for name-locking is already linked into
    this list).
  Added auxiliary table_cache_insert_placeholder() routine which
  simplifies creation of placeholders used for name-locking.
  Added lock_table_name_if_not_cached() which can be used to take
  an exclusive name-lock on table if there are no records for it
  in table cache.
sql/sql_handler.cc:
  Adjusted mysql_ha_mark_tables_for_reopen() routine to properly
  handle placeholders which now can be linked into open tables
  list.
sql/sql_insert.cc:
  Introduced new approach to handling of base tables in CREATE TABLE
  ... SELECT statement.
  
  Now we try to open and lock table to be created at the same time as
  the rest of tables used by this statement. If such table does not
  exist at this moment we create and place in the table cache special
  placeholder for it which prevents its creation or any other usage
  by other threads. By doing this we avoid races which existed with
  previous approach in which we created, opened and locked target in
  separate step without any special protection.
  This also allows properly calculate prelocking set in cases when
  target table already exists and has some on insert triggers.
  
  Note that we don't employ the same approach for temporary tables
  (this is okay as such tables are unaffected by other threads).
  
  Changed create_table_from_items() and methods of select_create
  class to implement this approach.
sql/sql_parse.cc:
  The new approach to handling of CREATE TABLE ... SELECT for
  base tables assumes that all tables (including table to be
  created) are opened and (or) locked at the same time.
  So in cases when we create base table we have to pass to
  open_and_lock_tables() table list which includes target table.
sql/sql_prepare.cc:
  The new approach to handling of CREATE TABLE ... SELECT for
  base tables assumes that all tables (including table to be
  created) are opened and (or) locked at the same time.
  So in cases when we create base table we have to pass to
  open_and_lock_tables() table list which includes target table.
sql/sql_table.cc:
  Changed mysql_create_table(), mysql_create_like_table() and
  mysql_alter_table() (in rename case) to obtain exclusive name-lock
  on the non-temporary table which is going to be created (to which
  we going to rename). This ensures that not only destination table
  doesn't exist on disk but also that there are no placeholder in 
  table cache for it (i.e. there is no CREATE TABLE ... SELECT operation
  in progress for it). Note that to avoid deadlocks while taking these
  name-locks this code assumes that existence of any record for table in
  table cache (even name-lock) means that table exists. Altough such
  check can lead to false positives these should occur only in case of
  highly concurrent DDL operations on the table and should not break
  binary logging.
  
  Renamed mysql_create_table_internal() to mysql_create_table_no_lock()
  and made it accessible from other files to give them ability to create
  table in situation when name-lock is already obtained or not relevant.
  
  Adjusted calls to reopen_name_locked_table(), which now takes
  extra argument, which controls linking of open table into
  THD::open_tables list.
  
  Removed redundant setting of table's 'version' field before calls
  to close_cached_table(). This function will set it to 0 itself
  anyway.
sql/sql_trigger.cc:
  reopen_name_locked_tables() now has one more argument which controls
  linking of opened table into the THD::open_tables list.
sql/sql_yacc.yy:
  The new approach to handling of CREATE TABLE ... SELECT statement
  for base tables assumes that all tables including table to be
  created are open and (or) locked at the same time. Therefore
  we need to set correct lock for target table.
sql/table.h:
  Moved declaration of refresh_version variable from mysql_priv.h
  to make it accessible from inline methods of TABLE class.
  Renamed TABLE::locked_by_flush member to open_placeholder since
  now it is also used for taking exclusive name-lock and not only
  by flush. 
  Introduced TABLE::is_name_opened() helper method which can be used
  to distinguish TABLE instances corresponding to open tables or
  placeholders for them from closed instances (e.g. due to their old
  version). Also introduced TABLE::needs_reopen_or_name_lock() helper
  which allows to check if TABLE instance corresponds to outdated
  version of table or to name-lock placeholder.
  Introduced TABLE_LIST::create member which marks elements of
  table list corresponds to the table to be created.
  Adjusted TABLE_LIST::placeholder() method to take into account 
  name-lock placeholders for tables to be created (this, for example,
  allows to properly handle such placeholders in lock_tables()).
  Finally, moved currently unused TABLE::open_next/open_prev
  members under ifdef NOT_YET.
mysql-test/r/create_select-big.result:
  New BitKeeper file ``mysql-test/r/create_select-big.result''
mysql-test/t/create_select-big.test:
  New BitKeeper file ``mysql-test/t/create_select-big.test''
2007-05-11 21:51:03 +04:00
dlenev@mockturtle.local
4cafc8eeec Fix for:
Bug #20662 "Infinite loop in CREATE TABLE IF NOT EXISTS ... SELECT
              with locked tables"
  Bug #20903 "Crash when using CREATE TABLE .. SELECT and triggers"
  Bug #24738 "CREATE TABLE ... SELECT is not isolated properly"
  Bug #24508 "Inconsistent results of CREATE TABLE ... SELECT when
              temporary table exists"

Deadlock occured when one tried to execute CREATE TABLE IF NOT
EXISTS ... SELECT statement under LOCK TABLES which held
read lock on target table.
Attempt to execute the same statement for already existing
target table with triggers caused server crashes.
Also concurrent execution of CREATE TABLE ... SELECT statement
and other statements involving target table suffered from
various races (some of which might've led to deadlocks).
Finally, attempt to execute CREATE TABLE ... SELECT in case
when a temporary table with same name was already present
led to the insertion of data into this temporary table and
creation of empty non-temporary table.
 
All above problems stemmed from the old implementation of CREATE
TABLE ... SELECT in which we created, opened and locked target
table without any special protection in a separate step and not
with the rest of tables used by this statement.
This underminded deadlock-avoidance approach used in server
and created window for races. It also excluded target table
from prelocking causing problems with trigger execution.

The patch solves these problems by implementing new approach to
handling of CREATE TABLE ... SELECT for base tables.
We try to open and lock table to be created at the same time as
the rest of tables used by this statement. If such table does not
exist at this moment we create and place in the table cache special
placeholder for it which prevents its creation or any other usage
by other threads.
We still use old approach for creation of temporary tables.

Note that we have separate fix for 5.0 since there we use slightly
different less intrusive approach.
2007-05-11 21:51:03 +04:00
unknown
c5a8245596 Fix for:
Bug #20662 "Infinite loop in CREATE TABLE IF NOT EXISTS ... SELECT
              with locked tables"
  Bug #20903 "Crash when using CREATE TABLE .. SELECT and triggers"
  Bug #24738 "CREATE TABLE ... SELECT is not isolated properly"
  Bug #24508 "Inconsistent results of CREATE TABLE ... SELECT when
              temporary table exists"
 
Deadlock occured when one tried to execute CREATE TABLE IF NOT
EXISTS ... SELECT statement under LOCK TABLES which held
read lock on target table.
Attempt to execute the same statement for already existing
target table with triggers caused server crashes.
Also concurrent execution of CREATE TABLE ... SELECT statement
and other statements involving target table suffered from
various races (some of which might've led to deadlocks).
Finally, attempt to execute CREATE TABLE ... SELECT in case
when a temporary table with same name was already present
led to the insertion of data into this temporary table and
creation of empty non-temporary table.
 
All above problems stemmed from the old implementation of CREATE
TABLE ... SELECT in which we created, opened and locked target
table without any special protection in a separate step and not
with the rest of tables used by this statement.
This underminded deadlock-avoidance approach used in server
and created window for races. It also excluded target table
from prelocking causing problems with trigger execution.
  
The patch solves these problems by implementing new approach to
handling of CREATE TABLE ... SELECT for base tables.
We try to open and lock table to be created at the same time as
the rest of tables used by this statement. If such table does not
exist at this moment we create and place in the table cache special
placeholder for it which prevents its creation or any other usage
by other threads.

We still use old approach for creation of temporary tables.

Also note that we decided to postpone introduction of some tests
for concurrent behaviour of CREATE TABLE ... SELECT till 5.1.
The main reason for this is absence in 5.0 ability to set @@debug
variable at runtime, which can be circumvented only by using several
test files with individual .opt files. Since the latter is likely
to slowdown test-suite unnecessary we chose not to push this tests
into 5.0, but run them manually for this version and later push
their optimized version into 5.1


mysql-test/r/create.result:
  Extended test coverage for CREATE TABLE ... SELECT. In particular added
  tests for bug #24508 "Inconsistent results of CREATE TABLE ... SELECT
  when temporary table exists" and bug #20662 "Infinite loop in CREATE
  TABLE IF NOT EXISTS ... SELECT with locked tables".
mysql-test/r/trigger.result:
  Added test case for bug #20903 "Crash when using CREATE TABLE .. SELECT
  and triggers"
mysql-test/t/create.test:
  Extended test coverage for CREATE TABLE ... SELECT. In particular added
  tests for bug #24508 "Inconsistent results of CREATE TABLE ... SELECT
  when temporary table exists" and bug #20662 "Infinite loop in CREATE
  TABLE IF NOT EXISTS ... SELECT with locked tables".
mysql-test/t/trigger.test:
  Added test case for bug #20903 "Crash when using CREATE TABLE .. SELECT
  and triggers"
sql/lock.cc:
  Now for creation of name-lock placeholder in lock_table_name() we use
  auxiliary function table_cache_insert_placeholder().
sql/mysql_priv.h:
  Made build_table_path() function available outside of sql_table.cc file.
  reopen_name_locked_table() now has 3rd argument which controls linking
  in of table being opened into THD::open_tables (this is useful in
  cases when placeholder used for name-locking is already linked into
  this list).
  Added declaration of auxiliary function table_cache_insert_placeholder()
  which is used for creation of table placeholders for name-locking.
  Added declaration of table_cache_has_open_placeholder() function which
  can be used for checking if table cache contains an open placeholder for
  the table and if this placeholder was created by another thread.
  (This function is needed only in 5.0 where we use it in various versions
   of CREATE TABLE in order to protect it from concurrent CREATE TABLE
   ... SELECT operations for the table. Starting from 5.1 we use different
   approach so it is going to be removed there).
  Made close_old_data_files() static within sql_base.cc file. 
  Added auxiliary drop_open_table() routine.
  Moved declaration of refresh_version to table.h header to make it
  accessible from inline methods of TABLE class.
  MYSQL_OPEN_IGNORE_LOCKED_TABLES flag is no longer used. Instead
  MYSQL_OPEN_TEMPORARY_ONLY option was added.
sql/sql_base.cc:
  Added support for the new approach to the handling of CREATE TABLE
  ... SELECT for base tables.
  
  Now we try to open and lock table to be created at the same time as
  the rest of tables used by this statement. If such table does not
  exist at this moment we create and place in the table cache special
  placeholder for it which prevents its creation or any other usage
  by other threads.
  
  Note significant distinctions of this placeholder from the placeholder
  used for normal name-lock: 1) It is treated like open table by other
  name-locks so it does not allow name-lock taking operations like DROP
  TABLE or RENAME TABLE to proceed. 2) it is linked into THD::open_tables
  list and automatically removed during close_thread_tables() call.
  
  open_tables():
    Implemented logic described above. To do this added
    auxiliary check_if_table_exists() function.
    Removed support for MYSQL_OPEN_IGNORE_LOCKED_TABLES option
    which is no longer used.
    Added MYSQL_OPEN_TEMPORARY_ONLY which is used to restrict
    search for temporary tables only.
  close_cached_tables()/close_thread_table()/reopen_tables()/
  close_old_data_files()/table_is_used()/remove_table_from_cache():
    Added support for open placeholders (note that we also use them
    when we need to re-open tables during flush).
  Added auxiliary drop_open_table() routine.
  reopen_name_locked_table():
    Now has 3rd argument which controls linking in of table being
    opened into THD::open_tables (this is useful in cases when
    placeholder used for name-locking is already linked into
    this list).
  Added auxiliary table_cache_insert_placeholder() routine which
  simplifies creation of placeholders used for name-locking.
  Added table_cache_has_open_placeholder() function which can be
  used for checking if table cache contains an open placeholder for
  the table and if this placeholder was created by another thread.
  (This function is needed only in 5.0 where we use it in various versions
   of CREATE TABLE in order to protect it from concurrent CREATE TABLE
   ... SELECT operations for the table. Starting from 5.1 we use different
   approach so it is going to be removed there).
sql/sql_handler.cc:
  Adjusted mysql_ha_mark_tables_for_reopen() routine to properly
  handle placeholders which now can be linked into open tables
  list.
sql/sql_insert.cc:
  Introduced new approach to handling of base tables in CREATE TABLE
  ... SELECT statement.
  
  Now we try to open and lock table to be created at the same time as
  the rest of tables used by this statement. If such table does not
  exist at this moment we create and place in the table cache special
  placeholder for it which prevents its creation or any other usage
  by other threads. By doing this we avoid races which existed with
  previous approach in which we created, opened and locked target in
  separate step without any special protection.
  This also allows properly calculate prelocking set in cases when
  target table already exists and has some on insert triggers.
    
  Note that we don't employ the same approach for temporary tables
  (this is okay as such tables are unaffected by other threads).
  
  Changed create_table_from_items() and select_create methods to
  implement this approach.
sql/sql_parse.cc:
  The new approach to handling of CREATE TABLE ... SELECT for
  base tables assumes that all tables (including table to be
  created) are opened and (or) locked at the same time.
  So in cases when we create base table we have to pass to
  open_and_lock_tables() table list which includes target table.
sql/sql_prepare.cc:
  The new approach to handling of CREATE TABLE ... SELECT for
  base tables assumes that all tables (including table to be
  created) are opened and (or) locked at the same time.
  So in cases when we create base table we have to pass to
  open_and_lock_tables() table list which includes target table.
sql/sql_table.cc:
  Now mysql_create_table_internal(), mysql_create_like_table() and
  mysql_alter_table() not only check that destination table doesn't
  exist on disk but also check that there is no create placeholder
  in table cache for it (i.e. there is no CREATE TABLE ... SELECT
  operation in progress for it). Note that starting from 5.1 we
  use different approach in order to to protect CREATE TABLE ... SELECT
  from concurrent CREATE TABLE (ALTER TABLE ... RENAME) operations,
  the latter simply take name-locks on table before its creation
  (on target table name before renaming).
  
  Also made build_table_path() available from other files and
  asjusted calls to reopen_name_locked_table(), which now takes
  extra argument, which controls linking of open table into
  THD::open_tables list.
sql/sql_trigger.cc:
  reopen_name_locked_tables() now has one more argument which controls
  linking of opened table into the THD::open_tables list.
sql/sql_yacc.yy:
  The new approach to handling of CREATE TABLE ... SELECT statement
  for base tables assumes that all tables including table to be
  created are open and (or) locked at the same time. Therefore
  we need to set correct lock for target table.
sql/table.h:
  Moved declaration of refresh_version variable from mysql_priv.h
  to make it accessible from inline methods of TABLE class. 
  Renamed TABLE::locked_by_flush member to open_placeholder since
  now it is also used for taking exclusive name-lock and not only
  by flush. 
  Introduced TABLE::is_name_opened() helper method which can be used
  to distinguish TABLE instances corresponding to open tables or
  placeholders for them from closed instances (e.g. due to their old
  version). Also introduced TABLE::needs_reopen_or_name_lock() helper
  which allows to check if TABLE instance corresponds to outdated
  version of table or to name-lock placeholder.
  Introduced TABLE_LIST::create member which marks elements of
  table list corresponds to the table to be created.
  Adjusted TABLE_LIST::placeholder() method to take into account 
  name-lock placeholders for tables to be created (this, for example,
  allows to properly handle such placeholders in lock_tables()).
2007-05-11 20:33:13 +04:00
dlenev@mockturtle.local
8b93e52e92 Fix for:
Bug #20662 "Infinite loop in CREATE TABLE IF NOT EXISTS ... SELECT
              with locked tables"
  Bug #20903 "Crash when using CREATE TABLE .. SELECT and triggers"
  Bug #24738 "CREATE TABLE ... SELECT is not isolated properly"
  Bug #24508 "Inconsistent results of CREATE TABLE ... SELECT when
              temporary table exists"
 
Deadlock occured when one tried to execute CREATE TABLE IF NOT
EXISTS ... SELECT statement under LOCK TABLES which held
read lock on target table.
Attempt to execute the same statement for already existing
target table with triggers caused server crashes.
Also concurrent execution of CREATE TABLE ... SELECT statement
and other statements involving target table suffered from
various races (some of which might've led to deadlocks).
Finally, attempt to execute CREATE TABLE ... SELECT in case
when a temporary table with same name was already present
led to the insertion of data into this temporary table and
creation of empty non-temporary table.
 
All above problems stemmed from the old implementation of CREATE
TABLE ... SELECT in which we created, opened and locked target
table without any special protection in a separate step and not
with the rest of tables used by this statement.
This underminded deadlock-avoidance approach used in server
and created window for races. It also excluded target table
from prelocking causing problems with trigger execution.
  
The patch solves these problems by implementing new approach to
handling of CREATE TABLE ... SELECT for base tables.
We try to open and lock table to be created at the same time as
the rest of tables used by this statement. If such table does not
exist at this moment we create and place in the table cache special
placeholder for it which prevents its creation or any other usage
by other threads.

We still use old approach for creation of temporary tables.

Also note that we decided to postpone introduction of some tests
for concurrent behaviour of CREATE TABLE ... SELECT till 5.1.
The main reason for this is absence in 5.0 ability to set @@debug
variable at runtime, which can be circumvented only by using several
test files with individual .opt files. Since the latter is likely
to slowdown test-suite unnecessary we chose not to push this tests
into 5.0, but run them manually for this version and later push
their optimized version into 5.1
2007-05-11 20:33:13 +04:00
unknown
f252f9248a WL#3817: Simplify string / memory area types and make things more consistent (first part)
The following type conversions was done:

- Changed byte to uchar
- Changed gptr to uchar*
- Change my_string to char *
- Change my_size_t to size_t
- Change size_s to size_t

Removed declaration of byte, gptr, my_string, my_size_t and size_s. 

Following function parameter changes was done:
- All string functions in mysys/strings was changed to use size_t
  instead of uint for string lengths.
- All read()/write() functions changed to use size_t (including vio).
- All protocoll functions changed to use size_t instead of uint
- Functions that used a pointer to a string length was changed to use size_t*
- Changed malloc(), free() and related functions from using gptr to use void *
  as this requires fewer casts in the code and is more in line with how the
  standard functions work.
- Added extra length argument to dirname_part() to return the length of the
  created string.
- Changed (at least) following functions to take uchar* as argument:
  - db_dump()
  - my_net_write()
  - net_write_command()
  - net_store_data()
  - DBUG_DUMP()
  - decimal2bin() & bin2decimal()
- Changed my_compress() and my_uncompress() to use size_t. Changed one
  argument to my_uncompress() from a pointer to a value as we only return
  one value (makes function easier to use).
- Changed type of 'pack_data' argument to packfrm() to avoid casts.
- Changed in readfrm() and writefrom(), ha_discover and handler::discover()
  the type for argument 'frmdata' to uchar** to avoid casts.
- Changed most Field functions to use uchar* instead of char* (reduced a lot of
  casts).
- Changed field->val_xxx(xxx, new_ptr) to take const pointers.

Other changes:
- Removed a lot of not needed casts
- Added a few new cast required by other changes
- Added some cast to my_multi_malloc() arguments for safety (as string lengths
  needs to be uint, not size_t).
- Fixed all calls to hash-get-key functions to use size_t*. (Needed to be done
  explicitely as this conflict was often hided by casting the function to
  hash_get_key).
- Changed some buffers to memory regions to uchar* to avoid casts.
- Changed some string lengths from uint to size_t.
- Changed field->ptr to be uchar* instead of char*. This allowed us to
  get rid of a lot of casts.
- Some changes from true -> TRUE, false -> FALSE, unsigned char -> uchar
- Include zlib.h in some files as we needed declaration of crc32()
- Changed MY_FILE_ERROR to be (size_t) -1.
- Changed many variables to hold the result of my_read() / my_write() to be
  size_t. This was needed to properly detect errors (which are
  returned as (size_t) -1).
- Removed some very old VMS code
- Changed packfrm()/unpackfrm() to not be depending on uint size
  (portability fix)
- Removed windows specific code to restore cursor position as this
  causes slowdown on windows and we should not mix read() and pread()
  calls anyway as this is not thread safe. Updated function comment to
  reflect this. Changed function that depended on original behavior of
  my_pwrite() to itself restore the cursor position (one such case).
- Added some missing checking of return value of malloc().
- Changed definition of MOD_PAD_CHAR_TO_FULL_LENGTH to avoid 'long' overflow.
- Changed type of table_def::m_size from my_size_t to ulong to reflect that
  m_size is the number of elements in the array, not a string/memory
  length.
- Moved THD::max_row_length() to table.cc (as it's not depending on THD).
  Inlined max_row_length_blob() into this function.
- More function comments
- Fixed some compiler warnings when compiled without partitions.
- Removed setting of LEX_STRING() arguments in declaration (portability fix).
- Some trivial indentation/variable name changes.
- Some trivial code simplifications:
  - Replaced some calls to alloc_root + memcpy to use
    strmake_root()/strdup_root().
  - Changed some calls from memdup() to strmake() (Safety fix)
  - Simpler loops in client-simple.c


BitKeeper/etc/ignore:
  added libmysqld/ha_ndbcluster_cond.cc
  ---
  added debian/defs.mk debian/control
client/completion_hash.cc:
  Remove not needed casts
client/my_readline.h:
  Remove some old types
client/mysql.cc:
  Simplify types
client/mysql_upgrade.c:
  Remove some old types
  Update call to dirname_part
client/mysqladmin.cc:
  Remove some old types
client/mysqlbinlog.cc:
  Remove some old types
  Change some buffers to be uchar to avoid casts
client/mysqlcheck.c:
  Remove some old types
client/mysqldump.c:
  Remove some old types
  Remove some not needed casts
  Change some string lengths to size_t
client/mysqlimport.c:
  Remove some old types
client/mysqlshow.c:
  Remove some old types
client/mysqlslap.c:
  Remove some old types
  Remove some not needed casts
client/mysqltest.c:
  Removed some old types
  Removed some not needed casts
  Updated hash-get-key function arguments
  Updated parameters to dirname_part()
client/readline.cc:
  Removed some old types
  Removed some not needed casts
  Changed some string lengths to use size_t
client/sql_string.cc:
  Removed some old types
dbug/dbug.c:
  Removed some old types
  Changed some string lengths to use size_t
  Changed some prototypes to avoid casts
extra/comp_err.c:
  Removed some old types
extra/innochecksum.c:
  Removed some old types
extra/my_print_defaults.c:
  Removed some old types
extra/mysql_waitpid.c:
  Removed some old types
extra/perror.c:
  Removed some old types
extra/replace.c:
  Removed some old types
  Updated parameters to dirname_part()
extra/resolve_stack_dump.c:
  Removed some old types
extra/resolveip.c:
  Removed some old types
include/config-win.h:
  Removed some old types
include/decimal.h:
  Changed binary strings to be uchar* instead of char*
include/ft_global.h:
  Removed some old types
include/hash.h:
  Removed some old types
include/heap.h:
  Removed some old types
  Changed records_under_level to be 'ulong' instead of 'uint' to clarify usage of variable
include/keycache.h:
  Removed some old types
include/m_ctype.h:
  Removed some old types
  Changed some string lengths to use size_t
  Changed character length functions to return uint
  unsigned char -> uchar
include/m_string.h:
  Removed some old types
  Changed some string lengths to use size_t
include/my_alloc.h:
  Changed some string lengths to use size_t
include/my_base.h:
  Removed some old types
include/my_dbug.h:
  Removed some old types
  Changed some string lengths to use size_t
  Changed db_dump() to take uchar * as argument for memory to reduce number of casts in usage
include/my_getopt.h:
  Removed some old types
include/my_global.h:
  Removed old types:
  my_size_t -> size_t
  byte -> uchar
  gptr -> uchar *
include/my_list.h:
  Removed some old types
include/my_nosys.h:
  Removed some old types
include/my_pthread.h:
  Removed some old types
include/my_sys.h:
  Removed some old types
  Changed MY_FILE_ERROR to be in line with new definitions of my_write()/my_read()
  Changed some string lengths to use size_t
  my_malloc() / my_free() now uses void *
  Updated parameters to dirname_part() & my_uncompress()
include/my_tree.h:
  Removed some old types
include/my_trie.h:
  Removed some old types
include/my_user.h:
  Changed some string lengths to use size_t
include/my_vle.h:
  Removed some old types
include/my_xml.h:
  Removed some old types
  Changed some string lengths to use size_t
include/myisam.h:
  Removed some old types
include/myisammrg.h:
  Removed some old types
include/mysql.h:
  Removed some old types
  Changed byte streams to use uchar* instead of char*
include/mysql_com.h:
  Removed some old types
  Changed some string lengths to use size_t
  Changed some buffers to be uchar* to avoid casts
include/queues.h:
  Removed some old types
include/sql_common.h:
  Removed some old types
include/sslopt-longopts.h:
  Removed some old types
include/violite.h:
  Removed some old types
  Changed some string lengths to use size_t
libmysql/client_settings.h:
  Removed some old types
libmysql/libmysql.c:
  Removed some old types
libmysql/manager.c:
  Removed some old types
libmysqld/emb_qcache.cc:
  Removed some old types
libmysqld/emb_qcache.h:
  Removed some old types
libmysqld/lib_sql.cc:
  Removed some old types
  Removed some not needed casts
  Changed some buffers to be uchar* to avoid casts
  true -> TRUE, false -> FALSE
mysys/array.c:
  Removed some old types
mysys/charset.c:
  Changed some string lengths to use size_t
mysys/checksum.c:
  Include zlib to get definition for crc32
  Removed some old types
mysys/default.c:
  Removed some old types
  Changed some string lengths to use size_t
mysys/default_modify.c:
  Changed some string lengths to use size_t
  Removed some not needed casts
mysys/hash.c:
  Removed some old types
  Changed some string lengths to use size_t
  Note: Prototype of hash_key() has changed which may cause problems if client uses hash_init() with a cast for the hash-get-key function.
  hash_element now takes 'ulong' as the index type (cleanup)
mysys/list.c:
  Removed some old types
mysys/mf_cache.c:
  Changed some string lengths to use size_t
mysys/mf_dirname.c:
  Removed some old types
  Changed some string lengths to use size_t
  Added argument to dirname_part() to avoid calculation of length for 'to'
mysys/mf_fn_ext.c:
  Removed some old types
  Updated parameters to dirname_part()
mysys/mf_format.c:
  Removed some old types
  Changed some string lengths to use size_t
mysys/mf_getdate.c:
  Removed some old types
mysys/mf_iocache.c:
  Removed some old types
  Changed some string lengths to use size_t
  Changed calculation of 'max_length' to be done the same way in all functions
mysys/mf_iocache2.c:
  Removed some old types
  Changed some string lengths to use size_t
  Clean up comments
  Removed not needed indentation
mysys/mf_keycache.c:
  Removed some old types
mysys/mf_keycaches.c:
  Removed some old types
mysys/mf_loadpath.c:
  Removed some old types
mysys/mf_pack.c:
  Removed some old types
  Changed some string lengths to use size_t
  Removed some not needed casts
  Removed very old VMS code
  Updated parameters to dirname_part()
  Use result of dirnam_part() to remove call to strcat()
mysys/mf_path.c:
  Removed some old types
mysys/mf_radix.c:
  Removed some old types
mysys/mf_same.c:
  Removed some old types
mysys/mf_sort.c:
  Removed some old types
mysys/mf_soundex.c:
  Removed some old types
mysys/mf_strip.c:
  Removed some old types
mysys/mf_tempdir.c:
  Removed some old types
mysys/mf_unixpath.c:
  Removed some old types
mysys/mf_wfile.c:
  Removed some old types
mysys/mulalloc.c:
  Removed some old types
mysys/my_alloc.c:
  Removed some old types
  Changed some string lengths to use size_t
  Use void* as type for allocated memory area
  Removed some not needed casts
  Changed argument 'Size' to 'length' according coding guidelines
mysys/my_chsize.c:
  Changed some buffers to be uchar* to avoid casts
mysys/my_compress.c:
  More comments
  Removed some old types
  Changed string lengths to use size_t
  Changed arguments to my_uncompress() to make them easier to understand
  Changed packfrm()/unpackfrm() to not be depending on uint size (portability fix)
  Changed type of 'pack_data' argument to packfrm() to avoid casts.
mysys/my_conio.c:
  Changed some string lengths to use size_t
mysys/my_create.c:
  Removed some old types
mysys/my_div.c:
  Removed some old types
mysys/my_error.c:
  Removed some old types
mysys/my_fopen.c:
  Removed some old types
mysys/my_fstream.c:
  Removed some old types
  Changed some string lengths to use size_t
  writen -> written
mysys/my_getopt.c:
  Removed some old types
mysys/my_getwd.c:
  Removed some old types
  More comments
mysys/my_init.c:
  Removed some old types
mysys/my_largepage.c:
  Removed some old types
  Changed some string lengths to use size_t
mysys/my_lib.c:
  Removed some old types
mysys/my_lockmem.c:
  Removed some old types
mysys/my_malloc.c:
  Removed some old types
  Changed malloc(), free() and related functions to use void *
  Changed all functions to use size_t
mysys/my_memmem.c:
  Indentation cleanup
mysys/my_once.c:
  Removed some old types
  Changed malloc(), free() and related functions to use void *
mysys/my_open.c:
  Removed some old types
mysys/my_pread.c:
  Removed some old types
  Changed all functions to use size_t
  Added comment for how my_pread() / my_pwrite() are supposed to work.
  Removed windows specific code to restore cursor position as this causes slowdown on windows and we should not mix read() and pread() calls anyway as this is not thread safe.
  (If we ever would really need this, it should be enabled only with a flag argument)
mysys/my_quick.c:
  Removed some old types
  Changed all functions to use size_t
mysys/my_read.c:
  Removed some old types
  Changed all functions to use size_t
mysys/my_realloc.c:
  Removed some old types
  Use void* as type for allocated memory area
  Changed all functions to use size_t
mysys/my_static.c:
  Removed some old types
mysys/my_static.h:
  Removed some old types
mysys/my_vle.c:
  Removed some old types
mysys/my_wincond.c:
  Removed some old types
mysys/my_windac.c:
  Removed some old types
mysys/my_write.c:
  Removed some old types
  Changed all functions to use size_t
mysys/ptr_cmp.c:
  Removed some old types
  Changed all functions to use size_t
mysys/queues.c:
  Removed some old types
mysys/safemalloc.c:
  Removed some old types
  Changed malloc(), free() and related functions to use void *
  Changed all functions to use size_t
mysys/string.c:
  Removed some old types
  Changed all functions to use size_t
mysys/testhash.c:
  Removed some old types
mysys/thr_alarm.c:
  Removed some old types
mysys/thr_lock.c:
  Removed some old types
mysys/tree.c:
  Removed some old types
mysys/trie.c:
  Removed some old types
mysys/typelib.c:
  Removed some old types
plugin/daemon_example/daemon_example.cc:
  Removed some old types
regex/reginit.c:
  Removed some old types
server-tools/instance-manager/buffer.cc:
  Changed some string lengths to use size_t
  Changed buffer to be of type uchar*
server-tools/instance-manager/buffer.h:
  Changed some string lengths to use size_t
  Changed buffer to be of type uchar*
server-tools/instance-manager/commands.cc:
  Removed some old types
  Changed some string lengths to use size_t
  Changed buffer to be of type uchar*
server-tools/instance-manager/instance_map.cc:
  Removed some old types
  Changed some string lengths to use size_t
  Changed buffer to be of type uchar*
server-tools/instance-manager/instance_options.cc:
  Changed buffer to be of type uchar*
  Replaced alloc_root + strcpy() with strdup_root()
server-tools/instance-manager/mysql_connection.cc:
  Changed buffer to be of type uchar*
server-tools/instance-manager/options.cc:
  Removed some old types
server-tools/instance-manager/parse.cc:
  Changed some string lengths to use size_t
server-tools/instance-manager/parse.h:
  Removed some old types
  Changed some string lengths to use size_t
server-tools/instance-manager/protocol.cc:
  Changed some buffers to be uchar* to avoid casts
  Changed some string lengths to use size_t
server-tools/instance-manager/protocol.h:
  Changed some string lengths to use size_t
server-tools/instance-manager/user_map.cc:
  Removed some old types
  Changed some string lengths to use size_t
sql/derror.cc:
  Removed some old types
  Changed some buffers to be uchar* to avoid casts
  Changed some string lengths to use size_t
sql/discover.cc:
  Changed in readfrm() and writefrom() the type for argument 'frmdata' to uchar** to avoid casts
  Changed some string lengths to use size_t
  Changed some buffers to be uchar* to avoid casts
sql/event_data_objects.cc:
  Removed some old types
  Added missing casts for alloc() and sprintf()
sql/event_db_repository.cc:
  Changed some buffers to be uchar* to avoid casts
  Added missing casts for sprintf()
sql/event_queue.cc:
  Removed some old types
sql/field.cc:
  Removed some old types
  Changed memory buffers to be uchar*
  Changed some string lengths to use size_t
  Removed a lot of casts
  Safety fix in Field_blob::val_decimal() to not access zero pointer
sql/field.h:
  Removed some old types
  Changed memory buffers to be uchar* (except of store() as this would have caused too many other changes). 
  Changed some string lengths to use size_t
  Removed some not needed casts
  Changed val_xxx(xxx, new_ptr) to take const pointers
sql/field_conv.cc:
  Removed some old types
  Added casts required because memory area pointers are now uchar*
sql/filesort.cc:
  Initalize variable that was used unitialized in error conditions
sql/gen_lex_hash.cc:
  Removed some old types
  Changed memory buffers to be uchar*
  Changed some string lengths to use size_t
  Removed a lot of casts
  Safety fix in Field_blob::val_decimal() to not access zero pointer
sql/gstream.h:
  Added required cast
sql/ha_ndbcluster.cc:
  Removed some old types
  Updated hash-get-key function arguments
  Changed some buffers to be uchar* to avoid casts
  Added required casts
  Removed some not needed casts
sql/ha_ndbcluster.h:
  Removed some old types
sql/ha_ndbcluster_binlog.cc:
  Removed some old types
  Changed some buffers to be uchar* to avoid casts
  Replaced sql_alloc() + memcpy() + set end 0 with sql_strmake()
  Changed some string lengths to use size_t
  Added missing casts for alloc() and sprintf()
sql/ha_ndbcluster_binlog.h:
  Removed some old types
sql/ha_ndbcluster_cond.cc:
  Removed some old types
  Removed some not needed casts
sql/ha_ndbcluster_cond.h:
  Removed some old types
sql/ha_partition.cc:
  Removed some old types
  Changed prototype for change_partition() to avoid casts
sql/ha_partition.h:
  Removed some old types
sql/handler.cc:
  Removed some old types
  Changed some string lengths to use size_t
sql/handler.h:
  Removed some old types
  Changed some string lengths to use size_t
  Changed type for 'frmblob' parameter for discover() and ha_discover() to get fewer casts
sql/hash_filo.h:
  Removed some old types
  Changed all functions to use size_t
sql/hostname.cc:
  Removed some old types
sql/item.cc:
  Removed some old types
  Changed some string lengths to use size_t
  Use strmake() instead of memdup() to create a null terminated string.
  Updated calls to new Field()
sql/item.h:
  Removed some old types
  Changed malloc(), free() and related functions to use void *
  Changed some buffers to be uchar* to avoid casts
sql/item_cmpfunc.cc:
  Removed some old types
  Changed some buffers to be uchar* to avoid casts
sql/item_cmpfunc.h:
  Removed some old types
sql/item_create.cc:
  Removed some old types
sql/item_func.cc:
  Removed some old types
  Changed some buffers to be uchar* to avoid casts
  Removed some not needed casts
  Added test for failing alloc() in init_result_field()
  Remove old confusing comment
  Fixed compiler warning
sql/item_func.h:
  Removed some old types
sql/item_row.cc:
  Removed some old types
sql/item_row.h:
  Removed some old types
sql/item_strfunc.cc:
  Include zlib (needed becasue we call crc32)
  Removed some old types
sql/item_strfunc.h:
  Removed some old types
  Changed some types to match new function prototypes
sql/item_subselect.cc:
  Removed some old types
sql/item_subselect.h:
  Removed some old types
sql/item_sum.cc:
  Removed some old types
  Changed some buffers to be uchar* to avoid casts
  Removed some not needed casts
sql/item_sum.h:
  Removed some old types
sql/item_timefunc.cc:
  Removed some old types
  Changed some string lengths to use size_t
sql/item_timefunc.h:
  Removed some old types
sql/item_xmlfunc.cc:
  Changed some string lengths to use size_t
sql/item_xmlfunc.h:
  Removed some old types
sql/key.cc:
  Removed some old types
  Removed some not needed casts
sql/lock.cc:
  Removed some old types
  Added some cast to my_multi_malloc() arguments for safety
sql/log.cc:
  Removed some old types
  Changed some string lengths to use size_t
  Changed some buffers to be uchar* to avoid casts
  Changed usage of pwrite() to not assume it holds the cursor position for the file
  Made usage of my_read() safer
sql/log_event.cc:
  Removed some old types
  Added checking of return value of malloc() in pack_info()
  Changed some buffers to be uchar* to avoid casts
  Removed some 'const' to avoid casts
  Added missing casts for alloc() and sprintf()
  Added required casts
  Removed some not needed casts
  Added some cast to my_multi_malloc() arguments for safety
sql/log_event.h:
  Removed some old types
  Changed some buffers to be uchar* to avoid casts
sql/log_event_old.cc:
  Changed some buffers to be uchar* to avoid casts
  Removed some not needed casts
sql/log_event_old.h:
  Changed some buffers to be uchar* to avoid casts
sql/mf_iocache.cc:
  Removed some old types
sql/my_decimal.cc:
  Changed memory area to use uchar*
sql/my_decimal.h:
  Changed memory area to use uchar*
sql/mysql_priv.h:
  Removed some old types
  Changed malloc(), free() and related functions to use void *
  Changed some string lengths to use size_t
  Changed definition of MOD_PAD_CHAR_TO_FULL_LENGTH to avoid long overflow
  Changed some buffers to be uchar* to avoid casts
sql/mysqld.cc:
  Removed some old types
sql/net_serv.cc:
  Removed some old types
  Changed some string lengths to use size_t
  Changed some buffers to be uchar* to avoid casts
  Ensure that vio_read()/vio_write() return values are stored in a size_t variable
  Removed some not needed casts
sql/opt_range.cc:
  Removed some old types
  Changed some buffers to be uchar* to avoid casts
  Removed some not needed casts
sql/opt_range.h:
  Removed some old types
  Changed some buffers to be uchar* to avoid casts
sql/opt_sum.cc:
  Removed some old types
  Removed some not needed casts
sql/parse_file.cc:
  Removed some old types
  Changed some string lengths to use size_t
  Changed alloc_root + memcpy + set end 0 -> strmake_root()
sql/parse_file.h:
  Removed some old types
sql/partition_info.cc:
  Removed some old types
  Added missing casts for alloc()
  Changed some buffers to be uchar* to avoid casts
sql/partition_info.h:
  Changed some buffers to be uchar* to avoid casts
sql/protocol.cc:
  Removed some old types
  Changed some buffers to be uchar* to avoid casts
  Removed some not needed casts
sql/protocol.h:
  Removed some old types
  Changed some buffers to be uchar* to avoid casts
  Changed some string lengths to use size_t
sql/records.cc:
  Removed some old types
sql/repl_failsafe.cc:
  Removed some old types
  Changed some string lengths to use size_t
  Added required casts
sql/rpl_filter.cc:
  Removed some old types
  Updated hash-get-key function arguments
  Changed some string lengths to use size_t
sql/rpl_filter.h:
  Changed some string lengths to use size_t
sql/rpl_injector.h:
  Removed some old types
sql/rpl_record.cc:
  Removed some old types
  Removed some not needed casts
  Changed some buffers to be uchar* to avoid casts
sql/rpl_record.h:
  Removed some old types
  Changed some buffers to be uchar* to avoid casts
sql/rpl_record_old.cc:
  Removed some old types
  Changed some buffers to be uchar* to avoid casts
  Removed some not needed casts
sql/rpl_record_old.h:
  Removed some old types
  Changed some buffers to be uchar* to avoid cast
sql/rpl_rli.cc:
  Removed some old types
sql/rpl_tblmap.cc:
  Removed some old types
sql/rpl_tblmap.h:
  Removed some old types
sql/rpl_utility.cc:
  Removed some old types
sql/rpl_utility.h:
  Removed some old types
  Changed type of m_size from my_size_t to ulong to reflect that m_size is the number of elements in the array, not a string/memory length
sql/set_var.cc:
  Removed some old types
  Updated parameters to dirname_part()
sql/set_var.h:
  Removed some old types
sql/slave.cc:
  Removed some old types
  Changed some string lengths to use size_t
sql/slave.h:
  Removed some old types
sql/sp.cc:
  Removed some old types
  Added missing casts for printf()
sql/sp.h:
  Removed some old types
  Updated hash-get-key function arguments
sql/sp_cache.cc:
  Removed some old types
  Added missing casts for printf()
  Updated hash-get-key function arguments
sql/sp_head.cc:
  Removed some old types
  Added missing casts for alloc() and printf()
  Added required casts
  Updated hash-get-key function arguments
sql/sp_head.h:
  Removed some old types
sql/sp_pcontext.cc:
  Removed some old types
sql/sp_pcontext.h:
  Removed some old types
sql/sql_acl.cc:
  Removed some old types
  Changed some string lengths to use size_t
  Changed some buffers to be uchar* to avoid casts
  Removed some not needed casts
  Added required casts
sql/sql_analyse.cc:
  Changed some buffers to be uchar* to avoid casts
sql/sql_analyse.h:
  Changed some buffers to be uchar* to avoid casts
sql/sql_array.h:
  Removed some old types
sql/sql_base.cc:
  Removed some old types
  Updated hash-get-key function arguments
sql/sql_binlog.cc:
  Removed some old types
  Added missing casts for printf()
sql/sql_cache.cc:
  Removed some old types
  Updated hash-get-key function arguments
  Removed some not needed casts
  Changed some string lengths to use size_t
sql/sql_cache.h:
  Removed some old types
  Removed reference to not existing function cache_key()
  Updated hash-get-key function arguments
sql/sql_class.cc:
  Removed some old types
  Updated hash-get-key function arguments
  Added missing casts for alloc()
  Updated hash-get-key function arguments
  Moved THD::max_row_length() to table.cc (as it's not depending on THD)
  Removed some not needed casts
sql/sql_class.h:
  Removed some old types
  Changed malloc(), free() and related functions to use void *
  Removed some not needed casts
  Changed some string lengths to use size_t
  Moved max_row_length and max_row_length_blob() to table.cc, as they are not depending on THD
sql/sql_connect.cc:
  Removed some old types
  Added required casts
sql/sql_db.cc:
  Removed some old types
  Removed some not needed casts
  Added some cast to my_multi_malloc() arguments for safety
  Added missing casts for alloc()
sql/sql_delete.cc:
  Removed some old types
sql/sql_handler.cc:
  Removed some old types
  Updated hash-get-key function arguments
  Added some cast to my_multi_malloc() arguments for safety
sql/sql_help.cc:
  Removed some old types
  Changed some buffers to be uchar* to avoid casts
  Removed some not needed casts
sql/sql_insert.cc:
  Removed some old types
  Added missing casts for alloc() and printf()
sql/sql_lex.cc:
  Removed some old types
sql/sql_lex.h:
  Removed some old types
  Removed some not needed casts
sql/sql_list.h:
  Removed some old types
  Removed some not needed casts
sql/sql_load.cc:
  Removed some old types
  Removed compiler warning
sql/sql_manager.cc:
  Removed some old types
sql/sql_map.cc:
  Removed some old types
sql/sql_map.h:
  Removed some old types
sql/sql_olap.cc:
  Removed some old types
sql/sql_parse.cc:
  Removed some old types
  Trivial move of code lines to make things more readable
  Changed some string lengths to use size_t
  Added missing casts for alloc()
sql/sql_partition.cc:
  Removed some old types
  Removed compiler warnings about not used functions
  Changed some buffers to be uchar* to avoid casts
  Removed some not needed casts
sql/sql_partition.h:
  Removed some old types
  Changed some buffers to be uchar* to avoid casts
sql/sql_plugin.cc:
  Removed some old types
  Added missing casts for alloc()
  Updated hash-get-key function arguments
sql/sql_prepare.cc:
  Removed some old types
  Changed some buffers to be uchar* to avoid casts
  Added missing casts for alloc() and printf()
sql-common/client.c:
  Removed some old types
  Changed some memory areas to use uchar*
sql-common/my_user.c:
  Changed some string lengths to use size_t
sql-common/pack.c:
  Changed some buffers to be uchar* to avoid casts
sql/sql_repl.cc:
  Added required casts
  Changed some buffers to be uchar* to avoid casts
  Changed some string lengths to use size_t
sql/sql_select.cc:
  Removed some old types
  Changed some buffers to be uchar* to avoid casts
  Removed some old types
sql/sql_select.h:
  Removed some old types
  Changed some buffers to be uchar* to avoid casts
sql/sql_servers.cc:
  Removed some old types
  Updated hash-get-key function arguments
sql/sql_show.cc:
  Removed some old types
  Added missing casts for alloc()
  Removed some not needed casts
sql/sql_string.cc:
  Removed some old types
  Added required casts
sql/sql_table.cc:
  Removed some old types
  Removed compiler warning about not used variable
  Changed some buffers to be uchar* to avoid casts
  Removed some not needed casts
sql/sql_test.cc:
  Removed some old types
sql/sql_trigger.cc:
  Removed some old types
  Added missing casts for alloc()
sql/sql_udf.cc:
  Removed some old types
  Updated hash-get-key function arguments
sql/sql_union.cc:
  Removed some old types
sql/sql_update.cc:
  Removed some old types
  Removed some not needed casts
sql/sql_view.cc:
  Removed some old types
sql/sql_yacc.yy:
  Removed some old types
  Changed some string lengths to use size_t
  Added missing casts for alloc()
sql/stacktrace.c:
  Removed some old types
sql/stacktrace.h:
  Removed some old types
sql/structs.h:
  Removed some old types
sql/table.cc:
  Removed some old types
  Updated hash-get-key function arguments
  Changed some buffers to be uchar* to avoid casts
  Removed setting of LEX_STRING() arguments in declaration
  Added required casts
  More function comments
  Moved max_row_length() here from sql_class.cc/sql_class.h
sql/table.h:
  Removed some old types
  Changed some string lengths to use size_t
sql/thr_malloc.cc:
  Use void* as type for allocated memory area
  Changed all functions to use size_t
sql/tzfile.h:
  Changed some buffers to be uchar* to avoid casts
sql/tztime.cc:
  Changed some buffers to be uchar* to avoid casts
  Updated hash-get-key function arguments
  Added missing casts for alloc()
  Removed some not needed casts
sql/uniques.cc:
  Removed some old types
  Removed some not needed casts
sql/unireg.cc:
  Removed some old types
  Changed some buffers to be uchar* to avoid casts
  Removed some not needed casts
  Added missing casts for alloc()
storage/archive/archive_reader.c:
  Removed some old types
storage/archive/azio.c:
  Removed some old types
  Removed some not needed casts
storage/archive/ha_archive.cc:
  Removed some old types
  Changed type for 'frmblob' in archive_discover() to match handler
  Updated hash-get-key function arguments
  Removed some not needed casts
storage/archive/ha_archive.h:
  Removed some old types
storage/blackhole/ha_blackhole.cc:
  Removed some old types
storage/blackhole/ha_blackhole.h:
  Removed some old types
storage/csv/ha_tina.cc:
  Removed some old types
  Updated hash-get-key function arguments
  Changed some buffers to be uchar* to avoid casts
storage/csv/ha_tina.h:
  Removed some old types
  Removed some not needed casts
storage/csv/transparent_file.cc:
  Removed some old types
  Changed type of 'bytes_read' to be able to detect read errors
  Fixed indentation
storage/csv/transparent_file.h:
  Removed some old types
storage/example/ha_example.cc:
  Removed some old types
  Updated hash-get-key function arguments
storage/example/ha_example.h:
  Removed some old types
storage/federated/ha_federated.cc:
  Removed some old types
  Updated hash-get-key function arguments
  Removed some not needed casts
storage/federated/ha_federated.h:
  Removed some old types
storage/heap/_check.c:
  Changed some buffers to be uchar* to avoid casts
storage/heap/_rectest.c:
  Removed some old types
storage/heap/ha_heap.cc:
  Removed some old types
storage/heap/ha_heap.h:
  Removed some old types
storage/heap/heapdef.h:
  Removed some old types
storage/heap/hp_block.c:
  Removed some old types
  Changed some string lengths to use size_t
storage/heap/hp_clear.c:
  Removed some old types
storage/heap/hp_close.c:
  Removed some old types
storage/heap/hp_create.c:
  Removed some old types
storage/heap/hp_delete.c:
  Removed some old types
storage/heap/hp_hash.c:
  Removed some old types
storage/heap/hp_info.c:
  Removed some old types
storage/heap/hp_open.c:
  Removed some old types
storage/heap/hp_rfirst.c:
  Removed some old types
storage/heap/hp_rkey.c:
  Removed some old types
storage/heap/hp_rlast.c:
  Removed some old types
storage/heap/hp_rnext.c:
  Removed some old types
storage/heap/hp_rprev.c:
  Removed some old types
storage/heap/hp_rrnd.c:
  Removed some old types
storage/heap/hp_rsame.c:
  Removed some old types
storage/heap/hp_scan.c:
  Removed some old types
storage/heap/hp_test1.c:
  Removed some old types
storage/heap/hp_test2.c:
  Removed some old types
storage/heap/hp_update.c:
  Removed some old types
storage/heap/hp_write.c:
  Removed some old types
  Changed some string lengths to use size_t
storage/innobase/handler/ha_innodb.cc:
  Removed some old types
  Updated hash-get-key function arguments
  Added missing casts for alloc() and printf()
  Removed some not needed casts
storage/innobase/handler/ha_innodb.h:
  Removed some old types
storage/myisam/ft_boolean_search.c:
  Removed some old types
storage/myisam/ft_nlq_search.c:
  Removed some old types
storage/myisam/ft_parser.c:
  Removed some old types
  Changed some buffers to be uchar* to avoid casts
storage/myisam/ft_static.c:
  Removed some old types
storage/myisam/ft_stopwords.c:
  Removed some old types
storage/myisam/ft_update.c:
  Removed some old types
  Changed some buffers to be uchar* to avoid casts
storage/myisam/ftdefs.h:
  Removed some old types
  Changed some buffers to be uchar* to avoid casts
storage/myisam/fulltext.h:
  Removed some old types
storage/myisam/ha_myisam.cc:
  Removed some old types
storage/myisam/ha_myisam.h:
  Removed some old types
storage/myisam/mi_cache.c:
  Removed some old types
  Changed some buffers to be uchar* to avoid casts
storage/myisam/mi_check.c:
  Removed some old types
storage/myisam/mi_checksum.c:
  Removed some old types
storage/myisam/mi_close.c:
  Removed some old types
storage/myisam/mi_create.c:
  Removed some old types
storage/myisam/mi_delete.c:
  Removed some old types
storage/myisam/mi_delete_all.c:
  Removed some old types
storage/myisam/mi_dynrec.c:
  Removed some old types
storage/myisam/mi_extra.c:
  Removed some old types
storage/myisam/mi_key.c:
  Removed some old types
storage/myisam/mi_locking.c:
  Removed some old types
storage/myisam/mi_log.c:
  Removed some old types
storage/myisam/mi_open.c:
  Removed some old types
  Removed some not needed casts
  Check argument of my_write()/my_pwrite() in functions returning int
  Added casting of string lengths to size_t
storage/myisam/mi_packrec.c:
  Removed some old types
  Changed some buffers to be uchar* to avoid casts
storage/myisam/mi_page.c:
  Removed some old types
storage/myisam/mi_preload.c:
  Removed some old types
storage/myisam/mi_range.c:
  Removed some old types
storage/myisam/mi_rfirst.c:
  Removed some old types
storage/myisam/mi_rkey.c:
  Removed some old types
storage/myisam/mi_rlast.c:
  Removed some old types
storage/myisam/mi_rnext.c:
  Removed some old types
storage/myisam/mi_rnext_same.c:
  Removed some old types
storage/myisam/mi_rprev.c:
  Removed some old types
storage/myisam/mi_rrnd.c:
  Removed some old types
storage/myisam/mi_rsame.c:
  Removed some old types
storage/myisam/mi_rsamepos.c:
  Removed some old types
storage/myisam/mi_scan.c:
  Removed some old types
storage/myisam/mi_search.c:
  Removed some old types
storage/myisam/mi_static.c:
  Removed some old types
storage/myisam/mi_statrec.c:
  Removed some old types
storage/myisam/mi_test1.c:
  Removed some old types
storage/myisam/mi_test2.c:
  Removed some old types
storage/myisam/mi_test3.c:
  Removed some old types
storage/myisam/mi_unique.c:
  Removed some old types
storage/myisam/mi_update.c:
  Removed some old types
storage/myisam/mi_write.c:
  Removed some old types
storage/myisam/myisam_ftdump.c:
  Removed some old types
storage/myisam/myisamchk.c:
  Removed some old types
storage/myisam/myisamdef.h:
  Removed some old types
storage/myisam/myisamlog.c:
  Removed some old types
  Indentation fix
storage/myisam/myisampack.c:
  Removed some old types
storage/myisam/rt_index.c:
  Removed some old types
storage/myisam/rt_split.c:
  Removed some old types
storage/myisam/sort.c:
  Removed some old types
storage/myisam/sp_defs.h:
  Removed some old types
storage/myisam/sp_key.c:
  Removed some old types
storage/myisammrg/ha_myisammrg.cc:
  Removed some old types
storage/myisammrg/ha_myisammrg.h:
  Removed some old types
storage/myisammrg/myrg_close.c:
  Removed some old types
storage/myisammrg/myrg_def.h:
  Removed some old types
storage/myisammrg/myrg_delete.c:
  Removed some old types
storage/myisammrg/myrg_open.c:
  Removed some old types
  Updated parameters to dirname_part()
storage/myisammrg/myrg_queue.c:
  Removed some old types
storage/myisammrg/myrg_rfirst.c:
  Removed some old types
storage/myisammrg/myrg_rkey.c:
  Removed some old types
storage/myisammrg/myrg_rlast.c:
  Removed some old types
storage/myisammrg/myrg_rnext.c:
  Removed some old types
storage/myisammrg/myrg_rnext_same.c:
  Removed some old types
storage/myisammrg/myrg_rprev.c:
  Removed some old types
storage/myisammrg/myrg_rrnd.c:
  Removed some old types
storage/myisammrg/myrg_rsame.c:
  Removed some old types
storage/myisammrg/myrg_update.c:
  Removed some old types
storage/myisammrg/myrg_write.c:
  Removed some old types
storage/ndb/include/util/ndb_opts.h:
  Removed some old types
storage/ndb/src/cw/cpcd/main.cpp:
  Removed some old types
storage/ndb/src/kernel/vm/Configuration.cpp:
  Removed some old types
storage/ndb/src/mgmclient/main.cpp:
  Removed some old types
storage/ndb/src/mgmsrv/InitConfigFileParser.cpp:
  Removed some old types
  Removed old disabled code
storage/ndb/src/mgmsrv/main.cpp:
  Removed some old types
storage/ndb/src/ndbapi/NdbBlob.cpp:
  Removed some old types
storage/ndb/src/ndbapi/NdbOperationDefine.cpp:
  Removed not used variable
storage/ndb/src/ndbapi/NdbOperationInt.cpp:
  Added required casts
storage/ndb/src/ndbapi/NdbScanOperation.cpp:
  Added required casts
storage/ndb/tools/delete_all.cpp:
  Removed some old types
storage/ndb/tools/desc.cpp:
  Removed some old types
storage/ndb/tools/drop_index.cpp:
  Removed some old types
storage/ndb/tools/drop_tab.cpp:
  Removed some old types
storage/ndb/tools/listTables.cpp:
  Removed some old types
storage/ndb/tools/ndb_config.cpp:
  Removed some old types
storage/ndb/tools/restore/consumer_restore.cpp:
  Changed some buffers to be uchar* to avoid casts with new defintion of packfrm()
storage/ndb/tools/restore/restore_main.cpp:
  Removed some old types
storage/ndb/tools/select_all.cpp:
  Removed some old types
storage/ndb/tools/select_count.cpp:
  Removed some old types
storage/ndb/tools/waiter.cpp:
  Removed some old types
strings/bchange.c:
  Changed function to use uchar * and size_t
strings/bcmp.c:
  Changed function to use uchar * and size_t
strings/bmove512.c:
  Changed function to use uchar * and size_t
strings/bmove_upp.c:
  Changed function to use uchar * and size_t
strings/ctype-big5.c:
  Changed functions to use size_t
  Changed character length functions to return uint
strings/ctype-bin.c:
  Changed functions to use size_t
strings/ctype-cp932.c:
  Changed functions to use size_t
  Changed character length functions to return uint
strings/ctype-czech.c:
  Fixed indentation
  Changed functions to use size_t
strings/ctype-euc_kr.c:
  Changed functions to use size_t
  Changed character length functions to return uint
strings/ctype-eucjpms.c:
  Changed functions to use size_t
  Changed character length functions to return uint
  unsigned char -> uchar
strings/ctype-gb2312.c:
  Changed functions to use size_t
  Changed character length functions to return uint
strings/ctype-gbk.c:
  Changed functions to use size_t
  Changed character length functions to return uint
strings/ctype-latin1.c:
  Changed functions to use size_t
  Changed character length functions to return uint
  unsigned char -> uchar
strings/ctype-mb.c:
  Changed functions to use size_t
  Changed character length functions to return uint
strings/ctype-simple.c:
  Changed functions to use size_t
  Simpler loops for caseup/casedown
  unsigned int -> uint
  unsigned char -> uchar
strings/ctype-sjis.c:
  Changed functions to use size_t
  Changed character length functions to return uint
strings/ctype-tis620.c:
  Changed functions to use size_t
  Changed character length functions to return uint
  unsigned char -> uchar
strings/ctype-uca.c:
  Changed functions to use size_t
  unsigned char -> uchar
strings/ctype-ucs2.c:
  Moved inclusion of stdarg.h to other includes
  usigned char -> uchar
  Changed functions to use size_t
  Changed character length functions to return uint
strings/ctype-ujis.c:
  Changed functions to use size_t
  Changed character length functions to return uint
  unsigned char -> uchar
strings/ctype-utf8.c:
  Changed functions to use size_t
  unsigned char -> uchar
  Indentation fixes
strings/ctype-win1250ch.c:
  Indentation fixes
  Changed functions to use size_t
strings/ctype.c:
  Changed functions to use size_t
strings/decimal.c:
  Changed type for memory argument to uchar *
strings/do_ctype.c:
  Indentation fixes
strings/my_strtoll10.c:
  unsigned char -> uchar
strings/my_vsnprintf.c:
  Changed functions to use size_t
strings/r_strinstr.c:
  Removed some old types
  Changed functions to use size_t
strings/str_test.c:
  Removed some old types
strings/strappend.c:
  Changed functions to use size_t
strings/strcont.c:
  Removed some old types
strings/strfill.c:
  Removed some old types
strings/strinstr.c:
  Changed functions to use size_t
strings/strlen.c:
  Changed functions to use size_t
strings/strmake.c:
  Changed functions to use size_t
strings/strnlen.c:
  Changed functions to use size_t
strings/strnmov.c:
  Changed functions to use size_t
strings/strto.c:
  unsigned char -> uchar
strings/strtod.c:
  Changed functions to use size_t
strings/strxnmov.c:
  Changed functions to use size_t
strings/xml.c:
  Changed functions to use size_t
  Indentation fixes
tests/mysql_client_test.c:
  Removed some old types
tests/thread_test.c:
  Removed some old types
vio/test-ssl.c:
  Removed some old types
vio/test-sslclient.c:
  Removed some old types
vio/test-sslserver.c:
  Removed some old types
vio/vio.c:
  Removed some old types
vio/vio_priv.h:
  Removed some old types
  Changed vio_read()/vio_write() to work with size_t
vio/viosocket.c:
  Changed vio_read()/vio_write() to work with size_t
  Indentation fixes
vio/viossl.c:
  Changed vio_read()/vio_write() to work with size_t
  Indentation fixes
vio/viosslfactories.c:
  Removed some old types
vio/viotest-ssl.c:
  Removed some old types
win/README:
  More explanations
2007-05-10 12:59:39 +03:00
monty@mysql.com/narttu.mysql.fi
088e2395f1 WL#3817: Simplify string / memory area types and make things more consistent (first part)
The following type conversions was done:

- Changed byte to uchar
- Changed gptr to uchar*
- Change my_string to char *
- Change my_size_t to size_t
- Change size_s to size_t

Removed declaration of byte, gptr, my_string, my_size_t and size_s. 

Following function parameter changes was done:
- All string functions in mysys/strings was changed to use size_t
  instead of uint for string lengths.
- All read()/write() functions changed to use size_t (including vio).
- All protocoll functions changed to use size_t instead of uint
- Functions that used a pointer to a string length was changed to use size_t*
- Changed malloc(), free() and related functions from using gptr to use void *
  as this requires fewer casts in the code and is more in line with how the
  standard functions work.
- Added extra length argument to dirname_part() to return the length of the
  created string.
- Changed (at least) following functions to take uchar* as argument:
  - db_dump()
  - my_net_write()
  - net_write_command()
  - net_store_data()
  - DBUG_DUMP()
  - decimal2bin() & bin2decimal()
- Changed my_compress() and my_uncompress() to use size_t. Changed one
  argument to my_uncompress() from a pointer to a value as we only return
  one value (makes function easier to use).
- Changed type of 'pack_data' argument to packfrm() to avoid casts.
- Changed in readfrm() and writefrom(), ha_discover and handler::discover()
  the type for argument 'frmdata' to uchar** to avoid casts.
- Changed most Field functions to use uchar* instead of char* (reduced a lot of
  casts).
- Changed field->val_xxx(xxx, new_ptr) to take const pointers.

Other changes:
- Removed a lot of not needed casts
- Added a few new cast required by other changes
- Added some cast to my_multi_malloc() arguments for safety (as string lengths
  needs to be uint, not size_t).
- Fixed all calls to hash-get-key functions to use size_t*. (Needed to be done
  explicitely as this conflict was often hided by casting the function to
  hash_get_key).
- Changed some buffers to memory regions to uchar* to avoid casts.
- Changed some string lengths from uint to size_t.
- Changed field->ptr to be uchar* instead of char*. This allowed us to
  get rid of a lot of casts.
- Some changes from true -> TRUE, false -> FALSE, unsigned char -> uchar
- Include zlib.h in some files as we needed declaration of crc32()
- Changed MY_FILE_ERROR to be (size_t) -1.
- Changed many variables to hold the result of my_read() / my_write() to be
  size_t. This was needed to properly detect errors (which are
  returned as (size_t) -1).
- Removed some very old VMS code
- Changed packfrm()/unpackfrm() to not be depending on uint size
  (portability fix)
- Removed windows specific code to restore cursor position as this
  causes slowdown on windows and we should not mix read() and pread()
  calls anyway as this is not thread safe. Updated function comment to
  reflect this. Changed function that depended on original behavior of
  my_pwrite() to itself restore the cursor position (one such case).
- Added some missing checking of return value of malloc().
- Changed definition of MOD_PAD_CHAR_TO_FULL_LENGTH to avoid 'long' overflow.
- Changed type of table_def::m_size from my_size_t to ulong to reflect that
  m_size is the number of elements in the array, not a string/memory
  length.
- Moved THD::max_row_length() to table.cc (as it's not depending on THD).
  Inlined max_row_length_blob() into this function.
- More function comments
- Fixed some compiler warnings when compiled without partitions.
- Removed setting of LEX_STRING() arguments in declaration (portability fix).
- Some trivial indentation/variable name changes.
- Some trivial code simplifications:
  - Replaced some calls to alloc_root + memcpy to use
    strmake_root()/strdup_root().
  - Changed some calls from memdup() to strmake() (Safety fix)
  - Simpler loops in client-simple.c
2007-05-10 12:59:39 +03:00
unknown
7d383909db wl#3700 - post-review fixes:
s/ulonglong/key_part_map/, comments


include/heap.h:
  wl#3700 - post-review fixes:
  s/ulonglong/key_part_map/
include/my_base.h:
  wl#3700 - post-review fixes:
  s/ulonglong/key_part_map/
include/myisam.h:
  wl#3700 - post-review fixes:
  s/ulonglong/key_part_map/
include/myisammrg.h:
  wl#3700 - post-review fixes:
  s/ulonglong/key_part_map/
sql/event_db_repository.cc:
  wl#3700 - post-review fixes:
  s/ulonglong/key_part_map/
sql/ha_partition.cc:
  wl#3700 - post-review fixes:
  s/ulonglong/key_part_map/
sql/ha_partition.h:
  wl#3700 - post-review fixes:
  s/ulonglong/key_part_map/
sql/sql_select.h:
  wl#3700 - post-review fixes:
  remove tab_to_keypart_map()
2007-03-17 00:13:25 +01:00
serg@janus.mylan
68fd66e853 wl#3700 - post-review fixes:
s/ulonglong/key_part_map/, comments
2007-03-17 00:13:25 +01:00
unknown
4e8b49d656 WL#3700: Handler API change: all index search methods - that is,
index_read(), index_read_idx(), index_read_last(), and
records_in_range() - instead of 'uint keylen' argument take
'ulonglong keypart_map', a bitmap showing which keyparts are
present in the key value.
Fallback method is provided for handlers that are lagging behind.
2007-01-29 10:40:26 +01:00
serg@janus.mylan
a07fd5fa8f WL#3700: Handler API change: all index search methods - that is,
index_read(), index_read_idx(), index_read_last(), and
records_in_range() - instead of 'uint keylen' argument take
'ulonglong keypart_map', a bitmap showing which keyparts are
present in the key value.
Fallback method is provided for handlers that are lagging behind.
2007-01-29 10:40:26 +01:00
unknown
4dabfa5de7 Merge mysql.com:/home/kent/bk/main/mysql-5.0
into  mysql.com:/home/kent/bk/main/mysql-5.1


BUILD/Makefile.am:
  Auto merged
BitKeeper/deleted/.del-ArrayFifoList.hpp~7036ae04dd7e7bd2:
  Auto merged
BitKeeper/deleted/.del-ArrayList.hpp~44695d09b1a02179:
  Auto merged
BitKeeper/deleted/.del-DbtupLCP.cpp~855b1ed3fbc86a42:
  Auto merged
BitKeeper/deleted/.del-DbtupSystemRestart.cpp~15b54d7e4e75d2d:
  Auto merged
BitKeeper/deleted/.del-DbtupUndoLog.cpp~5a2ef6e86b1404e9:
  Auto merged
Makefile.am:
  Auto merged
BitKeeper/deleted/.del-Makefile.am~2:
  Auto merged
BitKeeper/deleted/.del-Makefile.am~ab5c84d46412dc2e:
  Auto merged
BitKeeper/deleted/.del-Makefile.am~abb265028eb9b6a7:
  Auto merged
BitKeeper/deleted/.del-Makefile.am~de166d6fcac3b9b6:
  Auto merged
BitKeeper/deleted/.del-Makefile.am~e5b911533dad2713:
  Auto merged
BitKeeper/deleted/.del-Makefile.am~ead19441cc5ff35c:
  Auto merged
BitKeeper/deleted/.del-Makefile.am~f87185e232d7c4f:
  Auto merged
BitKeeper/deleted/.del-Makefile.in:
  Auto merged
BitKeeper/deleted/.del-MemoryChannelOSE.hpp:
  Auto merged
BitKeeper/deleted/.del-MetaData.cpp~146ae9865dd35829:
  Auto merged
BitKeeper/deleted/.del-MetaData.hpp~538342afcd8ac53c:
  Auto merged
BitKeeper/deleted/.del-NdbCondition.c~ad83464328ab37af:
  Auto merged
BitKeeper/deleted/.del-NdbCondition.c~ee56562abdd718cf:
  Auto merged
BitKeeper/deleted/.del-NdbConditionOSE.h~455dd2c29c2e6344:
  Auto merged
BitKeeper/deleted/.del-NdbDaemon.c~3b8101f376b28df:
  Auto merged
BitKeeper/deleted/.del-NdbEnv.c~207f9ce9754c9e8a:
  Auto merged
BitKeeper/deleted/.del-NdbEnv.c~bb6fe7572d45288a:
  Auto merged
BitKeeper/deleted/.del-NdbErrHnd.cpp:
  Auto merged
BitKeeper/deleted/.del-NdbHost.c~2c29816c77396d7b:
  Auto merged
BitKeeper/deleted/.del-NdbHost.c~cf18d6b3c825180c:
  Auto merged
BitKeeper/deleted/.del-NdbMem.c~6285b159985d46da:
  Auto merged
BitKeeper/deleted/.del-NdbMem.c~6c2b317c1ce230ab:
  Auto merged
BitKeeper/deleted/.del-NdbMem_SoftOse.cpp~9c61e311ec168d44:
  Auto merged
BitKeeper/deleted/.del-NdbMutex.c~768131269bccca10:
  Auto merged
BitKeeper/deleted/.del-NdbMutex.c~f4bdd19be08b84ab:
  Auto merged
BitKeeper/deleted/.del-NdbOut.cpp~8caa99a0d729540c:
  Auto merged
BitKeeper/deleted/.del-NdbSleep.c~b643ea3e7103eb62:
  Auto merged
BitKeeper/deleted/.del-NdbSleep.c~b88fbc5b140de10d:
  Auto merged
BitKeeper/deleted/.del-NdbTCP.c~1e9f416992352f6d:
  Auto merged
BitKeeper/deleted/.del-NdbTCP.c~b09cdcbef3ea2c57:
  Auto merged
BitKeeper/deleted/.del-NdbThread.c~2fe1fa5f47801772:
  Auto merged
BitKeeper/deleted/.del-NdbThread.c~fe71a67b5c3a4724:
  Auto merged
BitKeeper/deleted/.del-NdbTick.c~aa6385567216509d:
  Auto merged
BitKeeper/deleted/.del-NdbTick.c~b76feba2cf1493d1:
  Auto merged
BitKeeper/deleted/.del-OSE_Receiver.cpp:
  Auto merged
BitKeeper/deleted/.del-OSE_Receiver.hpp:
  Auto merged
BitKeeper/deleted/.del-OSE_Signals.hpp:
  Auto merged
BitKeeper/deleted/.del-OSE_Transporter.cpp:
  Auto merged
BitKeeper/deleted/.del-OSE_Transporter.hpp:
  Auto merged
BitKeeper/deleted/.del-TraceNdbApi.hpp~7a7f0ae5b70358bc:
  Auto merged
BitKeeper/deleted/.del-VerifyNdbApi.hpp~f417f78f7cd05935:
  Auto merged
BitKeeper/deleted/.del-bcd.h~81fbfcc1530534da:
  Auto merged
BitKeeper/deleted/.del-config-os2.h~a16b51851ddd317b:
  Auto merged
BitKeeper/deleted/.del-dbGenerator.c~7509c19f70cad0bf:
  Auto merged
BitKeeper/deleted/.del-dbGenerator.h~63f1aeb98260bcb7:
  Auto merged
BitKeeper/deleted/.del-dbGenerator.h~e1aaa6725999d458:
  Auto merged
BitKeeper/deleted/.del-dbPopulate.c~5dcff1c99783d83b:
  Auto merged
BitKeeper/deleted/.del-dbPopulate.h~229a894b59d4da73:
  Auto merged
BitKeeper/deleted/.del-ha_berkeley.cc:
  Auto merged
BitKeeper/deleted/.del-ha_berkeley.h:
  Auto merged
BitKeeper/deleted/.del-localDbPrepare.c~33a2c46afc8fac9a:
  Auto merged
BitKeeper/deleted/.del-macros.h~58097d584e29b5df:
  Auto merged
BitKeeper/deleted/.del-macros.h~742871fab0681964:
  Auto merged
BitKeeper/deleted/.del-mainGenerator.c~2d1c8016f72b2517:
  Auto merged
BitKeeper/deleted/.del-mainPopulate.c~37def9a44980b8ec:
  Auto merged
BitKeeper/deleted/.del-mgmapi_logevent.cpp~f1e7cf3e70edc4:
  Auto merged
BitKeeper/deleted/.del-mmslist.cpp:
  Auto merged
BitKeeper/deleted/.del-my_lread.c:
  Auto merged
BitKeeper/deleted/.del-my_lwrite.c:
  Auto merged
BitKeeper/deleted/.del-my_os2cond.c~e3b520af1c371bb5:
  Auto merged
BitKeeper/deleted/.del-my_os2dirsrch.c~4e2479b2abb2eb5a:
  Auto merged
BitKeeper/deleted/.del-my_os2dirsrch.h~5011cbc657537d0:
  Auto merged
BitKeeper/deleted/.del-my_os2dlfcn.c~6d94b488717683dd:
  Auto merged
BitKeeper/deleted/.del-my_os2dlfcn.h0~eae8edb8555eff87:
  Auto merged
BitKeeper/deleted/.del-my_os2file64.c~251fb8a1e950c31b:
  Auto merged
BitKeeper/deleted/.del-my_os2thread.c~65dca991548cec2a:
  Auto merged
BitKeeper/deleted/.del-my_os2tls.c~58ade7a0f70ad5ea:
  Auto merged
BitKeeper/deleted/.del-mysqlmanager-pwgen.c~d8f5f91ec54432b9:
  Auto merged
BitKeeper/deleted/.del-mysqlmanager.c~e97636d71145a0b:
  Auto merged
BitKeeper/deleted/.del-mysqlmanagerc.c~4f6e3499e68508f6:
  Auto merged
BitKeeper/deleted/.del-ndb_error.hpp~24468bb7f20a0b41:
  Auto merged
BitKeeper/deleted/.del-ndb_error.hpp~45a2fef922beae3:
  Auto merged
BitKeeper/deleted/.del-ndb_schema.hpp~de9c21185d6bfe4e:
  Auto merged
BitKeeper/deleted/.del-ndbapi_async.cpp~319189569fb659ec:
  Auto merged
BitKeeper/deleted/.del-ndbapi_async1.cpp~2995dac9b963a0d:
  Auto merged
BitKeeper/deleted/.del-ndbapi_event.cpp~c5d949802966180:
  Auto merged
BitKeeper/deleted/.del-ndbapi_retries.cpp~7301496d8c1c310a:
  Auto merged
BitKeeper/deleted/.del-ndbapi_scan.cpp~14ed2aa9a5d9e597:
  Auto merged
BitKeeper/deleted/.del-ndbapi_simple.cpp~80962179f3c2f5b8:
  Auto merged
BitKeeper/deleted/.del-ndbapi_simple_index.cpp~4b95a4d71808b5b6:
  Auto merged
BitKeeper/deleted/.del-print-limit-table~b8e808031daa3758:
  Auto merged
BitKeeper/deleted/.del-raid.cc~488f5fa6538394e1:
  Auto merged
BitKeeper/deleted/.del-raid.h~2d2503a66b128ac6:
  Auto merged
BitKeeper/deleted/.del-raid2.c~fe7aea5fb4b9748c:
  Auto merged
BitKeeper/deleted/.del-sql_manager.h:
  Auto merged
BitKeeper/deleted/.del-testData.h~696038ea2623a90b:
  Auto merged
BitKeeper/deleted/.del-testData.h~898b71d7c639319e:
  Auto merged
BitKeeper/deleted/.del-testDefinitions.h~f18a4553579a3725:
  Auto merged
BitKeeper/deleted/.del-userHandle.h~3275bb415e1ca2c2:
  Auto merged
BitKeeper/deleted/.del-userHandle.h~ec22dc7a7ed2f81b:
  Auto merged
BitKeeper/deleted/.del-userInterface.cpp~82ee612ab14b3d48:
  Auto merged
BitKeeper/deleted/.del-userInterface.c~92a20032f7d1e91:
  Auto merged
BitKeeper/deleted/.del-userInterface.h~1f76ad2f28b283fd:
  Auto merged
BitKeeper/deleted/.del-userInterface.h~49139f029bbdaabc:
  Auto merged
BitKeeper/deleted/.del-userTransaction.c~438012ecc761b776:
  Auto merged
BitKeeper/deleted/.del-userTransaction.c~f50661b4f54b0bdd:
  Auto merged
BitKeeper/deleted/.del-utv.h~f64af026b9705ebb:
  Auto merged
BitKeeper/deleted/.del-vcdrfunc.h~85803875180684cd:
  Auto merged
BitKeeper/deleted/.del-waiter.cpp~b188e4bfddf2cf98:
  Auto merged
Docs/Makefile.am:
  Auto merged
client/Makefile.am:
  Auto merged
client/client_priv.h:
  Auto merged
client/get_password.c:
  Auto merged
client/mysql.cc:
  Auto merged
client/mysql_upgrade.c:
  Auto merged
client/mysqladmin.cc:
  Auto merged
client/mysqlbinlog.cc:
  Auto merged
client/mysqlcheck.c:
  Auto merged
client/mysqldump.c:
  Auto merged
client/mysqlimport.c:
  Auto merged
client/mysqlshow.c:
  Auto merged
client/mysqltest.c:
  Auto merged
dbug/Makefile.am:
  Auto merged
extra/Makefile.am:
  Auto merged
extra/comp_err.c:
  Auto merged
extra/perror.c:
  Auto merged
extra/replace.c:
  Auto merged
extra/resolveip.c:
  Auto merged
include/Makefile.am:
  Auto merged
include/base64.h:
  Auto merged
include/config-netware.h:
  Auto merged
include/config-win.h:
  Auto merged
include/decimal.h:
  Auto merged
include/errmsg.h:
  Auto merged
include/ft_global.h:
  Auto merged
include/heap.h:
  Auto merged
include/m_ctype.h:
  Auto merged
include/m_string.h:
  Auto merged
include/my_base.h:
  Auto merged
include/my_bitmap.h:
  Auto merged
include/my_dbug.h:
  Auto merged
include/my_global.h:
  Auto merged
include/my_net.h:
  Auto merged
include/my_no_pthread.h:
  Auto merged
include/my_nosys.h:
  Auto merged
include/my_pthread.h:
  Auto merged
include/my_sys.h:
  Auto merged
include/my_time.h:
  Auto merged
include/my_tree.h:
  Auto merged
include/my_xml.h:
  Auto merged
include/myisam.h:
  Auto merged
include/myisammrg.h:
  Auto merged
include/mysql.h:
  Auto merged
include/mysql_com.h:
  Auto merged
include/mysys_err.h:
  Auto merged
include/queues.h:
  Auto merged
include/thr_alarm.h:
  Auto merged
include/thr_lock.h:
  Auto merged
include/violite.h:
  Auto merged
libmysqld/Makefile.am:
  Auto merged
libmysqld/emb_qcache.cc:
  Auto merged
libmysqld/embedded_priv.h:
  Auto merged
libmysqld/examples/Makefile.am:
  Auto merged
libmysqld/libmysqld.c:
  Auto merged
mysql-test/Makefile.am:
  Auto merged
mysys/Makefile.am:
  Auto merged
mysys/array.c:
  Auto merged
mysys/base64.c:
  Auto merged
mysys/charset-def.c:
  Auto merged
mysys/default.c:
  Auto merged
mysys/default_modify.c:
  Auto merged
mysys/errors.c:
  Auto merged
mysys/hash.c:
  Auto merged
mysys/mf_dirname.c:
  Auto merged
mysys/mf_format.c:
  Auto merged
mysys/mf_iocache.c:
  Auto merged
mysys/mf_iocache2.c:
  Auto merged
mysys/mf_keycache.c:
  Auto merged
mysys/mf_pack.c:
  Auto merged
mysys/mf_path.c:
  Auto merged
mysys/mf_tempdir.c:
  Auto merged
mysys/mf_tempfile.c:
  Auto merged
mysys/my_access.c:
  Auto merged
mysys/my_alloc.c:
  Auto merged
mysys/my_append.c:
  Auto merged
mysys/my_bit.c:
  Auto merged
mysys/my_bitmap.c:
  Auto merged
mysys/my_clock.c:
  Auto merged
mysys/my_compress.c:
  Auto merged
mysys/my_copy.c:
  Auto merged
mysys/my_create.c:
  Auto merged
mysys/my_dup.c:
  Auto merged
mysys/my_error.c:
  Auto merged
mysys/my_file.c:
  Auto merged
mysys/my_gethostbyname.c:
  Auto merged
mysys/my_getopt.c:
  Auto merged
mysys/my_getwd.c:
  Auto merged
mysys/my_handler.c:
  Auto merged
mysys/my_init.c:
  Auto merged
mysys/my_lib.c:
  Auto merged
mysys/my_lock.c:
  Auto merged
mysys/my_malloc.c:
  Auto merged
mysys/my_mkdir.c:
  Auto merged
mysys/my_mmap.c:
  Auto merged
mysys/my_net.c:
  Auto merged
mysys/my_once.c:
  Auto merged
mysys/my_open.c:
  Auto merged
mysys/my_pread.c:
  Auto merged
mysys/my_pthread.c:
  Auto merged
mysys/my_redel.c:
  Auto merged
mysys/my_rename.c:
  Auto merged
mysys/my_seek.c:
  Auto merged
mysys/my_sleep.c:
  Auto merged
mysys/my_static.c:
  Auto merged
mysys/my_symlink2.c:
  Auto merged
mysys/my_thr_init.c:
  Auto merged
mysys/mysys_priv.h:
  Auto merged
mysys/ptr_cmp.c:
  Auto merged
mysys/queues.c:
  Auto merged
mysys/safemalloc.c:
  Auto merged
mysys/string.c:
  Auto merged
mysys/test_dir.c:
  Auto merged
mysys/testhash.c:
  Auto merged
mysys/thr_alarm.c:
  Auto merged
mysys/thr_lock.c:
  Auto merged
mysys/thr_mutex.c:
  Auto merged
regex/Makefile.am:
  Auto merged
scripts/Makefile.am:
  Auto merged
server-tools/instance-manager/Makefile.am:
  Auto merged
server-tools/instance-manager/buffer.cc:
  Auto merged
server-tools/instance-manager/command.cc:
  Auto merged
server-tools/instance-manager/command.h:
  Auto merged
server-tools/instance-manager/commands.cc:
  Auto merged
server-tools/instance-manager/commands.h:
  Auto merged
server-tools/instance-manager/guardian.cc:
  Auto merged
server-tools/instance-manager/guardian.h:
  Auto merged
server-tools/instance-manager/instance.cc:
  Auto merged
server-tools/instance-manager/instance.h:
  Auto merged
server-tools/instance-manager/instance_map.cc:
  Auto merged
server-tools/instance-manager/instance_map.h:
  Auto merged
server-tools/instance-manager/instance_options.cc:
  Auto merged
server-tools/instance-manager/instance_options.h:
  Auto merged
server-tools/instance-manager/listener.cc:
  Auto merged
server-tools/instance-manager/listener.h:
  Auto merged
server-tools/instance-manager/log.cc:
  Auto merged
server-tools/instance-manager/log.h:
  Auto merged
server-tools/instance-manager/manager.cc:
  Auto merged
server-tools/instance-manager/manager.h:
  Auto merged
server-tools/instance-manager/messages.cc:
  Auto merged
server-tools/instance-manager/mysql_connection.cc:
  Auto merged
server-tools/instance-manager/mysql_connection.h:
  Auto merged
server-tools/instance-manager/mysql_manager_error.h:
  Auto merged
server-tools/instance-manager/mysqlmanager.cc:
  Auto merged
server-tools/instance-manager/options.cc:
  Auto merged
server-tools/instance-manager/options.h:
  Auto merged
server-tools/instance-manager/parse.cc:
  Auto merged
server-tools/instance-manager/parse.h:
  Auto merged
server-tools/instance-manager/parse_output.cc:
  Auto merged
server-tools/instance-manager/parse_output.h:
  Auto merged
server-tools/instance-manager/priv.cc:
  Auto merged
server-tools/instance-manager/priv.h:
  Auto merged
server-tools/instance-manager/protocol.cc:
  Auto merged
server-tools/instance-manager/protocol.h:
  Auto merged
server-tools/instance-manager/thread_registry.cc:
  Auto merged
server-tools/instance-manager/thread_registry.h:
  Auto merged
server-tools/instance-manager/user_map.cc:
  Auto merged
server-tools/instance-manager/user_map.h:
  Auto merged
sql/Makefile.am:
  Auto merged
sql/discover.cc:
  Auto merged
sql/field.cc:
  Auto merged
sql/field.h:
  Auto merged
sql/field_conv.cc:
  Auto merged
sql/filesort.cc:
  Auto merged
sql/gen_lex_hash.cc:
  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/hostname.cc:
  Auto merged
sql/init.cc:
  Auto merged
sql/item.cc:
  Auto merged
sql/item.h:
  Auto merged
sql/item_cmpfunc.cc:
  Auto merged
sql/item_cmpfunc.h:
  Auto merged
sql/item_create.cc:
  Auto merged
sql/item_create.h:
  Auto merged
sql/item_func.cc:
  Auto merged
sql/item_func.h:
  Auto merged
sql/item_geofunc.cc:
  Auto merged
sql/item_geofunc.h:
  Auto merged
sql/item_row.cc:
  Auto merged
sql/item_row.h:
  Auto merged
sql/item_strfunc.cc:
  Auto merged
sql/item_strfunc.h:
  Auto merged
sql/item_subselect.cc:
  Auto merged
sql/item_subselect.h:
  Auto merged
sql/item_sum.cc:
  Auto merged
sql/item_sum.h:
  Auto merged
sql/item_timefunc.cc:
  Auto merged
sql/item_timefunc.h:
  Auto merged
sql/item_uniq.cc:
  Auto merged
sql/key.cc:
  Auto merged
sql/lex.h:
  Auto merged
sql/lex_symbol.h:
  Auto merged
sql/lock.cc:
  Auto merged
sql/log.cc:
  Auto merged
sql/log_event.cc:
  Auto merged
sql/log_event.h:
  Auto merged
sql/my_decimal.cc:
  Auto merged
sql/my_decimal.h:
  Auto merged
sql/my_lock.c:
  Auto merged
sql/mysql_priv.h:
  Auto merged
sql/mysqld.cc:
  Auto merged
sql/net_serv.cc:
  Auto merged
sql/opt_range.cc:
  Auto merged
sql/opt_range.h:
  Auto merged
sql/opt_sum.cc:
  Auto merged
sql/parse_file.cc:
  Auto merged
sql/parse_file.h:
  Auto merged
sql/password.c:
  Auto merged
sql/procedure.h:
  Auto merged
sql/protocol.cc:
  Auto merged
sql/protocol.h:
  Auto merged
sql/records.cc:
  Auto merged
sql/repl_failsafe.cc:
  Auto merged
sql/set_var.cc:
  Auto merged
sql/set_var.h:
  Auto merged
sql/slave.cc:
  Auto merged
sql/slave.h:
  Auto merged
sql/sp.cc:
  Auto merged
sql/sp.h:
  Auto merged
sql/sp_cache.cc:
  Auto merged
sql/sp_head.cc:
  Auto merged
sql/sp_head.h:
  Auto merged
sql/spatial.cc:
  Auto merged
sql/spatial.h:
  Auto merged
sql/sql_acl.cc:
  Auto merged
sql/sql_acl.h:
  Auto merged
sql/sql_analyse.cc:
  Auto merged
sql/sql_analyse.h:
  Auto merged
sql/sql_base.cc:
  Auto merged
sql/sql_bitmap.h:
  Auto merged
sql/sql_cache.cc:
  Auto merged
sql/sql_cache.h:
  Auto merged
sql/sql_class.cc:
  Auto merged
sql/sql_class.h:
  Auto merged
sql/sql_crypt.cc:
  Auto merged
sql/sql_cursor.cc:
  Auto merged
sql/sql_db.cc:
  Auto merged
sql/sql_delete.cc:
  Auto merged
sql/sql_derived.cc:
  Auto merged
sql/sql_do.cc:
  Auto merged
sql/sql_error.cc:
  Auto merged
sql/sql_error.h:
  Auto merged
sql/sql_handler.cc:
  Auto merged
sql/sql_help.cc:
  Auto merged
sql/sql_insert.cc:
  Auto merged
sql/sql_lex.cc:
  Auto merged
sql/sql_lex.h:
  Auto merged
sql/sql_list.h:
  Auto merged
sql/sql_load.cc:
  Auto merged
sql/sql_manager.cc:
  Auto merged
sql/sql_map.cc:
  Auto merged
sql/sql_olap.cc:
  Auto merged
sql/sql_parse.cc:
  Auto merged
sql/sql_prepare.cc:
  Auto merged
sql/sql_rename.cc:
  Auto merged
sql/sql_repl.cc:
  Auto merged
sql/sql_repl.h:
  Auto merged
sql/sql_select.cc:
  Auto merged
sql/sql_select.h:
  Auto merged
sql/sql_show.cc:
  Auto merged
sql/sql_string.cc:
  Auto merged
sql/sql_string.h:
  Auto merged
sql/sql_table.cc:
  Auto merged
sql/sql_test.cc:
  Auto merged
sql/sql_trigger.cc:
  Auto merged
sql/sql_trigger.h:
  Auto merged
sql/sql_udf.cc:
  Auto merged
sql/sql_union.cc:
  Auto merged
sql/sql_update.cc:
  Auto merged
sql/sql_view.cc:
  Auto merged
sql-bench/Makefile.am:
  Auto merged
sql-bench/as3ap.sh:
  Auto merged
sql-bench/bench-count-distinct.sh:
  Auto merged
sql-bench/bench-init.pl.sh:
  Auto merged
sql-bench/compare-results.sh:
  Auto merged
sql-bench/copy-db.sh:
  Auto merged
sql/share/charsets/Index.xml:
  Auto merged
sql/share/charsets/cp1250.xml:
  Auto merged
sql/sql_view.h:
  Auto merged
sql/sql_yacc.yy:
  Auto merged
sql/stacktrace.c:
  Auto merged
sql/stacktrace.h:
  Auto merged
sql/strfunc.cc:
  Auto merged
sql/structs.h:
  Auto merged
sql/table.cc:
  Auto merged
sql/table.h:
  Auto merged
sql/time.cc:
  Auto merged
sql/tztime.cc:
  Auto merged
sql/tztime.h:
  Auto merged
sql/udf_example.c:
  Auto merged
sql/unireg.cc:
  Auto merged
sql/unireg.h:
  Auto merged
sql-bench/crash-me.sh:
  Auto merged
sql-bench/run-all-tests.sh:
  Auto merged
sql-bench/server-cfg.sh:
  Auto merged
sql-bench/test-ATIS.sh:
  Auto merged
sql-bench/test-alter-table.sh:
  Auto merged
sql-bench/test-big-tables.sh:
  Auto merged
sql-bench/test-connect.sh:
  Auto merged
sql-bench/test-create.sh:
  Auto merged
sql-bench/test-insert.sh:
  Auto merged
sql-bench/test-select.sh:
  Auto merged
sql-bench/test-transactions.sh:
  Auto merged
sql-bench/test-wisconsin.sh:
  Auto merged
sql-common/client.c:
  Auto merged
sql-common/my_time.c:
  Auto merged
storage/archive/ha_archive.cc:
  Auto merged
storage/archive/ha_archive.h:
  Auto merged
storage/blackhole/ha_blackhole.cc:
  Auto merged
storage/blackhole/ha_blackhole.h:
  Auto merged
storage/csv/ha_tina.cc:
  Auto merged
storage/csv/ha_tina.h:
  Auto merged
storage/example/ha_example.cc:
  Auto merged
storage/example/ha_example.h:
  Auto merged
storage/federated/ha_federated.cc:
  Auto merged
storage/federated/ha_federated.h:
  Auto merged
storage/heap/Makefile.am:
  Auto merged
storage/heap/_check.c:
  Auto merged
storage/heap/_rectest.c:
  Auto merged
storage/heap/ha_heap.cc:
  Auto merged
storage/heap/ha_heap.h:
  Auto merged
storage/heap/heapdef.h:
  Auto merged
storage/heap/hp_block.c:
  Auto merged
storage/heap/hp_clear.c:
  Auto merged
storage/heap/hp_close.c:
  Auto merged
storage/heap/hp_create.c:
  Auto merged
storage/heap/hp_delete.c:
  Auto merged
storage/heap/hp_extra.c:
  Auto merged
storage/heap/hp_hash.c:
  Auto merged
storage/heap/hp_info.c:
  Auto merged
storage/heap/hp_open.c:
  Auto merged
storage/heap/hp_panic.c:
  Auto merged
storage/heap/hp_rename.c:
  Auto merged
storage/heap/hp_rfirst.c:
  Auto merged
storage/heap/hp_rkey.c:
  Auto merged
storage/heap/hp_rlast.c:
  Auto merged
storage/heap/hp_rnext.c:
  Auto merged
storage/heap/hp_rprev.c:
  Auto merged
storage/heap/hp_rrnd.c:
  Auto merged
storage/heap/hp_rsame.c:
  Auto merged
storage/heap/hp_scan.c:
  Auto merged
storage/heap/hp_static.c:
  Auto merged
storage/heap/hp_test1.c:
  Auto merged
storage/heap/hp_test2.c:
  Auto merged
storage/heap/hp_update.c:
  Auto merged
storage/heap/hp_write.c:
  Auto merged
storage/innobase/Makefile.am:
  Auto merged
storage/innobase/btr/Makefile.am:
  Auto merged
storage/innobase/buf/Makefile.am:
  Auto merged
storage/innobase/data/Makefile.am:
  Auto merged
storage/innobase/dict/Makefile.am:
  Auto merged
storage/innobase/dyn/Makefile.am:
  Auto merged
storage/innobase/eval/Makefile.am:
  Auto merged
storage/innobase/fil/Makefile.am:
  Auto merged
storage/innobase/fsp/Makefile.am:
  Auto merged
storage/innobase/fut/Makefile.am:
  Auto merged
storage/innobase/ha/Makefile.am:
  Auto merged
storage/innobase/handler/ha_innodb.cc:
  Auto merged
storage/innobase/handler/ha_innodb.h:
  Auto merged
storage/innobase/ibuf/Makefile.am:
  Auto merged
storage/innobase/lock/Makefile.am:
  Auto merged
storage/innobase/log/Makefile.am:
  Auto merged
storage/innobase/mach/Makefile.am:
  Auto merged
storage/innobase/mem/Makefile.am:
  Auto merged
storage/innobase/mtr/Makefile.am:
  Auto merged
storage/innobase/os/Makefile.am:
  Auto merged
storage/innobase/page/Makefile.am:
  Auto merged
storage/innobase/pars/Makefile.am:
  Auto merged
storage/innobase/que/Makefile.am:
  Auto merged
storage/innobase/read/Makefile.am:
  Auto merged
storage/innobase/rem/Makefile.am:
  Auto merged
storage/innobase/row/Makefile.am:
  Auto merged
storage/innobase/srv/Makefile.am:
  Auto merged
storage/innobase/sync/Makefile.am:
  Auto merged
storage/innobase/thr/Makefile.am:
  Auto merged
storage/innobase/trx/Makefile.am:
  Auto merged
storage/innobase/usr/Makefile.am:
  Auto merged
storage/innobase/ut/Makefile.am:
  Auto merged
storage/myisam/Makefile.am:
  Auto merged
storage/myisam/ft_boolean_search.c:
  Auto merged
storage/myisam/ft_eval.c:
  Auto merged
storage/myisam/ft_eval.h:
  Auto merged
storage/myisam/ft_nlq_search.c:
  Auto merged
storage/myisam/ft_parser.c:
  Auto merged
storage/myisam/ft_static.c:
  Auto merged
storage/myisam/ft_stem.c:
  Auto merged
storage/myisam/ft_stopwords.c:
  Auto merged
storage/myisam/ft_test1.c:
  Auto merged
storage/myisam/ft_test1.h:
  Auto merged
storage/myisam/ft_update.c:
  Auto merged
storage/myisam/ftdefs.h:
  Auto merged
storage/myisam/fulltext.h:
  Auto merged
storage/myisam/ha_myisam.cc:
  Auto merged
storage/myisam/ha_myisam.h:
  Auto merged
storage/myisam/mi_cache.c:
  Auto merged
storage/myisam/mi_changed.c:
  Auto merged
storage/myisam/mi_check.c:
  Auto merged
storage/myisam/mi_checksum.c:
  Auto merged
storage/myisam/mi_close.c:
  Auto merged
storage/myisam/mi_create.c:
  Auto merged
storage/myisam/mi_dbug.c:
  Auto merged
storage/myisam/mi_delete.c:
  Auto merged
storage/myisam/mi_delete_all.c:
  Auto merged
storage/myisam/mi_delete_table.c:
  Auto merged
storage/myisam/mi_dynrec.c:
  Auto merged
storage/myisam/mi_extra.c:
  Auto merged
storage/myisam/mi_info.c:
  Auto merged
storage/myisam/mi_key.c:
  Auto merged
storage/myisam/mi_keycache.c:
  Auto merged
storage/myisam/mi_locking.c:
  Auto merged
storage/myisam/mi_log.c:
  Auto merged
storage/myisam/mi_open.c:
  Auto merged
storage/myisam/mi_packrec.c:
  Auto merged
storage/myisam/mi_page.c:
  Auto merged
storage/myisam/mi_panic.c:
  Auto merged
storage/myisam/mi_preload.c:
  Auto merged
storage/myisam/mi_range.c:
  Auto merged
storage/myisam/mi_rename.c:
  Auto merged
storage/myisam/mi_rfirst.c:
  Auto merged
storage/myisam/mi_rkey.c:
  Auto merged
storage/myisam/mi_rlast.c:
  Auto merged
storage/myisam/mi_rnext.c:
  Auto merged
storage/myisam/mi_rnext_same.c:
  Auto merged
storage/myisam/mi_rprev.c:
  Auto merged
storage/myisam/mi_rrnd.c:
  Auto merged
storage/myisam/mi_rsame.c:
  Auto merged
storage/myisam/mi_rsamepos.c:
  Auto merged
storage/myisam/mi_scan.c:
  Auto merged
storage/myisam/mi_search.c:
  Auto merged
storage/myisam/mi_static.c:
  Auto merged
storage/myisam/mi_statrec.c:
  Auto merged
storage/myisam/mi_test1.c:
  Auto merged
storage/myisam/mi_test2.c:
  Auto merged
storage/myisam/mi_test3.c:
  Auto merged
storage/myisam/mi_unique.c:
  Auto merged
storage/myisam/mi_update.c:
  Auto merged
storage/myisam/mi_write.c:
  Auto merged
storage/myisam/myisam_ftdump.c:
  Auto merged
storage/myisam/myisamchk.c:
  Auto merged
storage/myisam/myisamdef.h:
  Auto merged
storage/myisam/myisamlog.c:
  Auto merged
storage/myisam/myisampack.c:
  Auto merged
storage/myisam/rt_index.c:
  Auto merged
storage/myisam/rt_index.h:
  Auto merged
storage/myisam/rt_key.c:
  Auto merged
storage/myisam/rt_key.h:
  Auto merged
storage/myisam/rt_mbr.c:
  Auto merged
storage/myisam/rt_mbr.h:
  Auto merged
storage/myisam/rt_split.c:
  Auto merged
storage/myisam/rt_test.c:
  Auto merged
storage/myisam/sort.c:
  Auto merged
storage/myisam/sp_defs.h:
  Auto merged
storage/myisam/sp_key.c:
  Auto merged
storage/myisam/sp_test.c:
  Auto merged
storage/myisammrg/Makefile.am:
  Auto merged
storage/myisammrg/ha_myisammrg.cc:
  Auto merged
storage/myisammrg/ha_myisammrg.h:
  Auto merged
storage/myisammrg/myrg_close.c:
  Auto merged
storage/myisammrg/myrg_create.c:
  Auto merged
storage/myisammrg/myrg_def.h:
  Auto merged
storage/myisammrg/myrg_delete.c:
  Auto merged
storage/myisammrg/myrg_extra.c:
  Auto merged
storage/myisammrg/myrg_info.c:
  Auto merged
storage/myisammrg/myrg_locking.c:
  Auto merged
storage/myisammrg/myrg_open.c:
  Auto merged
storage/myisammrg/myrg_panic.c:
  Auto merged
storage/myisammrg/myrg_queue.c:
  Auto merged
storage/myisammrg/myrg_range.c:
  Auto merged
storage/myisammrg/myrg_rfirst.c:
  Auto merged
storage/myisammrg/myrg_rkey.c:
  Auto merged
storage/myisammrg/myrg_rlast.c:
  Auto merged
storage/myisammrg/myrg_rnext.c:
  Auto merged
storage/myisammrg/myrg_rnext_same.c:
  Auto merged
storage/myisammrg/myrg_rprev.c:
  Auto merged
storage/myisammrg/myrg_rrnd.c:
  Auto merged
storage/myisammrg/myrg_rsame.c:
  Auto merged
storage/myisammrg/myrg_static.c:
  Auto merged
storage/myisammrg/myrg_update.c:
  Auto merged
storage/myisammrg/myrg_write.c:
  Auto merged
storage/ndb/include/debugger/DebuggerNames.hpp:
  Auto merged
storage/ndb/include/debugger/EventLogger.hpp:
  Auto merged
storage/ndb/include/debugger/GrepError.hpp:
  Auto merged
storage/ndb/include/debugger/SignalLoggerManager.hpp:
  Auto merged
storage/ndb/include/ndb_constants.h:
  Auto merged
storage/ndb/include/ndb_global.h.in:
  Auto merged
storage/ndb/include/ndb_init.h:
  Auto merged
storage/ndb/include/ndb_types.h.in:
  Auto merged
storage/ndb/include/ndb_version.h.in:
  Auto merged
storage/ndb/include/editline/editline.h:
  Auto merged
storage/ndb/include/kernel/AttributeDescriptor.hpp:
  Auto merged
storage/ndb/include/kernel/AttributeHeader.hpp:
  Auto merged
storage/ndb/include/kernel/AttributeList.hpp:
  Auto merged
storage/ndb/include/kernel/BlockNumbers.h:
  Auto merged
storage/ndb/include/kernel/GlobalSignalNumbers.h:
  Auto merged
storage/ndb/include/kernel/GrepEvent.hpp:
  Auto merged
storage/ndb/include/kernel/Interpreter.hpp:
  Auto merged
storage/ndb/include/kernel/LogLevel.hpp:
  Auto merged
storage/ndb/include/kernel/NodeBitmask.hpp:
  Auto merged
storage/ndb/include/kernel/NodeInfo.hpp:
  Auto merged
storage/ndb/include/kernel/NodeState.hpp:
  Auto merged
storage/ndb/include/kernel/RefConvert.hpp:
  Auto merged
storage/ndb/include/kernel/kernel_types.h:
  Auto merged
storage/ndb/include/kernel/ndb_limits.h:
  Auto merged
storage/ndb/include/kernel/signaldata/AbortAll.hpp:
  Auto merged
storage/ndb/include/kernel/signaldata/AccFrag.hpp:
  Auto merged
storage/ndb/include/kernel/signaldata/AccLock.hpp:
  Auto merged
storage/ndb/include/kernel/signaldata/AccScan.hpp:
  Auto merged
storage/ndb/include/kernel/signaldata/AccSizeAltReq.hpp:
  Auto merged
storage/ndb/include/kernel/signaldata/AlterIndx.hpp:
  Auto merged
storage/ndb/include/kernel/signaldata/AlterTab.hpp:
  Auto merged
storage/ndb/include/kernel/signaldata/AlterTable.hpp:
  Auto merged
storage/ndb/include/kernel/signaldata/AlterTrig.hpp:
  Auto merged
storage/ndb/include/kernel/signaldata/ApiBroadcast.hpp:
  Auto merged
storage/ndb/include/kernel/signaldata/ApiRegSignalData.hpp:
  Auto merged
storage/ndb/include/kernel/signaldata/ApiVersion.hpp:
  Auto merged
storage/ndb/include/kernel/signaldata/ArbitSignalData.hpp:
  Auto merged
storage/ndb/include/kernel/signaldata/AttrInfo.hpp:
  Auto merged
storage/ndb/include/kernel/signaldata/BackupContinueB.hpp:
  Auto merged
storage/ndb/include/kernel/signaldata/BackupImpl.hpp:
  Auto merged
storage/ndb/include/kernel/signaldata/BackupSignalData.hpp:
  Auto merged
storage/ndb/include/kernel/signaldata/BlockCommitOrd.hpp:
  Auto merged
storage/ndb/include/kernel/signaldata/BuildIndx.hpp:
  Auto merged
storage/ndb/include/kernel/signaldata/CheckNodeGroups.hpp:
  Auto merged
storage/ndb/include/kernel/signaldata/CloseComReqConf.hpp:
  Auto merged
storage/ndb/include/kernel/signaldata/CmInit.hpp:
  Auto merged
storage/ndb/include/kernel/trigger_definitions.h:
  Auto merged
storage/ndb/include/kernel/signaldata/CmRegSignalData.hpp:
  Auto merged
storage/ndb/include/kernel/signaldata/CmvmiCfgConf.hpp:
  Auto merged
storage/ndb/include/kernel/signaldata/CntrMasterConf.hpp:
  Auto merged
storage/ndb/include/kernel/signaldata/CntrMasterReq.hpp:
  Auto merged
storage/ndb/include/kernel/signaldata/ConfigParamId.hpp:
  Auto merged
storage/ndb/include/kernel/signaldata/ContinueFragmented.hpp:
  Auto merged
storage/ndb/include/kernel/signaldata/CopyActive.hpp:
  Auto merged
storage/ndb/include/kernel/signaldata/CopyFrag.hpp:
  Auto merged
storage/ndb/include/kernel/signaldata/CopyGCIReq.hpp:
  Auto merged
storage/ndb/include/kernel/signaldata/CreateEvnt.hpp:
  Auto merged
storage/ndb/include/kernel/signaldata/CreateFrag.hpp:
  Auto merged
storage/ndb/include/kernel/signaldata/CreateFragmentation.hpp:
  Auto merged
storage/ndb/include/kernel/signaldata/CreateIndx.hpp:
  Auto merged
storage/ndb/include/kernel/signaldata/CreateTab.hpp:
  Auto merged
storage/ndb/include/kernel/signaldata/CreateTable.hpp:
  Auto merged
storage/ndb/include/kernel/signaldata/CreateTrig.hpp:
  Auto merged
storage/ndb/include/kernel/signaldata/DiAddTab.hpp:
  Auto merged
storage/ndb/include/kernel/signaldata/DiGetNodes.hpp:
  Auto merged
storage/ndb/include/kernel/signaldata/DictLock.hpp:
  Auto merged
storage/ndb/include/kernel/signaldata/DictSchemaInfo.hpp:
  Auto merged
storage/ndb/include/kernel/signaldata/DictSizeAltReq.hpp:
  Auto merged
storage/ndb/include/kernel/signaldata/DictStart.hpp:
  Auto merged
storage/ndb/include/kernel/signaldata/DictTabInfo.hpp:
  Auto merged
storage/ndb/include/kernel/signaldata/DihAddFrag.hpp:
  Auto merged
storage/ndb/include/kernel/signaldata/DihContinueB.hpp:
  Auto merged
storage/ndb/include/kernel/signaldata/DihSizeAltReq.hpp:
  Auto merged
storage/ndb/include/kernel/signaldata/DihStartTab.hpp:
  Auto merged
storage/ndb/include/kernel/signaldata/DihSwitchReplica.hpp:
  Auto merged
storage/ndb/include/kernel/signaldata/DisconnectRep.hpp:
  Auto merged
storage/ndb/include/kernel/signaldata/DropIndx.hpp:
  Auto merged
storage/ndb/include/kernel/signaldata/DropTab.hpp:
  Auto merged
storage/ndb/include/kernel/signaldata/DropTabFile.hpp:
  Auto merged
storage/ndb/include/kernel/signaldata/DropTable.hpp:
  Auto merged
storage/ndb/include/kernel/signaldata/DropTrig.hpp:
  Auto merged
storage/ndb/include/kernel/signaldata/DumpStateOrd.hpp:
  Auto merged
storage/ndb/include/kernel/signaldata/EmptyLcp.hpp:
  Auto merged
storage/ndb/include/kernel/signaldata/EndTo.hpp:
  Auto merged
storage/ndb/include/kernel/signaldata/EventReport.hpp:
  Auto merged
storage/ndb/include/kernel/signaldata/EventSubscribeReq.hpp:
  Auto merged
storage/ndb/include/kernel/signaldata/ExecFragReq.hpp:
  Auto merged
storage/ndb/include/kernel/signaldata/FailRep.hpp:
  Auto merged
storage/ndb/include/kernel/signaldata/FireTrigOrd.hpp:
  Auto merged
storage/ndb/include/kernel/signaldata/FsAppendReq.hpp:
  Auto merged
storage/ndb/include/kernel/signaldata/FsCloseReq.hpp:
  Auto merged
storage/ndb/include/kernel/signaldata/FsConf.hpp:
  Auto merged
storage/ndb/include/kernel/signaldata/FsOpenReq.hpp:
  Auto merged
storage/ndb/include/kernel/signaldata/FsReadWriteReq.hpp:
  Auto merged
storage/ndb/include/kernel/signaldata/FsRef.hpp:
  Auto merged
storage/ndb/include/kernel/signaldata/FsRemoveReq.hpp:
  Auto merged
storage/ndb/include/kernel/signaldata/GCPSave.hpp:
  Auto merged
storage/ndb/include/kernel/signaldata/GetTabInfo.hpp:
  Auto merged
storage/ndb/include/kernel/signaldata/GetTableId.hpp:
  Auto merged
storage/ndb/include/kernel/signaldata/GrepImpl.hpp:
  Auto merged
storage/ndb/include/kernel/signaldata/HotSpareRep.hpp:
  Auto merged
storage/ndb/include/kernel/signaldata/IndxAttrInfo.hpp:
  Auto merged
storage/ndb/include/kernel/signaldata/IndxKeyInfo.hpp:
  Auto merged
storage/ndb/include/kernel/signaldata/InvalidateNodeLCPConf.hpp:
  Auto merged
storage/ndb/include/kernel/signaldata/InvalidateNodeLCPReq.hpp:
  Auto merged
storage/ndb/include/kernel/signaldata/KeyInfo.hpp:
  Auto merged
storage/ndb/include/kernel/signaldata/LCP.hpp:
  Auto merged
storage/ndb/include/kernel/signaldata/ListTables.hpp:
  Auto merged
storage/ndb/include/kernel/signaldata/LqhFrag.hpp:
  Auto merged
storage/ndb/include/kernel/signaldata/LqhKey.hpp:
  Auto merged
storage/ndb/include/kernel/signaldata/LqhSizeAltReq.hpp:
  Auto merged
storage/ndb/include/kernel/signaldata/LqhTransConf.hpp:
  Auto merged
storage/ndb/include/kernel/signaldata/ManagementServer.hpp:
  Auto merged
storage/ndb/include/kernel/signaldata/MasterGCP.hpp:
  Auto merged
storage/ndb/include/kernel/signaldata/MasterLCP.hpp:
  Auto merged
storage/ndb/include/kernel/signaldata/NFCompleteRep.hpp:
  Auto merged
storage/ndb/include/kernel/signaldata/NdbSttor.hpp:
  Auto merged
storage/ndb/include/kernel/signaldata/NdbfsContinueB.hpp:
  Auto merged
storage/ndb/include/kernel/signaldata/NextScan.hpp:
  Auto merged
storage/ndb/include/kernel/signaldata/NodeFailRep.hpp:
  Auto merged
storage/ndb/include/kernel/signaldata/NodeStateSignalData.hpp:
  Auto merged
storage/ndb/include/kernel/signaldata/PackedSignal.hpp:
  Auto merged
storage/ndb/include/kernel/signaldata/PrepDropTab.hpp:
  Auto merged
storage/ndb/include/kernel/signaldata/PrepFailReqRef.hpp:
  Auto merged
storage/ndb/include/kernel/signaldata/ReadNodesConf.hpp:
  Auto merged
storage/ndb/include/kernel/signaldata/RelTabMem.hpp:
  Auto merged
storage/ndb/include/kernel/signaldata/RepImpl.hpp:
  Auto merged
storage/ndb/include/kernel/signaldata/ResumeReq.hpp:
  Auto merged
storage/ndb/include/kernel/signaldata/ScanFrag.hpp:
  Auto merged
storage/ndb/include/kernel/signaldata/ScanTab.hpp:
  Auto merged
storage/ndb/include/kernel/signaldata/SetLogLevelOrd.hpp:
  Auto merged
storage/ndb/include/kernel/signaldata/SetVarReq.hpp:
  Auto merged
storage/ndb/include/kernel/signaldata/SignalData.hpp:
  Auto merged
storage/ndb/include/kernel/signaldata/SignalDataPrint.hpp:
  Auto merged
storage/ndb/include/kernel/signaldata/SignalDroppedRep.hpp:
  Auto merged
storage/ndb/include/kernel/signaldata/SrFragidConf.hpp:
  Auto merged
storage/ndb/include/kernel/signaldata/StartFragReq.hpp:
  Auto merged
storage/ndb/include/kernel/signaldata/StartInfo.hpp:
  Auto merged
storage/ndb/include/kernel/signaldata/StartMe.hpp:
  Auto merged
storage/ndb/include/kernel/signaldata/StartOrd.hpp:
  Auto merged
storage/ndb/include/kernel/signaldata/StartPerm.hpp:
  Auto merged
storage/ndb/include/kernel/signaldata/StartRec.hpp:
  Auto merged
storage/ndb/include/kernel/signaldata/StartTo.hpp:
  Auto merged
storage/ndb/include/kernel/signaldata/StopMe.hpp:
  Auto merged
storage/ndb/include/kernel/signaldata/StopPerm.hpp:
  Auto merged
storage/ndb/include/kernel/signaldata/StopReq.hpp:
  Auto merged
storage/ndb/include/kernel/signaldata/SumaImpl.hpp:
  Auto merged
storage/ndb/include/kernel/signaldata/SystemError.hpp:
  Auto merged
storage/ndb/include/kernel/signaldata/TamperOrd.hpp:
  Auto merged
storage/ndb/include/kernel/signaldata/TcCommit.hpp:
  Auto merged
storage/ndb/include/kernel/signaldata/TcContinueB.hpp:
  Auto merged
storage/ndb/include/kernel/signaldata/TcHbRep.hpp:
  Auto merged
storage/ndb/include/kernel/signaldata/TcIndx.hpp:
  Auto merged
storage/ndb/include/kernel/signaldata/TcKeyConf.hpp:
  Auto merged
storage/ndb/include/kernel/signaldata/TcKeyFailConf.hpp:
  Auto merged
storage/ndb/include/kernel/signaldata/TcKeyRef.hpp:
  Auto merged
storage/ndb/include/kernel/signaldata/TcKeyReq.hpp:
  Auto merged
storage/ndb/include/kernel/signaldata/TcRollbackRep.hpp:
  Auto merged
storage/ndb/include/kernel/signaldata/TcSizeAltReq.hpp:
  Auto merged
storage/ndb/include/kernel/signaldata/TestOrd.hpp:
  Auto merged
storage/ndb/include/kernel/signaldata/TransIdAI.hpp:
  Auto merged
storage/ndb/include/kernel/signaldata/TrigAttrInfo.hpp:
  Auto merged
storage/ndb/include/kernel/signaldata/TupCommit.hpp:
  Auto merged
storage/ndb/include/kernel/signaldata/TupFrag.hpp:
  Auto merged
storage/ndb/include/kernel/signaldata/TupKey.hpp:
  Auto merged
storage/ndb/include/kernel/signaldata/TupSizeAltReq.hpp:
  Auto merged
storage/ndb/include/kernel/signaldata/TuxBound.hpp:
  Auto merged
storage/ndb/include/kernel/signaldata/TuxContinueB.hpp:
  Auto merged
storage/ndb/include/kernel/signaldata/TuxMaint.hpp:
  Auto merged
storage/ndb/include/kernel/signaldata/TuxSizeAltReq.hpp:
  Auto merged
storage/ndb/include/kernel/signaldata/UpdateTo.hpp:
  Auto merged
storage/ndb/include/kernel/signaldata/UtilDelete.hpp:
  Auto merged
storage/ndb/include/kernel/signaldata/UtilExecute.hpp:
  Auto merged
storage/ndb/include/kernel/signaldata/UtilLock.hpp:
  Auto merged
storage/ndb/include/kernel/signaldata/UtilPrepare.hpp:
  Auto merged
storage/ndb/include/kernel/signaldata/UtilRelease.hpp:
  Auto merged
storage/ndb/include/kernel/signaldata/UtilSequence.hpp:
  Auto merged
storage/ndb/include/kernel/signaldata/WaitGCP.hpp:
  Auto merged
storage/ndb/include/logger/ConsoleLogHandler.hpp:
  Auto merged
storage/ndb/include/logger/FileLogHandler.hpp:
  Auto merged
storage/ndb/include/logger/LogHandler.hpp:
  Auto merged
storage/ndb/include/logger/Logger.hpp:
  Auto merged
storage/ndb/include/logger/SysLogHandler.hpp:
  Auto merged
storage/ndb/include/mgmapi/mgmapi.h:
  Auto merged
storage/ndb/include/mgmapi/mgmapi_debug.h:
  Auto merged
storage/ndb/include/mgmapi/ndb_logevent.h:
  Auto merged
storage/ndb/include/mgmapi/ndbd_exit_codes.h:
  Auto merged
storage/ndb/include/mgmcommon/ConfigRetriever.hpp:
  Auto merged
storage/ndb/include/mgmcommon/IPCConfig.hpp:
  Auto merged
storage/ndb/include/mgmcommon/MgmtErrorReporter.hpp:
  Auto merged
storage/ndb/include/ndbapi/Ndb.hpp:
  Auto merged
storage/ndb/include/ndbapi/NdbApi.hpp:
  Auto merged
storage/ndb/include/ndbapi/NdbBlob.hpp:
  Auto merged
storage/ndb/include/ndbapi/NdbDictionary.hpp:
  Auto merged
storage/ndb/include/ndbapi/NdbError.hpp:
  Auto merged
storage/ndb/include/ndbapi/NdbEventOperation.hpp:
  Auto merged
storage/ndb/include/ndbapi/NdbIndexOperation.hpp:
  Auto merged
storage/ndb/include/ndbapi/NdbIndexScanOperation.hpp:
  Auto merged
storage/ndb/include/ndbapi/NdbOperation.hpp:
  Auto merged
storage/ndb/include/ndbapi/NdbPool.hpp:
  Auto merged
storage/ndb/include/ndbapi/NdbRecAttr.hpp:
  Auto merged
storage/ndb/include/ndbapi/NdbReceiver.hpp:
  Auto merged
storage/ndb/include/ndbapi/NdbScanFilter.hpp:
  Auto merged
storage/ndb/include/ndbapi/NdbScanOperation.hpp:
  Auto merged
storage/ndb/include/ndbapi/NdbTransaction.hpp:
  Auto merged
storage/ndb/include/ndbapi/ndb_cluster_connection.hpp:
  Auto merged
storage/ndb/include/ndbapi/ndb_opt_defaults.h:
  Auto merged
storage/ndb/include/ndbapi/ndbapi_limits.h:
  Auto merged
storage/ndb/include/ndbapi/ndberror.h:
  Auto merged
storage/ndb/include/newtonapi/dba.h:
  Auto merged
storage/ndb/include/newtonapi/defs/pcn_types.h:
  Auto merged
storage/ndb/include/portlib/NdbCondition.h:
  Auto merged
storage/ndb/include/portlib/NdbConfig.h:
  Auto merged
storage/ndb/include/portlib/NdbDaemon.h:
  Auto merged
storage/ndb/include/portlib/NdbEnv.h:
  Auto merged
storage/ndb/include/portlib/NdbHost.h:
  Auto merged
storage/ndb/include/portlib/NdbMain.h:
  Auto merged
storage/ndb/include/portlib/NdbMem.h:
  Auto merged
storage/ndb/include/portlib/NdbMutex.h:
  Auto merged
storage/ndb/include/portlib/NdbSleep.h:
  Auto merged
storage/ndb/include/portlib/NdbTCP.h:
  Auto merged
storage/ndb/include/portlib/NdbThread.h:
  Auto merged
storage/ndb/include/portlib/NdbTick.h:
  Auto merged
storage/ndb/include/portlib/PortDefs.h:
  Auto merged
storage/ndb/include/portlib/prefetch.h:
  Auto merged
storage/ndb/include/transporter/TransporterCallback.hpp:
  Auto merged
storage/ndb/include/transporter/TransporterDefinitions.hpp:
  Auto merged
storage/ndb/include/transporter/TransporterRegistry.hpp:
  Auto merged
storage/ndb/include/util/BaseString.hpp:
  Auto merged
storage/ndb/include/util/Bitmask.hpp:
  Auto merged
storage/ndb/include/util/File.hpp:
  Auto merged
storage/ndb/include/util/InputStream.hpp:
  Auto merged
storage/ndb/include/util/NdbAutoPtr.hpp:
  Auto merged
storage/ndb/include/util/NdbOut.hpp:
  Auto merged
storage/ndb/include/util/NdbSqlUtil.hpp:
  Auto merged
storage/ndb/include/util/OutputStream.hpp:
  Auto merged
storage/ndb/include/util/Parser.hpp:
  Auto merged
storage/ndb/include/util/Properties.hpp:
  Auto merged
storage/ndb/include/util/SimpleProperties.hpp:
  Auto merged
storage/ndb/include/util/SocketAuthenticator.hpp:
  Auto merged
storage/ndb/include/util/SocketClient.hpp:
  Auto merged
storage/ndb/include/util/SocketServer.hpp:
  Auto merged
storage/ndb/include/util/UtilBuffer.hpp:
  Auto merged
storage/ndb/include/util/Vector.hpp:
  Auto merged
storage/ndb/include/util/basestring_vsnprintf.h:
  Auto merged
storage/ndb/include/util/md5_hash.hpp:
  Auto merged
storage/ndb/include/util/ndb_opts.h:
  Auto merged
storage/ndb/include/util/random.h:
  Auto merged
storage/ndb/include/util/socket_io.h:
  Auto merged
storage/ndb/include/util/uucode.h:
  Auto merged
storage/ndb/include/util/version.h:
  Auto merged
storage/ndb/src/common/debugger/BlockNames.cpp:
  Auto merged
storage/ndb/src/common/debugger/DebuggerNames.cpp:
  Auto merged
storage/ndb/src/common/debugger/EventLogger.cpp:
  Auto merged
storage/ndb/src/common/debugger/GrepError.cpp:
  Auto merged
storage/ndb/src/common/debugger/SignalLoggerManager.cpp:
  Auto merged
storage/ndb/src/common/debugger/signaldata/AccLock.cpp:
  Auto merged
storage/ndb/src/common/debugger/signaldata/AlterIndx.cpp:
  Auto merged
storage/ndb/src/common/debugger/signaldata/AlterTab.cpp:
  Auto merged
storage/ndb/src/common/debugger/signaldata/AlterTable.cpp:
  Auto merged
storage/ndb/src/common/debugger/signaldata/AlterTrig.cpp:
  Auto merged
storage/ndb/src/common/debugger/signaldata/BackupImpl.cpp:
  Auto merged
storage/ndb/src/common/debugger/signaldata/BackupSignalData.cpp:
  Auto merged
storage/ndb/src/common/debugger/signaldata/CloseComReqConf.cpp:
  Auto merged
storage/ndb/src/common/debugger/signaldata/ContinueB.cpp:
  Auto merged
storage/ndb/src/common/debugger/signaldata/CopyGCI.cpp:
  Auto merged
storage/ndb/src/common/debugger/signaldata/CreateEvnt.cpp:
  Auto merged
storage/ndb/src/common/debugger/signaldata/CreateFragmentation.cpp:
  Auto merged
storage/ndb/src/common/debugger/signaldata/CreateIndx.cpp:
  Auto merged
storage/ndb/src/common/debugger/signaldata/CreateTrig.cpp:
  Auto merged
storage/ndb/src/common/debugger/signaldata/DictTabInfo.cpp:
  Auto merged
storage/ndb/src/common/debugger/signaldata/DihContinueB.cpp:
  Auto merged
storage/ndb/src/common/debugger/signaldata/DihSwitchReplicaReq.cpp:
  Auto merged
storage/ndb/src/common/debugger/signaldata/DisconnectRep.cpp:
  Auto merged
storage/ndb/src/common/debugger/signaldata/DropIndx.cpp:
  Auto merged
storage/ndb/src/common/debugger/signaldata/DropTab.cpp:
  Auto merged
storage/ndb/src/common/debugger/signaldata/DropTrig.cpp:
  Auto merged
storage/ndb/src/common/debugger/signaldata/FailRep.cpp:
  Auto merged
storage/ndb/src/common/debugger/signaldata/FireTrigOrd.cpp:
  Auto merged
storage/ndb/src/common/debugger/signaldata/FsAppendReq.cpp:
  Auto merged
storage/ndb/src/common/debugger/signaldata/FsCloseReq.cpp:
  Auto merged
storage/ndb/src/common/debugger/signaldata/FsConf.cpp:
  Auto merged
storage/ndb/src/common/debugger/signaldata/FsOpenReq.cpp:
  Auto merged
storage/ndb/src/common/debugger/signaldata/FsReadWriteReq.cpp:
  Auto merged
storage/ndb/src/common/debugger/signaldata/FsRef.cpp:
  Auto merged
storage/ndb/src/common/debugger/signaldata/GCPSave.cpp:
  Auto merged
storage/ndb/src/common/debugger/signaldata/IndxAttrInfo.cpp:
  Auto merged
storage/ndb/src/common/debugger/signaldata/IndxKeyInfo.cpp:
  Auto merged
storage/ndb/src/common/debugger/signaldata/LCP.cpp:
  Auto merged
storage/ndb/src/common/debugger/signaldata/LqhFrag.cpp:
  Auto merged
storage/ndb/src/common/debugger/signaldata/LqhKey.cpp:
  Auto merged
storage/ndb/src/common/debugger/signaldata/LqhTrans.cpp:
  Auto merged
storage/ndb/src/common/debugger/signaldata/MasterLCP.cpp:
  Auto merged
storage/ndb/src/common/debugger/signaldata/NFCompleteRep.cpp:
  Auto merged
storage/ndb/src/common/debugger/signaldata/NdbSttor.cpp:
  Auto merged
storage/ndb/src/common/debugger/signaldata/NdbfsContinueB.cpp:
  Auto merged
storage/ndb/src/common/debugger/signaldata/PackedSignal.cpp:
  Auto merged
storage/ndb/src/common/debugger/signaldata/PrepDropTab.cpp:
  Auto merged
storage/ndb/src/common/debugger/signaldata/PrepFailReqRef.cpp:
  Auto merged
storage/ndb/src/common/debugger/signaldata/ScanFrag.cpp:
  Auto merged
storage/ndb/src/common/debugger/signaldata/ScanTab.cpp:
  Auto merged
storage/ndb/src/common/debugger/signaldata/SignalDataPrint.cpp:
  Auto merged
storage/ndb/src/common/debugger/signaldata/SignalDroppedRep.cpp:
  Auto merged
storage/ndb/src/common/debugger/signaldata/SignalNames.cpp:
  Auto merged
storage/ndb/src/common/debugger/signaldata/StartRec.cpp:
  Auto merged
storage/ndb/src/common/debugger/signaldata/SumaImpl.cpp:
  Auto merged
storage/ndb/src/common/debugger/signaldata/SystemError.cpp:
  Auto merged
storage/ndb/src/common/debugger/signaldata/TcIndx.cpp:
  Auto merged
storage/ndb/src/common/debugger/signaldata/TcKeyConf.cpp:
  Auto merged
storage/ndb/src/common/debugger/signaldata/TcKeyRef.cpp:
  Auto merged
storage/ndb/src/common/debugger/signaldata/TcKeyReq.cpp:
  Auto merged
storage/ndb/src/common/debugger/signaldata/TcRollbackRep.cpp:
  Auto merged
storage/ndb/src/common/debugger/signaldata/TrigAttrInfo.cpp:
  Auto merged
storage/ndb/src/common/debugger/signaldata/TupCommit.cpp:
  Auto merged
storage/ndb/src/common/debugger/signaldata/TupKey.cpp:
  Auto merged
storage/ndb/src/common/debugger/signaldata/TuxMaint.cpp:
  Auto merged
storage/ndb/src/common/debugger/signaldata/UtilDelete.cpp:
  Auto merged
storage/ndb/src/common/debugger/signaldata/UtilExecute.cpp:
  Auto merged
storage/ndb/src/common/debugger/signaldata/UtilLock.cpp:
  Auto merged
storage/ndb/src/common/debugger/signaldata/UtilPrepare.cpp:
  Auto merged
storage/ndb/src/common/debugger/signaldata/UtilSequence.cpp:
  Auto merged
storage/ndb/src/common/logger/ConsoleLogHandler.cpp:
  Auto merged
storage/ndb/src/common/logger/FileLogHandler.cpp:
  Auto merged
storage/ndb/src/common/logger/LogHandler.cpp:
  Auto merged
storage/ndb/src/common/logger/LogHandlerList.cpp:
  Auto merged
storage/ndb/src/common/logger/LogHandlerList.hpp:
  Auto merged
storage/ndb/src/common/logger/Logger.cpp:
  Auto merged
storage/ndb/src/common/logger/SysLogHandler.cpp:
  Auto merged
storage/ndb/src/common/logger/listtest/LogHandlerListUnitTest.cpp:
  Auto merged
storage/ndb/src/common/logger/listtest/LogHandlerListUnitTest.hpp:
  Auto merged
storage/ndb/src/common/logger/loggertest/LoggerUnitTest.cpp:
  Auto merged
storage/ndb/src/common/logger/loggertest/LoggerUnitTest.hpp:
  Auto merged
storage/ndb/src/common/mgmcommon/ConfigRetriever.cpp:
  Auto merged
storage/ndb/src/common/mgmcommon/IPCConfig.cpp:
  Auto merged
storage/ndb/src/common/mgmcommon/printConfig/printConfig.cpp:
  Auto merged
storage/ndb/src/common/portlib/NdbCondition.c:
  Auto merged
storage/ndb/src/common/portlib/NdbConfig.c:
  Auto merged
storage/ndb/src/common/portlib/NdbDaemon.c:
  Auto merged
storage/ndb/src/common/portlib/NdbEnv.c:
  Auto merged
storage/ndb/src/common/portlib/NdbHost.c:
  Auto merged
storage/ndb/src/common/portlib/NdbMem.c:
  Auto merged
storage/ndb/src/common/portlib/NdbMutex.c:
  Auto merged
storage/ndb/src/common/portlib/NdbPortLibTest.cpp:
  Auto merged
storage/ndb/src/common/portlib/NdbSleep.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/portlib/NdbTick.c:
  Auto merged
storage/ndb/src/common/portlib/memtest.c:
  Auto merged
storage/ndb/src/common/portlib/mmstest.cpp:
  Auto merged
storage/ndb/src/common/portlib/munmaptest.cpp:
  Auto merged
storage/ndb/src/common/portlib/win32/NdbCondition.c:
  Auto merged
storage/ndb/src/common/portlib/win32/NdbDaemon.c:
  Auto merged
storage/ndb/src/common/portlib/win32/NdbEnv.c:
  Auto merged
storage/ndb/src/common/portlib/win32/NdbHost.c:
  Auto merged
storage/ndb/src/common/portlib/win32/NdbMem.c:
  Auto merged
storage/ndb/src/common/portlib/win32/NdbMutex.c:
  Auto merged
storage/ndb/src/common/portlib/win32/NdbSleep.c:
  Auto merged
storage/ndb/src/common/portlib/win32/NdbTCP.c:
  Auto merged
storage/ndb/src/common/portlib/win32/NdbThread.c:
  Auto merged
storage/ndb/src/common/portlib/win32/NdbTick.c:
  Auto merged
storage/ndb/src/common/transporter/Packer.cpp:
  Auto merged
storage/ndb/src/common/transporter/Packer.hpp:
  Auto merged
storage/ndb/src/common/transporter/SCI_Transporter.cpp:
  Auto merged
storage/ndb/src/common/transporter/SCI_Transporter.hpp:
  Auto merged
storage/ndb/src/common/transporter/SHM_Buffer.hpp:
  Auto merged
storage/ndb/src/common/transporter/SHM_Transporter.cpp:
  Auto merged
storage/ndb/src/common/transporter/SHM_Transporter.hpp:
  Auto merged
storage/ndb/src/common/transporter/SHM_Transporter.unix.cpp:
  Auto merged
storage/ndb/src/common/transporter/SHM_Transporter.win32.cpp:
  Auto merged
storage/ndb/src/common/transporter/SendBuffer.cpp:
  Auto merged
storage/ndb/src/common/transporter/SendBuffer.hpp:
  Auto merged
storage/ndb/src/common/transporter/TCP_Transporter.cpp:
  Auto merged
storage/ndb/src/common/transporter/TCP_Transporter.hpp:
  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/TransporterInternalDefinitions.hpp:
  Auto merged
storage/ndb/src/common/transporter/TransporterRegistry.cpp:
  Auto merged
storage/ndb/src/common/transporter/basictest/basicTransporterTest.cpp:
  Auto merged
storage/ndb/src/common/transporter/buddy.cpp:
  Auto merged
storage/ndb/src/common/transporter/buddy.hpp:
  Auto merged
storage/ndb/src/common/transporter/failoverSCI/failoverSCI.cpp:
  Auto merged
storage/ndb/src/common/transporter/perftest/perfTransporterTest.cpp:
  Auto merged
storage/ndb/src/common/transporter/priotest/prioSCI/prioSCI.cpp:
  Auto merged
storage/ndb/src/common/transporter/priotest/prioSHM/prioSHM.cpp:
  Auto merged
storage/ndb/src/common/transporter/priotest/prioTCP/prioTCP.cpp:
  Auto merged
storage/ndb/src/common/transporter/priotest/prioTransporterTest.cpp:
  Auto merged
storage/ndb/src/common/transporter/priotest/prioTransporterTest.hpp:
  Auto merged
storage/ndb/src/common/util/BaseString.cpp:
  Auto merged
storage/ndb/src/common/util/File.cpp:
  Auto merged
storage/ndb/src/common/util/InputStream.cpp:
  Auto merged
storage/ndb/src/common/util/NdbOut.cpp:
  Auto merged
storage/ndb/src/common/util/NdbSqlUtil.cpp:
  Auto merged
storage/ndb/src/common/util/OutputStream.cpp:
  Auto merged
storage/ndb/src/common/util/Parser.cpp:
  Auto merged
storage/ndb/src/common/util/Properties.cpp:
  Auto merged
storage/ndb/src/common/util/SimpleProperties.cpp:
  Auto merged
storage/ndb/src/common/util/SocketAuthenticator.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/basestring_vsnprintf.c:
  Auto merged
storage/ndb/src/common/util/md5_hash.cpp:
  Auto merged
storage/ndb/src/common/util/ndb_init.c:
  Auto merged
storage/ndb/src/common/util/random.c:
  Auto merged
storage/ndb/src/common/util/socket_io.cpp:
  Auto merged
storage/ndb/src/common/util/strdup.c:
  Auto merged
storage/ndb/src/common/util/filetest/FileUnitTest.cpp:
  Auto merged
storage/ndb/src/common/util/filetest/FileUnitTest.hpp:
  Auto merged
storage/ndb/src/common/util/testProperties/testProperties.cpp:
  Auto merged
storage/ndb/src/common/util/testSimpleProperties/sp_test.cpp:
  Auto merged
storage/ndb/src/common/util/uucode.c:
  Auto merged
storage/ndb/src/common/util/version.c:
  Auto merged
storage/ndb/src/cw/cpcc-win32/C++/CPC_GUI.cpp:
  Auto merged
storage/ndb/src/cw/cpcc-win32/C++/CPC_GUI.h:
  Auto merged
storage/ndb/src/cw/cpcc-win32/C++/NdbControls.cpp:
  Auto merged
storage/ndb/src/cw/cpcc-win32/C++/StdAfx.cpp:
  Auto merged
storage/ndb/src/cw/cpcc-win32/C++/StdAfx.h:
  Auto merged
storage/ndb/src/cw/cpcc-win32/C++/TreeView.cpp:
  Auto merged
storage/ndb/src/cw/cpcc-win32/C++/TreeView.h:
  Auto merged
storage/ndb/src/cw/cpcc-win32/C++/resource.h:
  Auto merged
storage/ndb/src/cw/cpcd/APIService.cpp:
  Auto merged
storage/ndb/src/cw/cpcd/APIService.hpp:
  Auto merged
storage/ndb/src/cw/cpcd/CPCD.cpp:
  Auto merged
storage/ndb/src/cw/cpcd/CPCD.hpp:
  Auto merged
storage/ndb/src/cw/cpcd/Monitor.cpp:
  Auto merged
storage/ndb/src/cw/cpcd/Process.cpp:
  Auto merged
storage/ndb/src/cw/cpcd/common.cpp:
  Auto merged
storage/ndb/src/cw/cpcd/common.hpp:
  Auto merged
storage/ndb/src/cw/cpcd/main.cpp:
  Auto merged
storage/ndb/src/cw/test/socketclient/socketClientTest.cpp:
  Auto merged
storage/ndb/src/cw/util/ClientInterface.cpp:
  Auto merged
storage/ndb/src/cw/util/ClientInterface.hpp:
  Auto merged
storage/ndb/src/cw/util/SocketRegistry.cpp:
  Auto merged
storage/ndb/src/cw/util/SocketRegistry.hpp:
  Auto merged
storage/ndb/src/cw/util/SocketService.cpp:
  Auto merged
storage/ndb/src/cw/util/SocketService.hpp:
  Auto merged
storage/ndb/src/kernel/SimBlockList.cpp:
  Auto merged
storage/ndb/src/kernel/blocks/mutexes.hpp:
  Auto merged
storage/ndb/src/kernel/main.cpp:
  Auto merged
storage/ndb/src/kernel/blocks/backup/Backup.cpp:
  Auto merged
storage/ndb/src/kernel/blocks/backup/Backup.hpp:
  Auto merged
storage/ndb/src/kernel/blocks/backup/BackupFormat.hpp:
  Auto merged
storage/ndb/src/kernel/blocks/backup/BackupInit.cpp:
  Auto merged
storage/ndb/src/kernel/blocks/backup/FsBuffer.hpp:
  Auto merged
storage/ndb/src/kernel/blocks/backup/read.cpp:
  Auto merged
storage/ndb/src/kernel/blocks/cmvmi/Cmvmi.cpp:
  Auto merged
storage/ndb/src/kernel/blocks/cmvmi/Cmvmi.hpp:
  Auto merged
storage/ndb/src/kernel/blocks/dbacc/Dbacc.hpp:
  Auto merged
storage/ndb/src/kernel/blocks/dbacc/DbaccInit.cpp:
  Auto merged
storage/ndb/src/kernel/blocks/dbacc/DbaccMain.cpp:
  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/dbdih/Dbdih.hpp:
  Auto merged
storage/ndb/src/kernel/blocks/dbdih/DbdihInit.cpp:
  Auto merged
storage/ndb/src/kernel/blocks/dbdih/DbdihMain.cpp:
  Auto merged
storage/ndb/src/kernel/blocks/dbdih/Sysfile.hpp:
  Auto merged
storage/ndb/src/kernel/blocks/dbdih/printSysfile/printSysfile.cpp:
  Auto merged
storage/ndb/src/kernel/blocks/dblqh/Dblqh.hpp:
  Auto merged
storage/ndb/src/kernel/blocks/dblqh/DblqhInit.cpp:
  Auto merged
storage/ndb/src/kernel/blocks/dblqh/DblqhMain.cpp:
  Auto merged
storage/ndb/src/kernel/blocks/dblqh/redoLogReader/records.cpp:
  Auto merged
storage/ndb/src/kernel/blocks/dblqh/redoLogReader/records.hpp:
  Auto merged
storage/ndb/src/kernel/blocks/dblqh/redoLogReader/redoLogFileReader.cpp:
  Auto merged
storage/ndb/src/kernel/blocks/dbtc/Dbtc.hpp:
  Auto merged
storage/ndb/src/kernel/blocks/dbtc/DbtcInit.cpp:
  Auto merged
storage/ndb/src/kernel/blocks/dbtc/DbtcMain.cpp:
  Auto merged
storage/ndb/src/kernel/blocks/dbtup/AttributeOffset.hpp:
  Auto merged
storage/ndb/src/kernel/blocks/dbtup/Dbtup.hpp:
  Auto merged
storage/ndb/src/kernel/blocks/dbtup/DbtupAbort.cpp:
  Auto merged
storage/ndb/src/kernel/blocks/dbtup/DbtupBuffer.cpp:
  Auto merged
storage/ndb/src/kernel/blocks/dbtup/DbtupCommit.cpp:
  Auto merged
storage/ndb/src/kernel/blocks/dbtup/DbtupDebug.cpp:
  Auto merged
storage/ndb/src/kernel/blocks/dbtup/DbtupExecQuery.cpp:
  Auto merged
storage/ndb/src/kernel/blocks/dbtup/DbtupFixAlloc.cpp:
  Auto merged
storage/ndb/src/kernel/blocks/dbtup/DbtupGen.cpp:
  Auto merged
storage/ndb/src/kernel/blocks/dbtup/DbtupIndex.cpp:
  Auto merged
storage/ndb/src/kernel/blocks/dbtup/DbtupMeta.cpp:
  Auto merged
storage/ndb/src/kernel/blocks/dbtup/DbtupPagMan.cpp:
  Auto merged
storage/ndb/src/kernel/blocks/dbtup/DbtupPageMap.cpp:
  Auto merged
storage/ndb/src/kernel/blocks/dbtup/DbtupRoutines.cpp:
  Auto merged
storage/ndb/src/kernel/blocks/dbtup/DbtupScan.cpp:
  Auto merged
storage/ndb/src/kernel/blocks/dbtup/DbtupStoredProcDef.cpp:
  Auto merged
storage/ndb/src/kernel/blocks/dbtup/DbtupTabDesMan.cpp:
  Auto merged
storage/ndb/src/kernel/blocks/dbtup/DbtupTrigger.cpp:
  Auto merged
storage/ndb/src/kernel/blocks/dbtux/Dbtux.hpp:
  Auto merged
storage/ndb/src/kernel/blocks/dbtux/DbtuxCmp.cpp:
  Auto merged
storage/ndb/src/kernel/blocks/dbtux/DbtuxDebug.cpp:
  Auto merged
storage/ndb/src/kernel/blocks/dbtux/DbtuxGen.cpp:
  Auto merged
storage/ndb/src/kernel/blocks/dbtux/DbtuxMaint.cpp:
  Auto merged
storage/ndb/src/kernel/blocks/dbtux/DbtuxMeta.cpp:
  Auto merged
storage/ndb/src/kernel/blocks/dbtux/DbtuxNode.cpp:
  Auto merged
storage/ndb/src/kernel/blocks/dbtux/DbtuxScan.cpp:
  Auto merged
storage/ndb/src/kernel/blocks/dbtux/DbtuxSearch.cpp:
  Auto merged
storage/ndb/src/kernel/blocks/dbtux/DbtuxTree.cpp:
  Auto merged
storage/ndb/src/kernel/blocks/dbutil/DbUtil.cpp:
  Auto merged
storage/ndb/src/kernel/blocks/dbutil/DbUtil.hpp:
  Auto merged
storage/ndb/src/kernel/blocks/ndbcntr/Ndbcntr.hpp:
  Auto merged
storage/ndb/src/kernel/blocks/ndbcntr/NdbcntrInit.cpp:
  Auto merged
storage/ndb/src/kernel/blocks/ndbcntr/NdbcntrMain.cpp:
  Auto merged
storage/ndb/src/kernel/blocks/ndbcntr/NdbcntrSysTable.cpp:
  Auto merged
storage/ndb/src/kernel/blocks/ndbfs/AsyncFile.cpp:
  Auto merged
storage/ndb/src/kernel/blocks/ndbfs/AsyncFile.hpp:
  Auto merged
storage/ndb/src/kernel/blocks/ndbfs/AsyncFileTest/AsyncFileTest.cpp:
  Auto merged
storage/ndb/src/kernel/blocks/ndbfs/CircularIndex.cpp:
  Auto merged
storage/ndb/src/kernel/blocks/ndbfs/CircularIndex.hpp:
  Auto merged
storage/ndb/src/kernel/blocks/ndbfs/Filename.cpp:
  Auto merged
storage/ndb/src/kernel/blocks/ndbfs/Filename.hpp:
  Auto merged
storage/ndb/src/kernel/blocks/ndbfs/MemoryChannel.cpp:
  Auto merged
storage/ndb/src/kernel/blocks/ndbfs/MemoryChannel.hpp:
  Auto merged
storage/ndb/src/kernel/blocks/ndbfs/MemoryChannelTest/MemoryChannelTest.cpp:
  Auto merged
storage/ndb/src/kernel/blocks/ndbfs/Ndbfs.cpp:
  Auto merged
storage/ndb/src/kernel/blocks/ndbfs/Ndbfs.hpp:
  Auto merged
storage/ndb/src/kernel/blocks/ndbfs/OpenFiles.hpp:
  Auto merged
storage/ndb/src/kernel/blocks/ndbfs/Pool.hpp:
  Auto merged
storage/ndb/src/kernel/blocks/ndbfs/VoidFs.cpp:
  Auto merged
storage/ndb/src/kernel/blocks/qmgr/Qmgr.hpp:
  Auto merged
storage/ndb/src/kernel/blocks/qmgr/QmgrInit.cpp:
  Auto merged
storage/ndb/src/kernel/blocks/qmgr/QmgrMain.cpp:
  Auto merged
storage/ndb/src/kernel/blocks/qmgr/timer.hpp:
  Auto merged
storage/ndb/src/kernel/blocks/suma/Suma.cpp:
  Auto merged
storage/ndb/src/kernel/blocks/suma/Suma.hpp:
  Auto merged
storage/ndb/src/kernel/blocks/suma/SumaInit.cpp:
  Auto merged
storage/ndb/src/kernel/blocks/trix/Trix.cpp:
  Auto merged
storage/ndb/src/kernel/blocks/trix/Trix.hpp:
  Auto merged
storage/ndb/src/kernel/error/ErrorHandlingMacros.hpp:
  Auto merged
storage/ndb/src/kernel/error/ErrorReporter.cpp:
  Auto merged
storage/ndb/src/kernel/error/ErrorReporter.hpp:
  Auto merged
storage/ndb/src/kernel/error/TimeModule.cpp:
  Auto merged
storage/ndb/src/kernel/error/TimeModule.hpp:
  Auto merged
storage/ndb/src/kernel/error/ndbd_exit_codes.c:
  Auto merged
storage/ndb/src/kernel/vm/Array.hpp:
  Auto merged
storage/ndb/src/kernel/vm/ArrayPool.hpp:
  Auto merged
storage/ndb/src/kernel/vm/CArray.hpp:
  Auto merged
storage/ndb/src/kernel/vm/Callback.hpp:
  Auto merged
storage/ndb/src/kernel/vm/ClusterConfiguration.cpp:
  Auto merged
storage/ndb/src/kernel/vm/ClusterConfiguration.hpp:
  Auto merged
storage/ndb/src/kernel/vm/Configuration.cpp:
  Auto merged
storage/ndb/src/kernel/vm/Configuration.hpp:
  Auto merged
storage/ndb/src/kernel/vm/DLFifoList.hpp:
  Auto merged
storage/ndb/src/kernel/vm/DLHashTable.hpp:
  Auto merged
storage/ndb/src/kernel/vm/DLHashTable2.hpp:
  Auto merged
storage/ndb/src/kernel/vm/DLList.hpp:
  Auto merged
storage/ndb/src/kernel/vm/DataBuffer.hpp:
  Auto merged
storage/ndb/src/kernel/vm/Emulator.cpp:
  Auto merged
storage/ndb/src/kernel/vm/Emulator.hpp:
  Auto merged
storage/ndb/src/kernel/vm/FastScheduler.cpp:
  Auto merged
storage/ndb/src/kernel/vm/FastScheduler.hpp:
  Auto merged
storage/ndb/src/kernel/vm/GlobalData.hpp:
  Auto merged
storage/ndb/src/kernel/vm/KeyDescriptor.hpp:
  Auto merged
storage/ndb/src/kernel/vm/KeyTable.hpp:
  Auto merged
storage/ndb/src/kernel/vm/KeyTable2.hpp:
  Auto merged
storage/ndb/src/kernel/vm/LongSignal.hpp:
  Auto merged
storage/ndb/src/kernel/vm/Mutex.cpp:
  Auto merged
storage/ndb/src/kernel/vm/Mutex.hpp:
  Auto merged
storage/ndb/src/kernel/vm/Prio.hpp:
  Auto merged
storage/ndb/src/kernel/vm/RequestTracker.hpp:
  Auto merged
storage/ndb/src/kernel/vm/SLList.hpp:
  Auto merged
storage/ndb/src/kernel/vm/SafeCounter.cpp:
  Auto merged
storage/ndb/src/kernel/vm/SafeCounter.hpp:
  Auto merged
storage/ndb/src/kernel/vm/SectionReader.cpp:
  Auto merged
storage/ndb/src/kernel/vm/SectionReader.hpp:
  Auto merged
storage/ndb/src/kernel/vm/SignalCounter.hpp:
  Auto merged
storage/ndb/src/kernel/vm/SimBlockList.hpp:
  Auto merged
storage/ndb/src/kernel/vm/SimplePropertiesSection.cpp:
  Auto merged
storage/ndb/src/kernel/vm/SimulatedBlock.cpp:
  Auto merged
storage/ndb/src/kernel/vm/SimulatedBlock.hpp:
  Auto merged
storage/ndb/src/kernel/vm/SuperPool.cpp:
  Auto merged
storage/ndb/src/kernel/vm/SuperPool.hpp:
  Auto merged
storage/ndb/src/kernel/vm/ThreadConfig.cpp:
  Auto merged
storage/ndb/src/kernel/vm/ThreadConfig.hpp:
  Auto merged
storage/ndb/src/kernel/vm/TimeQueue.cpp:
  Auto merged
storage/ndb/src/kernel/vm/TimeQueue.hpp:
  Auto merged
storage/ndb/src/kernel/vm/TransporterCallback.cpp:
  Auto merged
storage/ndb/src/kernel/vm/VMSignal.cpp:
  Auto merged
storage/ndb/src/kernel/vm/VMSignal.hpp:
  Auto merged
storage/ndb/src/kernel/vm/WaitQueue.hpp:
  Auto merged
storage/ndb/src/kernel/vm/WatchDog.cpp:
  Auto merged
storage/ndb/src/kernel/vm/WatchDog.hpp:
  Auto merged
storage/ndb/src/kernel/vm/al_test/arrayListTest.cpp:
  Auto merged
storage/ndb/src/kernel/vm/al_test/arrayPoolTest.cpp:
  Auto merged
storage/ndb/src/kernel/vm/al_test/main.cpp:
  Auto merged
storage/ndb/src/kernel/vm/ndbd_malloc.cpp:
  Auto merged
storage/ndb/src/kernel/vm/ndbd_malloc.hpp:
  Auto merged
storage/ndb/src/kernel/vm/pc.hpp:
  Auto merged
storage/ndb/src/kernel/vm/testCopy/rr.cpp:
  Auto merged
storage/ndb/src/kernel/vm/testCopy/testCopy.cpp:
  Auto merged
storage/ndb/src/kernel/vm/testDataBuffer/testDataBuffer.cpp:
  Auto merged
storage/ndb/src/kernel/vm/testLongSig/testLongSig.cpp:
  Auto merged
storage/ndb/src/kernel/vm/testSimplePropertiesSection/test.cpp:
  Auto merged
storage/ndb/src/kernel/vm/testSuperPool.cpp:
  Auto merged
storage/ndb/src/mgmapi/LocalConfig.cpp:
  Auto merged
storage/ndb/src/mgmapi/LocalConfig.hpp:
  Auto merged
storage/ndb/src/mgmapi/mgmapi.cpp:
  Auto merged
storage/ndb/src/mgmapi/mgmapi_configuration.hpp:
  Auto merged
storage/ndb/src/mgmapi/mgmapi_internal.h:
  Auto merged
storage/ndb/src/mgmapi/ndb_logevent.cpp:
  Auto merged
storage/ndb/src/mgmapi/ndb_logevent.hpp:
  Auto merged
storage/ndb/src/mgmapi/test/keso.c:
  Auto merged
storage/ndb/src/mgmapi/test/mgmSrvApi.cpp:
  Auto merged
storage/ndb/src/mgmclient/CommandInterpreter.cpp:
  Auto merged
storage/ndb/src/mgmclient/main.cpp:
  Auto merged
storage/ndb/src/mgmclient/ndb_mgmclient.hpp:
  Auto merged
storage/ndb/src/mgmclient/ndb_mgmclient.h:
  Auto merged
storage/ndb/src/mgmclient/test_cpcd/test_cpcd.cpp:
  Auto merged
storage/ndb/src/mgmsrv/Config.cpp:
  Auto merged
storage/ndb/src/mgmsrv/Config.hpp:
  Auto merged
storage/ndb/src/mgmsrv/ConfigInfo.cpp:
  Auto merged
storage/ndb/src/mgmsrv/ConfigInfo.hpp:
  Auto merged
storage/ndb/src/mgmsrv/InitConfigFileParser.cpp:
  Auto merged
storage/ndb/src/mgmsrv/InitConfigFileParser.hpp:
  Auto merged
storage/ndb/src/mgmsrv/MgmtSrvr.cpp:
  Auto merged
storage/ndb/src/mgmsrv/MgmtSrvr.hpp:
  Auto merged
storage/ndb/src/mgmsrv/MgmtSrvrConfig.cpp:
  Auto merged
storage/ndb/src/mgmsrv/MgmtSrvrGeneralSignalHandling.cpp:
  Auto merged
storage/ndb/src/mgmsrv/Services.cpp:
  Auto merged
storage/ndb/src/mgmsrv/Services.hpp:
  Auto merged
storage/ndb/src/mgmsrv/SignalQueue.cpp:
  Auto merged
storage/ndb/src/mgmsrv/SignalQueue.hpp:
  Auto merged
storage/ndb/src/mgmsrv/convertStrToInt.cpp:
  Auto merged
storage/ndb/src/mgmsrv/convertStrToInt.hpp:
  Auto merged
storage/ndb/src/mgmsrv/main.cpp:
  Auto merged
storage/ndb/src/mgmsrv/mkconfig/mkconfig.cpp:
  Auto merged
storage/ndb/src/ndbapi/API.hpp:
  Auto merged
storage/ndb/src/ndbapi/ClusterMgr.cpp:
  Auto merged
storage/ndb/src/ndbapi/ClusterMgr.hpp:
  Auto merged
storage/ndb/src/ndbapi/DictCache.cpp:
  Auto merged
storage/ndb/src/ndbapi/DictCache.hpp:
  Auto merged
storage/ndb/src/ndbapi/Ndb.cpp:
  Auto merged
storage/ndb/src/ndbapi/NdbApiSignal.cpp:
  Auto merged
storage/ndb/src/ndbapi/NdbApiSignal.hpp:
  Auto merged
storage/ndb/src/ndbapi/NdbBlob.cpp:
  Auto merged
storage/ndb/src/ndbapi/NdbBlobImpl.hpp:
  Auto merged
storage/ndb/src/ndbapi/NdbDictionary.cpp:
  Auto merged
storage/ndb/src/ndbapi/NdbDictionaryImpl.cpp:
  Auto merged
storage/ndb/src/ndbapi/NdbDictionaryImpl.hpp:
  Auto merged
storage/ndb/src/ndbapi/NdbErrorOut.cpp:
  Auto merged
storage/ndb/src/ndbapi/NdbEventOperation.cpp:
  Auto merged
storage/ndb/src/ndbapi/NdbEventOperationImpl.cpp:
  Auto merged
storage/ndb/src/ndbapi/NdbEventOperationImpl.hpp:
  Auto merged
storage/ndb/src/ndbapi/NdbImpl.hpp:
  Auto merged
storage/ndb/src/ndbapi/NdbIndexOperation.cpp:
  Auto merged
storage/ndb/src/ndbapi/NdbLinHash.hpp:
  Auto merged
storage/ndb/src/ndbapi/NdbOperation.cpp:
  Auto merged
storage/ndb/src/ndbapi/NdbOperationDefine.cpp:
  Auto merged
storage/ndb/src/ndbapi/NdbOperationExec.cpp:
  Auto merged
storage/ndb/src/ndbapi/NdbOperationInt.cpp:
  Auto merged
storage/ndb/src/ndbapi/NdbOperationScan.cpp:
  Auto merged
storage/ndb/src/ndbapi/NdbOperationSearch.cpp:
  Auto merged
storage/ndb/src/ndbapi/NdbPool.cpp:
  Auto merged
storage/ndb/src/ndbapi/NdbPoolImpl.cpp:
  Auto merged
storage/ndb/src/ndbapi/NdbPoolImpl.hpp:
  Auto merged
storage/ndb/src/ndbapi/NdbRecAttr.cpp:
  Auto merged
storage/ndb/src/ndbapi/NdbReceiver.cpp:
  Auto merged
storage/ndb/src/ndbapi/NdbScanFilter.cpp:
  Auto merged
storage/ndb/src/ndbapi/NdbScanOperation.cpp:
  Auto merged
storage/ndb/src/ndbapi/NdbTransaction.cpp:
  Auto merged
storage/ndb/src/ndbapi/NdbTransactionScan.cpp:
  Auto merged
storage/ndb/src/ndbapi/NdbUtil.cpp:
  Auto merged
storage/ndb/src/ndbapi/NdbUtil.hpp:
  Auto merged
storage/ndb/src/ndbapi/NdbWaiter.hpp:
  Auto merged
storage/ndb/src/ndbapi/Ndberr.cpp:
  Auto merged
storage/ndb/src/ndbapi/Ndbif.cpp:
  Auto merged
storage/ndb/src/ndbapi/Ndbinit.cpp:
  Auto merged
storage/ndb/src/ndbapi/Ndblist.cpp:
  Auto merged
storage/ndb/src/ndbapi/ObjectMap.hpp:
  Auto merged
storage/ndb/src/ndbapi/SignalSender.cpp:
  Auto merged
storage/ndb/src/ndbapi/SignalSender.hpp:
  Auto merged
storage/ndb/src/ndbapi/TransporterFacade.cpp:
  Auto merged
storage/ndb/src/ndbapi/TransporterFacade.hpp:
  Auto merged
storage/ndb/src/ndbapi/ndb_cluster_connection.cpp:
  Auto merged
storage/ndb/src/ndbapi/ndb_cluster_connection_impl.hpp:
  Auto merged
storage/ndb/src/ndbapi/ndberror.c:
  Auto merged
storage/ndb/src/ndbapi/signal-sender/SignalSender.cpp:
  Auto merged
storage/ndb/src/ndbapi/signal-sender/SignalSender.hpp:
  Auto merged
storage/ndb/test/include/CpcClient.hpp:
  Auto merged
storage/ndb/test/include/HugoAsynchTransactions.hpp:
  Auto merged
storage/ndb/test/include/HugoCalculator.hpp:
  Auto merged
storage/ndb/test/include/HugoOperations.hpp:
  Auto merged
storage/ndb/test/include/HugoTransactions.hpp:
  Auto merged
storage/ndb/test/include/NDBT.hpp:
  Auto merged
storage/ndb/test/include/NDBT_DataSet.hpp:
  Auto merged
storage/ndb/test/include/NDBT_DataSetTransaction.hpp:
  Auto merged
storage/ndb/test/include/NDBT_Error.hpp:
  Auto merged
storage/ndb/test/include/NDBT_Output.hpp:
  Auto merged
storage/ndb/test/include/NDBT_ResultRow.hpp:
  Auto merged
storage/ndb/test/include/NDBT_ReturnCodes.h:
  Auto merged
storage/ndb/test/include/NDBT_Stats.hpp:
  Auto merged
storage/ndb/test/include/NDBT_Table.hpp:
  Auto merged
storage/ndb/test/include/NDBT_Tables.hpp:
  Auto merged
storage/ndb/test/include/NDBT_Test.hpp:
  Auto merged
storage/ndb/test/include/NdbBackup.hpp:
  Auto merged
storage/ndb/test/include/NdbConfig.hpp:
  Auto merged
storage/ndb/test/include/NdbGrep.hpp:
  Auto merged
storage/ndb/test/include/NdbRestarter.hpp:
  Auto merged
storage/ndb/test/include/NdbRestarts.hpp:
  Auto merged
storage/ndb/test/include/NdbSchemaCon.hpp:
  Auto merged
storage/ndb/test/include/NdbSchemaOp.hpp:
  Auto merged
storage/ndb/test/include/NdbTest.hpp:
  Auto merged
storage/ndb/test/include/NdbTimer.hpp:
  Auto merged
storage/ndb/test/include/TestNdbEventOperation.hpp:
  Auto merged
storage/ndb/test/include/UtilTransactions.hpp:
  Auto merged
storage/ndb/test/include/getarg.h:
  Auto merged
storage/ndb/test/ndbapi/InsertRecs.cpp:
  Auto merged
storage/ndb/test/ndbapi/ScanFilter.hpp:
  Auto merged
storage/ndb/test/ndbapi/ScanFunctions.hpp:
  Auto merged
storage/ndb/test/ndbapi/ScanInterpretTest.hpp:
  Auto merged
storage/ndb/test/ndbapi/TraceNdbApi.cpp:
  Auto merged
storage/ndb/test/ndbapi/VerifyNdbApi.cpp:
  Auto merged
storage/ndb/test/ndbapi/acid.cpp:
  Auto merged
storage/ndb/test/ndbapi/acid2.cpp:
  Auto merged
storage/ndb/test/ndbapi/adoInsertRecs.cpp:
  Auto merged
storage/ndb/test/ndbapi/asyncGenerator.cpp:
  Auto merged
storage/ndb/test/ndbapi/benchronja.cpp:
  Auto merged
storage/ndb/test/ndbapi/bulk_copy.cpp:
  Auto merged
storage/ndb/test/ndbapi/cdrserver.cpp:
  Auto merged
storage/ndb/test/ndbapi/celloDb.cpp:
  Auto merged
storage/ndb/test/ndbapi/create_all_tabs.cpp:
  Auto merged
storage/ndb/test/ndbapi/create_tab.cpp:
  Auto merged
storage/ndb/test/ndbapi/drop_all_tabs.cpp:
  Auto merged
storage/ndb/test/ndbapi/flexAsynch.cpp:
  Auto merged
storage/ndb/test/ndbapi/flexBench.cpp:
  Auto merged
storage/ndb/test/ndbapi/flexHammer.cpp:
  Auto merged
storage/ndb/test/ndbapi/flexScan.cpp:
  Auto merged
storage/ndb/test/ndbapi/flexTT.cpp:
  Auto merged
storage/ndb/test/ndbapi/flexTimedAsynch.cpp:
  Auto merged
storage/ndb/test/ndbapi/flex_bench_mysql.cpp:
  Auto merged
storage/ndb/test/ndbapi/index.cpp:
  Auto merged
storage/ndb/test/ndbapi/index2.cpp:
  Auto merged
storage/ndb/test/ndbapi/initronja.cpp:
  Auto merged
storage/ndb/test/ndbapi/interpreterInTup.cpp:
  Auto merged
storage/ndb/test/ndbapi/mainAsyncGenerator.cpp:
  Auto merged
storage/ndb/test/ndbapi/msa.cpp:
  Auto merged
storage/ndb/test/ndbapi/ndb_async1.cpp:
  Auto merged
storage/ndb/test/ndbapi/ndb_async2.cpp:
  Auto merged
storage/ndb/test/ndbapi/ndb_user_populate.cpp:
  Auto merged
storage/ndb/test/ndbapi/ndb_user_transaction.cpp:
  Auto merged
storage/ndb/test/ndbapi/ndb_user_transaction2.cpp:
  Auto merged
storage/ndb/test/ndbapi/ndb_user_transaction3.cpp:
  Auto merged
storage/ndb/test/ndbapi/ndb_user_transaction4.cpp:
  Auto merged
storage/ndb/test/ndbapi/ndb_user_transaction5.cpp:
  Auto merged
storage/ndb/test/ndbapi/ndb_user_transaction6.cpp:
  Auto merged
storage/ndb/test/ndbapi/restarter.cpp:
  Auto merged
storage/ndb/test/ndbapi/restarter2.cpp:
  Auto merged
storage/ndb/test/ndbapi/restarts.cpp:
  Auto merged
storage/ndb/test/ndbapi/size.cpp:
  Auto merged
storage/ndb/test/ndbapi/testBackup.cpp:
  Auto merged
storage/ndb/test/ndbapi/testBasic.cpp:
  Auto merged
storage/ndb/test/ndbapi/testBasicAsynch.cpp:
  Auto merged
storage/ndb/test/ndbapi/testBlobs.cpp:
  Auto merged
storage/ndb/test/ndbapi/testDataBuffers.cpp:
  Auto merged
storage/ndb/test/ndbapi/testDeadlock.cpp:
  Auto merged
storage/ndb/test/ndbapi/testDict.cpp:
  Auto merged
storage/ndb/test/ndbapi/testGrepVerify.cpp:
  Auto merged
storage/ndb/test/ndbapi/testIndex.cpp:
  Auto merged
storage/ndb/test/ndbapi/testInterpreter.cpp:
  Auto merged
storage/ndb/test/ndbapi/testMgm.cpp:
  Auto merged
storage/ndb/test/ndbapi/testNdbApi.cpp:
  Auto merged
storage/ndb/test/ndbapi/testNodeRestart.cpp:
  Auto merged
storage/ndb/test/ndbapi/testOIBasic.cpp:
  Auto merged
storage/ndb/test/ndbapi/testOperations.cpp:
  Auto merged
storage/ndb/test/ndbapi/testOrderedIndex.cpp:
  Auto merged
storage/ndb/test/ndbapi/testPartitioning.cpp:
  Auto merged
storage/ndb/test/ndbapi/testReadPerf.cpp:
  Auto merged
storage/ndb/test/ndbapi/bank/Bank.cpp:
  Auto merged
storage/ndb/test/ndbapi/bank/Bank.hpp:
  Auto merged
storage/ndb/test/ndbapi/bank/BankLoad.cpp:
  Auto merged
storage/ndb/test/ndbapi/bank/bankCreator.cpp:
  Auto merged
storage/ndb/test/ndbapi/bank/bankMakeGL.cpp:
  Auto merged
storage/ndb/test/ndbapi/bank/bankSumAccounts.cpp:
  Auto merged
storage/ndb/test/ndbapi/bank/bankTimer.cpp:
  Auto merged
storage/ndb/test/ndbapi/bank/bankTransactionMaker.cpp:
  Auto merged
storage/ndb/test/ndbapi/bank/bankValidateAllGLs.cpp:
  Auto merged
storage/ndb/test/ndbapi/bank/testBank.cpp:
  Auto merged
storage/ndb/test/ndbapi/bench/asyncGenerator.cpp:
  Auto merged
storage/ndb/test/ndbapi/bench/dbGenerator.h:
  Auto merged
storage/ndb/test/ndbapi/bench/dbPopulate.cpp:
  Auto merged
storage/ndb/test/ndbapi/bench/dbPopulate.h:
  Auto merged
storage/ndb/test/ndbapi/bench/macros.h:
  Auto merged
storage/ndb/test/ndbapi/bench/mainAsyncGenerator.cpp:
  Auto merged
storage/ndb/test/ndbapi/bench/mainPopulate.cpp:
  Auto merged
storage/ndb/test/ndbapi/bench/ndb_async1.cpp:
  Auto merged
storage/ndb/test/ndbapi/bench/ndb_async2.cpp:
  Auto merged
storage/ndb/test/ndbapi/testRestartGci.cpp:
  Auto merged
storage/ndb/test/ndbapi/testSRBank.cpp:
  Auto merged
storage/ndb/test/ndbapi/testScan.cpp:
  Auto merged
storage/ndb/test/ndbapi/testScanInterpreter.cpp:
  Auto merged
storage/ndb/test/ndbapi/testScanPerf.cpp:
  Auto merged
storage/ndb/test/ndbapi/testSystemRestart.cpp:
  Auto merged
storage/ndb/test/ndbapi/testTimeout.cpp:
  Auto merged
storage/ndb/test/ndbapi/testTransactions.cpp:
  Auto merged
storage/ndb/test/ndbapi/test_event.cpp:
  Auto merged
storage/ndb/test/ndbapi/test_event_merge.cpp:
  Auto merged
storage/ndb/test/ndbapi/test_event_multi_table.cpp:
  Auto merged
storage/ndb/test/ndbapi/userInterface.cpp:
  Auto merged
storage/ndb/test/ndbapi/bench/ndb_error.hpp:
  Auto merged
storage/ndb/test/ndbapi/bench/ndb_schema.hpp:
  Auto merged
storage/ndb/test/ndbapi/bench/ndb_user_transaction.cpp:
  Auto merged
storage/ndb/test/ndbapi/bench/ndb_user_transaction2.cpp:
  Auto merged
storage/ndb/test/ndbapi/bench/ndb_user_transaction3.cpp:
  Auto merged
storage/ndb/test/ndbapi/bench/ndb_user_transaction4.cpp:
  Auto merged
storage/ndb/test/ndbapi/bench/ndb_user_transaction5.cpp:
  Auto merged
storage/ndb/test/ndbapi/bench/ndb_user_transaction6.cpp:
  Auto merged
storage/ndb/test/ndbapi/bench/testData.h:
  Auto merged
storage/ndb/test/ndbapi/bench/testDefinitions.h:
  Auto merged
storage/ndb/test/ndbapi/bench/userInterface.cpp:
  Auto merged
storage/ndb/test/ndbapi/bench/userInterface.h:
  Auto merged
storage/ndb/test/newtonapi/basic_test/basic/basic.cpp:
  Auto merged
storage/ndb/test/newtonapi/basic_test/bulk_read/br_test.cpp:
  Auto merged
storage/ndb/test/newtonapi/basic_test/common.cpp:
  Auto merged
storage/ndb/test/newtonapi/basic_test/common.hpp:
  Auto merged
storage/ndb/test/newtonapi/basic_test/ptr_binding/ptr_binding_test.cpp:
  Auto merged
storage/ndb/test/newtonapi/basic_test/too_basic.cpp:
  Auto merged
storage/ndb/test/newtonapi/perf_test/perf.cpp:
  Auto merged
storage/ndb/test/odbc/SQL99_test/SQL99_test.cpp:
  Auto merged
storage/ndb/test/odbc/SQL99_test/SQL99_test.h:
  Auto merged
storage/ndb/test/odbc/client/NDBT_ALLOCHANDLE.cpp:
  Auto merged
storage/ndb/test/odbc/client/NDBT_ALLOCHANDLE_HDBC.cpp:
  Auto merged
storage/ndb/test/odbc/client/NDBT_SQLConnect.cpp:
  Auto merged
storage/ndb/test/odbc/client/NDBT_SQLPrepare.cpp:
  Auto merged
storage/ndb/test/odbc/client/SQLAllocEnvTest.cpp:
  Auto merged
storage/ndb/test/odbc/client/SQLAllocHandleTest.cpp:
  Auto merged
storage/ndb/test/odbc/client/SQLAllocHandleTest_bf.cpp:
  Auto merged
storage/ndb/test/odbc/client/SQLBindColTest.cpp:
  Auto merged
storage/ndb/test/odbc/client/SQLBindParameterTest.cpp:
  Auto merged
storage/ndb/test/odbc/client/SQLCancelTest.cpp:
  Auto merged
storage/ndb/test/odbc/client/SQLCloseCursorTest.cpp:
  Auto merged
storage/ndb/test/odbc/client/SQLColAttributeTest.cpp:
  Auto merged
storage/ndb/test/odbc/client/SQLColAttributeTest1.cpp:
  Auto merged
storage/ndb/test/odbc/client/SQLColAttributeTest2.cpp:
  Auto merged
storage/ndb/test/odbc/client/SQLColAttributeTest3.cpp:
  Auto merged
storage/ndb/test/odbc/client/SQLConnectTest.cpp:
  Auto merged
storage/ndb/test/odbc/client/SQLCopyDescTest.cpp:
  Auto merged
storage/ndb/test/odbc/client/SQLDescribeColTest.cpp:
  Auto merged
storage/ndb/test/odbc/client/SQLDisconnectTest.cpp:
  Auto merged
storage/ndb/test/odbc/client/SQLDriverConnectTest.cpp:
  Auto merged
storage/ndb/test/odbc/client/SQLEndTranTest.cpp:
  Auto merged
storage/ndb/test/odbc/client/SQLErrorTest.cpp:
  Auto merged
storage/ndb/test/odbc/client/SQLExecDirectTest.cpp:
  Auto merged
storage/ndb/test/odbc/client/SQLExecuteTest.cpp:
  Auto merged
storage/ndb/test/odbc/client/SQLFetchScrollTest.cpp:
  Auto merged
storage/ndb/test/odbc/client/SQLFetchTest.cpp:
  Auto merged
storage/ndb/test/odbc/client/SQLFreeHandleTest.cpp:
  Auto merged
storage/ndb/test/odbc/client/SQLFreeStmtTest.cpp:
  Auto merged
storage/ndb/test/odbc/client/SQLGetConnectAttrTest.cpp:
  Auto merged
storage/ndb/test/odbc/client/SQLGetCursorNameTest.cpp:
  Auto merged
storage/ndb/test/odbc/client/SQLGetDataTest.cpp:
  Auto merged
storage/ndb/test/odbc/client/SQLGetDescFieldTest.cpp:
  Auto merged
storage/ndb/test/odbc/client/SQLGetDescRecTest.cpp:
  Auto merged
storage/ndb/test/odbc/client/SQLGetDiagFieldTest.cpp:
  Auto merged
storage/ndb/test/odbc/client/SQLGetDiagRecSimpleTest.cpp:
  Auto merged
storage/ndb/test/odbc/client/SQLGetDiagRecTest.cpp:
  Auto merged
storage/ndb/test/odbc/client/SQLGetEnvAttrTest.cpp:
  Auto merged
storage/ndb/test/odbc/client/SQLGetFunctionsTest.cpp:
  Auto merged
storage/ndb/test/odbc/client/SQLGetInfoTest.cpp:
  Auto merged
storage/ndb/test/odbc/client/SQLGetStmtAttrTest.cpp:
  Auto merged
storage/ndb/test/odbc/client/SQLGetTypeInfoTest.cpp:
  Auto merged
storage/ndb/test/odbc/client/SQLMoreResultsTest.cpp:
  Auto merged
storage/ndb/test/odbc/client/SQLNumResultColsTest.cpp:
  Auto merged
storage/ndb/test/odbc/client/SQLParamDataTest.cpp:
  Auto merged
storage/ndb/test/odbc/client/SQLPrepareTest.cpp:
  Auto merged
storage/ndb/test/odbc/client/SQLPutDataTest.cpp:
  Auto merged
storage/ndb/test/odbc/client/SQLRowCountTest.cpp:
  Auto merged
storage/ndb/test/odbc/client/SQLSetConnectAttrTest.cpp:
  Auto merged
storage/ndb/test/odbc/client/SQLSetCursorNameTest.cpp:
  Auto merged
storage/ndb/test/odbc/client/SQLSetDescFieldTest.cpp:
  Auto merged
storage/ndb/test/odbc/client/SQLSetDescRecTest.cpp:
  Auto merged
storage/ndb/test/odbc/client/SQLSetEnvAttrTest.cpp:
  Auto merged
storage/ndb/test/odbc/client/SQLSetStmtAttrTest.cpp:
  Auto merged
storage/ndb/test/odbc/client/SQLTablesTest.cpp:
  Auto merged
storage/ndb/test/odbc/client/SQLTransactTest.cpp:
  Auto merged
storage/ndb/test/odbc/client/common.hpp:
  Auto merged
storage/ndb/test/odbc/client/main.cpp:
  Auto merged
storage/ndb/test/odbc/driver/testOdbcDriver.cpp:
  Auto merged
storage/ndb/test/odbc/test_compiler/test_compiler.cpp:
  Auto merged
storage/ndb/test/run-test/main.cpp:
  Auto merged
storage/ndb/test/run-test/run-test.hpp:
  Auto merged
storage/ndb/test/src/CpcClient.cpp:
  Auto merged
storage/ndb/test/src/HugoAsynchTransactions.cpp:
  Auto merged
storage/ndb/test/src/HugoCalculator.cpp:
  Auto merged
storage/ndb/test/src/HugoOperations.cpp:
  Auto merged
storage/ndb/test/src/HugoTransactions.cpp:
  Auto merged
storage/ndb/test/src/NDBT_Error.cpp:
  Auto merged
storage/ndb/test/src/NDBT_Output.cpp:
  Auto merged
storage/ndb/test/src/NDBT_ResultRow.cpp:
  Auto merged
storage/ndb/test/src/NDBT_ReturnCodes.cpp:
  Auto merged
storage/ndb/test/src/NDBT_Table.cpp:
  Auto merged
storage/ndb/test/src/NDBT_Tables.cpp:
  Auto merged
storage/ndb/test/src/NDBT_Test.cpp:
  Auto merged
storage/ndb/test/src/NdbBackup.cpp:
  Auto merged
storage/ndb/test/src/NdbConfig.cpp:
  Auto merged
storage/ndb/test/src/NdbGrep.cpp:
  Auto merged
storage/ndb/test/src/NdbRestarter.cpp:
  Auto merged
storage/ndb/test/src/NdbRestarts.cpp:
  Auto merged
storage/ndb/test/src/NdbSchemaCon.cpp:
  Auto merged
storage/ndb/test/src/NdbSchemaOp.cpp:
  Auto merged
storage/ndb/test/src/UtilTransactions.cpp:
  Auto merged
storage/ndb/test/tools/copy_tab.cpp:
  Auto merged
storage/ndb/test/tools/cpcc.cpp:
  Auto merged
storage/ndb/test/tools/create_index.cpp:
  Auto merged
storage/ndb/test/tools/hugoCalculator.cpp:
  Auto merged
storage/ndb/test/tools/hugoFill.cpp:
  Auto merged
storage/ndb/test/tools/hugoLoad.cpp:
  Auto merged
storage/ndb/test/tools/hugoLockRecords.cpp:
  Auto merged
storage/ndb/test/tools/hugoPkDelete.cpp:
  Auto merged
storage/ndb/test/tools/hugoPkRead.cpp:
  Auto merged
storage/ndb/test/tools/hugoPkReadRecord.cpp:
  Auto merged
storage/ndb/test/tools/hugoPkUpdate.cpp:
  Auto merged
storage/ndb/test/tools/hugoScanRead.cpp:
  Auto merged
storage/ndb/test/tools/hugoScanUpdate.cpp:
  Auto merged
storage/ndb/test/tools/restart.cpp:
  Auto merged
storage/ndb/test/tools/transproxy.cpp:
  Auto merged
storage/ndb/test/tools/verify_index.cpp:
  Auto merged
storage/ndb/tools/delete_all.cpp:
  Auto merged
storage/ndb/tools/desc.cpp:
  Auto merged
storage/ndb/tools/drop_index.cpp:
  Auto merged
storage/ndb/tools/drop_tab.cpp:
  Auto merged
storage/ndb/tools/listTables.cpp:
  Auto merged
storage/ndb/tools/ndb_condig.cpp:
  Auto merged
storage/ndb/tools/ndb_test_platform.cpp:
  Auto merged
storage/ndb/tools/ndbsql.cpp:
  Auto merged
storage/ndb/tools/restore/Restore.cpp:
  Auto merged
storage/ndb/tools/restore/Restore.hpp:
  Auto merged
storage/ndb/tools/restore/consumer.cpp:
  Auto merged
storage/ndb/tools/restore/consumer.hpp:
  Auto merged
storage/ndb/tools/restore/consumer_printer.cpp:
  Auto merged
storage/ndb/tools/restore/consumer_printer.hpp:
  Auto merged
storage/ndb/tools/restore/consumer_restore.cpp:
  Auto merged
storage/ndb/tools/restore/consumer_restore.hpp:
  Auto merged
storage/ndb/tools/restore/consumer_restorem.cpp:
  Auto merged
storage/ndb/tools/restore/restore_main.cpp:
  Auto merged
storage/ndb/tools/select_all.cpp:
  Auto merged
storage/ndb/tools/select_count.cpp:
  Auto merged
storage/ndb/tools/waiter.cpp:
  Auto merged
strings/Makefile.am:
  Auto merged
strings/ctype-big5.c:
  Auto merged
strings/ctype-bin.c:
  Auto merged
strings/ctype-cp932.c:
  Auto merged
strings/ctype-euc_kr.c:
  Auto merged
strings/ctype-eucjpms.c:
  Auto merged
strings/ctype-gb2312.c:
  Auto merged
strings/ctype-gbk.c:
  Auto merged
strings/ctype-latin1.c:
  Auto merged
strings/ctype-mb.c:
  Auto merged
strings/ctype-simple.c:
  Auto merged
strings/ctype-sjis.c:
  Auto merged
strings/ctype-tis620.c:
  Auto merged
strings/ctype-ucs2.c:
  Auto merged
strings/ctype-ujis.c:
  Auto merged
strings/ctype-utf8.c:
  Auto merged
strings/ctype-win1250ch.c:
  Auto merged
strings/ctype.c:
  Auto merged
strings/decimal.c:
  Auto merged
strings/strxnmov.c:
  Auto merged
strings/xml.c:
  Auto merged
tests/Makefile.am:
  Auto merged
tests/mysql_client_test.c:
  Auto merged
vio/Makefile.am:
  Auto merged
vio/vio.c:
  Auto merged
vio/viosocket.c:
  Auto merged
vio/viossl.c:
  Auto merged
vio/viosslfactories.c:
  Auto merged
zlib/Makefile.am:
  Auto merged
2006-12-23 20:20:40 +01:00
kent@kent-amd64.(none)
be15e3bc15 Merge mysql.com:/home/kent/bk/main/mysql-5.0
into  mysql.com:/home/kent/bk/main/mysql-5.1
2006-12-23 20:20:40 +01:00
unknown
6b0853a398 Many files:
Changed header to GPL version 2 only


BUILD/Makefile.am:
  Changed header to GPL version 2 only
Docs/Makefile.am:
  Changed header to GPL version 2 only
Makefile.am:
  Changed header to GPL version 2 only
SSL/Makefile.am:
  Changed header to GPL version 2 only
bdb/Makefile.in:
  Changed header to GPL version 2 only
client/Makefile.am:
  Changed header to GPL version 2 only
client/client_priv.h:
  Changed header to GPL version 2 only
client/completion_hash.cc:
  Changed header to GPL version 2 only
client/completion_hash.h:
  Changed header to GPL version 2 only
client/get_password.c:
  Changed header to GPL version 2 only
client/my_readline.h:
  Changed header to GPL version 2 only
client/mysql.cc:
  Changed header to GPL version 2 only
client/mysql_upgrade.c:
  Changed header to GPL version 2 only
client/mysqladmin.cc:
  Changed header to GPL version 2 only
client/mysqlbinlog.cc:
  Changed header to GPL version 2 only
client/mysqlcheck.c:
  Changed header to GPL version 2 only
client/mysqldump.c:
  Changed header to GPL version 2 only
client/mysqlimport.c:
  Changed header to GPL version 2 only
client/mysqlmanager-pwgen.c:
  Changed header to GPL version 2 only
client/mysqlmanagerc.c:
  Changed header to GPL version 2 only
client/mysqlshow.c:
  Changed header to GPL version 2 only
client/mysqltest.c:
  Changed header to GPL version 2 only
client/readline.cc:
  Changed header to GPL version 2 only
client/sql_string.cc:
  Changed header to GPL version 2 only
client/sql_string.h:
  Changed header to GPL version 2 only
cmd-line-utils/Makefile.am:
  Changed header to GPL version 2 only
dbug/Makefile.am:
  Changed header to GPL version 2 only
extra/Makefile.am:
  Changed header to GPL version 2 only
extra/charset2html.c:
  Changed header to GPL version 2 only
extra/comp_err.c:
  Changed header to GPL version 2 only
extra/innochecksum.c:
  Changed header to GPL version 2 only
extra/my_print_defaults.c:
  Changed header to GPL version 2 only
extra/mysql_waitpid.c:
  Changed header to GPL version 2 only
extra/perror.c:
  Changed header to GPL version 2 only
extra/replace.c:
  Changed header to GPL version 2 only
extra/resolve_stack_dump.c:
  Changed header to GPL version 2 only
extra/resolveip.c:
  Changed header to GPL version 2 only
heap/Makefile.am:
  Changed header to GPL version 2 only
heap/_check.c:
  Changed header to GPL version 2 only
heap/_rectest.c:
  Changed header to GPL version 2 only
heap/heapdef.h:
  Changed header to GPL version 2 only
heap/hp_block.c:
  Changed header to GPL version 2 only
heap/hp_clear.c:
  Changed header to GPL version 2 only
heap/hp_close.c:
  Changed header to GPL version 2 only
heap/hp_create.c:
  Changed header to GPL version 2 only
heap/hp_delete.c:
  Changed header to GPL version 2 only
heap/hp_extra.c:
  Changed header to GPL version 2 only
heap/hp_hash.c:
  Changed header to GPL version 2 only
heap/hp_info.c:
  Changed header to GPL version 2 only
heap/hp_open.c:
  Changed header to GPL version 2 only
heap/hp_panic.c:
  Changed header to GPL version 2 only
heap/hp_rename.c:
  Changed header to GPL version 2 only
heap/hp_rfirst.c:
  Changed header to GPL version 2 only
heap/hp_rkey.c:
  Changed header to GPL version 2 only
heap/hp_rlast.c:
  Changed header to GPL version 2 only
heap/hp_rnext.c:
  Changed header to GPL version 2 only
heap/hp_rprev.c:
  Changed header to GPL version 2 only
heap/hp_rrnd.c:
  Changed header to GPL version 2 only
heap/hp_rsame.c:
  Changed header to GPL version 2 only
heap/hp_scan.c:
  Changed header to GPL version 2 only
heap/hp_static.c:
  Changed header to GPL version 2 only
heap/hp_test1.c:
  Changed header to GPL version 2 only
heap/hp_test2.c:
  Changed header to GPL version 2 only
heap/hp_update.c:
  Changed header to GPL version 2 only
heap/hp_write.c:
  Changed header to GPL version 2 only
include/Makefile.am:
  Changed header to GPL version 2 only
include/base64.h:
  Changed header to GPL version 2 only
include/config-netware.h:
  Changed header to GPL version 2 only
include/config-os2.h:
  Changed header to GPL version 2 only
include/config-win.h:
  Changed header to GPL version 2 only
include/decimal.h:
  Changed header to GPL version 2 only
include/errmsg.h:
  Changed header to GPL version 2 only
include/ft_global.h:
  Changed header to GPL version 2 only
include/hash.h:
  Changed header to GPL version 2 only
include/heap.h:
  Changed header to GPL version 2 only
include/keycache.h:
  Changed header to GPL version 2 only
include/m_ctype.h:
  Changed header to GPL version 2 only
include/m_string.h:
  Changed header to GPL version 2 only
include/md5.h:
  Changed header to GPL version 2 only
include/my_aes.h:
  Changed header to GPL version 2 only
include/my_alarm.h:
  Changed header to GPL version 2 only
include/my_alloc.h:
  Changed header to GPL version 2 only
include/my_base.h:
  Changed header to GPL version 2 only
include/my_bitmap.h:
  Changed header to GPL version 2 only
include/my_dbug.h:
  Changed header to GPL version 2 only
include/my_dir.h:
  Changed header to GPL version 2 only
include/my_getopt.h:
  Changed header to GPL version 2 only
include/my_global.h:
  Changed header to GPL version 2 only
include/my_handler.h:
  Changed header to GPL version 2 only
include/my_libwrap.h:
  Changed header to GPL version 2 only
include/my_list.h:
  Changed header to GPL version 2 only
include/my_net.h:
  Changed header to GPL version 2 only
include/my_no_pthread.h:
  Changed header to GPL version 2 only
include/my_nosys.h:
  Changed header to GPL version 2 only
include/my_pthread.h:
  Changed header to GPL version 2 only
include/my_sys.h:
  Changed header to GPL version 2 only
include/my_time.h:
  Changed header to GPL version 2 only
include/my_tree.h:
  Changed header to GPL version 2 only
include/my_user.h:
  Changed header to GPL version 2 only
include/my_xml.h:
  Changed header to GPL version 2 only
include/myisam.h:
  Changed header to GPL version 2 only
include/myisammrg.h:
  Changed header to GPL version 2 only
include/myisampack.h:
  Changed header to GPL version 2 only
include/mysql.h:
  Changed header to GPL version 2 only
include/mysql_com.h:
  Changed header to GPL version 2 only
include/mysql_embed.h:
  Changed header to GPL version 2 only
include/mysql_time.h:
  Changed header to GPL version 2 only
include/mysys_err.h:
  Changed header to GPL version 2 only
include/queues.h:
  Changed header to GPL version 2 only
include/raid.h:
  Changed header to GPL version 2 only
include/rijndael.h:
  Changed header to GPL version 2 only
include/sha1.h:
  Changed header to GPL version 2 only
include/sql_common.h:
  Changed header to GPL version 2 only
include/sslopt-case.h:
  Changed header to GPL version 2 only
include/sslopt-longopts.h:
  Changed header to GPL version 2 only
include/sslopt-vars.h:
  Changed header to GPL version 2 only
include/t_ctype.h:
  Changed header to GPL version 2 only
include/thr_alarm.h:
  Changed header to GPL version 2 only
include/thr_lock.h:
  Changed header to GPL version 2 only
include/typelib.h:
  Changed header to GPL version 2 only
include/violite.h:
  Changed header to GPL version 2 only
innobase/Makefile.am:
  Changed header to GPL version 2 only
innobase/btr/Makefile.am:
  Changed header to GPL version 2 only
innobase/buf/Makefile.am:
  Changed header to GPL version 2 only
innobase/data/Makefile.am:
  Changed header to GPL version 2 only
innobase/dict/Makefile.am:
  Changed header to GPL version 2 only
innobase/dyn/Makefile.am:
  Changed header to GPL version 2 only
innobase/eval/Makefile.am:
  Changed header to GPL version 2 only
innobase/fil/Makefile.am:
  Changed header to GPL version 2 only
innobase/fsp/Makefile.am:
  Changed header to GPL version 2 only
innobase/fut/Makefile.am:
  Changed header to GPL version 2 only
innobase/ha/Makefile.am:
  Changed header to GPL version 2 only
innobase/ibuf/Makefile.am:
  Changed header to GPL version 2 only
innobase/include/Makefile.am:
  Changed header to GPL version 2 only
innobase/lock/Makefile.am:
  Changed header to GPL version 2 only
innobase/log/Makefile.am:
  Changed header to GPL version 2 only
innobase/mach/Makefile.am:
  Changed header to GPL version 2 only
innobase/mem/Makefile.am:
  Changed header to GPL version 2 only
innobase/mtr/Makefile.am:
  Changed header to GPL version 2 only
innobase/os/Makefile.am:
  Changed header to GPL version 2 only
innobase/page/Makefile.am:
  Changed header to GPL version 2 only
innobase/pars/Makefile.am:
  Changed header to GPL version 2 only
innobase/que/Makefile.am:
  Changed header to GPL version 2 only
innobase/read/Makefile.am:
  Changed header to GPL version 2 only
innobase/rem/Makefile.am:
  Changed header to GPL version 2 only
innobase/row/Makefile.am:
  Changed header to GPL version 2 only
innobase/srv/Makefile.am:
  Changed header to GPL version 2 only
innobase/sync/Makefile.am:
  Changed header to GPL version 2 only
innobase/thr/Makefile.am:
  Changed header to GPL version 2 only
innobase/trx/Makefile.am:
  Changed header to GPL version 2 only
innobase/usr/Makefile.am:
  Changed header to GPL version 2 only
innobase/ut/Makefile.am:
  Changed header to GPL version 2 only
libmysql/client_settings.h:
  Changed header to GPL version 2 only
libmysqld/Makefile.am:
  Changed header to GPL version 2 only
libmysqld/emb_qcache.cc:
  Changed header to GPL version 2 only
libmysqld/emb_qcache.h:
  Changed header to GPL version 2 only
libmysqld/embedded_priv.h:
  Changed header to GPL version 2 only
libmysqld/examples/Makefile.am:
  Changed header to GPL version 2 only
libmysqld/libmysqld.c:
  Changed header to GPL version 2 only
man/Makefile.am:
  Changed header to GPL version 2 only
myisam/Makefile.am:
  Changed header to GPL version 2 only
myisam/ft_boolean_search.c:
  Changed header to GPL version 2 only
myisam/ft_eval.c:
  Changed header to GPL version 2 only
myisam/ft_eval.h:
  Changed header to GPL version 2 only
myisam/ft_nlq_search.c:
  Changed header to GPL version 2 only
myisam/ft_parser.c:
  Changed header to GPL version 2 only
myisam/ft_static.c:
  Changed header to GPL version 2 only
myisam/ft_stem.c:
  Changed header to GPL version 2 only
myisam/ft_stopwords.c:
  Changed header to GPL version 2 only
myisam/ft_test1.c:
  Changed header to GPL version 2 only
myisam/ft_test1.h:
  Changed header to GPL version 2 only
myisam/ft_update.c:
  Changed header to GPL version 2 only
myisam/ftdefs.h:
  Changed header to GPL version 2 only
myisam/fulltext.h:
  Changed header to GPL version 2 only
myisam/mi_cache.c:
  Changed header to GPL version 2 only
myisam/mi_changed.c:
  Changed header to GPL version 2 only
myisam/mi_check.c:
  Changed header to GPL version 2 only
myisam/mi_checksum.c:
  Changed header to GPL version 2 only
myisam/mi_close.c:
  Changed header to GPL version 2 only
myisam/mi_create.c:
  Changed header to GPL version 2 only
myisam/mi_dbug.c:
  Changed header to GPL version 2 only
myisam/mi_delete.c:
  Changed header to GPL version 2 only
myisam/mi_delete_all.c:
  Changed header to GPL version 2 only
myisam/mi_delete_table.c:
  Changed header to GPL version 2 only
myisam/mi_dynrec.c:
  Changed header to GPL version 2 only
myisam/mi_extra.c:
  Changed header to GPL version 2 only
myisam/mi_info.c:
  Changed header to GPL version 2 only
myisam/mi_key.c:
  Changed header to GPL version 2 only
myisam/mi_keycache.c:
  Changed header to GPL version 2 only
myisam/mi_locking.c:
  Changed header to GPL version 2 only
myisam/mi_log.c:
  Changed header to GPL version 2 only
myisam/mi_open.c:
  Changed header to GPL version 2 only
myisam/mi_packrec.c:
  Changed header to GPL version 2 only
myisam/mi_page.c:
  Changed header to GPL version 2 only
myisam/mi_panic.c:
  Changed header to GPL version 2 only
myisam/mi_preload.c:
  Changed header to GPL version 2 only
myisam/mi_range.c:
  Changed header to GPL version 2 only
myisam/mi_rename.c:
  Changed header to GPL version 2 only
myisam/mi_rfirst.c:
  Changed header to GPL version 2 only
myisam/mi_rkey.c:
  Changed header to GPL version 2 only
myisam/mi_rlast.c:
  Changed header to GPL version 2 only
myisam/mi_rnext.c:
  Changed header to GPL version 2 only
myisam/mi_rnext_same.c:
  Changed header to GPL version 2 only
myisam/mi_rprev.c:
  Changed header to GPL version 2 only
myisam/mi_rrnd.c:
  Changed header to GPL version 2 only
myisam/mi_rsame.c:
  Changed header to GPL version 2 only
myisam/mi_rsamepos.c:
  Changed header to GPL version 2 only
myisam/mi_scan.c:
  Changed header to GPL version 2 only
myisam/mi_search.c:
  Changed header to GPL version 2 only
myisam/mi_static.c:
  Changed header to GPL version 2 only
myisam/mi_statrec.c:
  Changed header to GPL version 2 only
myisam/mi_test1.c:
  Changed header to GPL version 2 only
myisam/mi_test2.c:
  Changed header to GPL version 2 only
myisam/mi_test3.c:
  Changed header to GPL version 2 only
myisam/mi_unique.c:
  Changed header to GPL version 2 only
myisam/mi_update.c:
  Changed header to GPL version 2 only
myisam/mi_write.c:
  Changed header to GPL version 2 only
myisam/myisam_ftdump.c:
  Changed header to GPL version 2 only
myisam/myisamchk.c:
  Changed header to GPL version 2 only
myisam/myisamdef.h:
  Changed header to GPL version 2 only
myisam/myisamlog.c:
  Changed header to GPL version 2 only
myisam/myisampack.c:
  Changed header to GPL version 2 only
myisam/rt_index.c:
  Changed header to GPL version 2 only
myisam/rt_index.h:
  Changed header to GPL version 2 only
myisam/rt_key.c:
  Changed header to GPL version 2 only
myisam/rt_key.h:
  Changed header to GPL version 2 only
myisam/rt_mbr.c:
  Changed header to GPL version 2 only
myisam/rt_mbr.h:
  Changed header to GPL version 2 only
myisam/rt_split.c:
  Changed header to GPL version 2 only
myisam/rt_test.c:
  Changed header to GPL version 2 only
myisam/sort.c:
  Changed header to GPL version 2 only
myisam/sp_defs.h:
  Changed header to GPL version 2 only
myisam/sp_key.c:
  Changed header to GPL version 2 only
myisam/sp_test.c:
  Changed header to GPL version 2 only
myisammrg/Makefile.am:
  Changed header to GPL version 2 only
myisammrg/myrg_close.c:
  Changed header to GPL version 2 only
myisammrg/myrg_create.c:
  Changed header to GPL version 2 only
myisammrg/myrg_def.h:
  Changed header to GPL version 2 only
myisammrg/myrg_delete.c:
  Changed header to GPL version 2 only
myisammrg/myrg_extra.c:
  Changed header to GPL version 2 only
myisammrg/myrg_info.c:
  Changed header to GPL version 2 only
myisammrg/myrg_locking.c:
  Changed header to GPL version 2 only
myisammrg/myrg_open.c:
  Changed header to GPL version 2 only
myisammrg/myrg_panic.c:
  Changed header to GPL version 2 only
myisammrg/myrg_queue.c:
  Changed header to GPL version 2 only
myisammrg/myrg_range.c:
  Changed header to GPL version 2 only
myisammrg/myrg_rfirst.c:
  Changed header to GPL version 2 only
myisammrg/myrg_rkey.c:
  Changed header to GPL version 2 only
myisammrg/myrg_rlast.c:
  Changed header to GPL version 2 only
myisammrg/myrg_rnext.c:
  Changed header to GPL version 2 only
myisammrg/myrg_rnext_same.c:
  Changed header to GPL version 2 only
myisammrg/myrg_rprev.c:
  Changed header to GPL version 2 only
myisammrg/myrg_rrnd.c:
  Changed header to GPL version 2 only
myisammrg/myrg_rsame.c:
  Changed header to GPL version 2 only
myisammrg/myrg_static.c:
  Changed header to GPL version 2 only
myisammrg/myrg_update.c:
  Changed header to GPL version 2 only
myisammrg/myrg_write.c:
  Changed header to GPL version 2 only
mysql-test/Makefile.am:
  Changed header to GPL version 2 only
mysys/Makefile.am:
  Changed header to GPL version 2 only
mysys/array.c:
  Changed header to GPL version 2 only
mysys/base64.c:
  Changed header to GPL version 2 only
mysys/charset-def.c:
  Changed header to GPL version 2 only
mysys/charset.c:
  Changed header to GPL version 2 only
mysys/checksum.c:
  Changed header to GPL version 2 only
mysys/default.c:
  Changed header to GPL version 2 only
mysys/default_modify.c:
  Changed header to GPL version 2 only
mysys/errors.c:
  Changed header to GPL version 2 only
mysys/hash.c:
  Changed header to GPL version 2 only
mysys/list.c:
  Changed header to GPL version 2 only
mysys/make-conf.c:
  Changed header to GPL version 2 only
mysys/md5.c:
  Changed header to GPL version 2 only
mysys/mf_brkhant.c:
  Changed header to GPL version 2 only
mysys/mf_cache.c:
  Changed header to GPL version 2 only
mysys/mf_dirname.c:
  Changed header to GPL version 2 only
mysys/mf_fn_ext.c:
  Changed header to GPL version 2 only
mysys/mf_format.c:
  Changed header to GPL version 2 only
mysys/mf_getdate.c:
  Changed header to GPL version 2 only
mysys/mf_iocache.c:
  Changed header to GPL version 2 only
mysys/mf_iocache2.c:
  Changed header to GPL version 2 only
mysys/mf_keycache.c:
  Changed header to GPL version 2 only
mysys/mf_keycaches.c:
  Changed header to GPL version 2 only
mysys/mf_loadpath.c:
  Changed header to GPL version 2 only
mysys/mf_pack.c:
  Changed header to GPL version 2 only
mysys/mf_path.c:
  Changed header to GPL version 2 only
mysys/mf_qsort.c:
  Changed header to GPL version 2 only
mysys/mf_qsort2.c:
  Changed header to GPL version 2 only
mysys/mf_radix.c:
  Changed header to GPL version 2 only
mysys/mf_same.c:
  Changed header to GPL version 2 only
mysys/mf_sort.c:
  Changed header to GPL version 2 only
mysys/mf_soundex.c:
  Changed header to GPL version 2 only
mysys/mf_strip.c:
  Changed header to GPL version 2 only
mysys/mf_tempdir.c:
  Changed header to GPL version 2 only
mysys/mf_tempfile.c:
  Changed header to GPL version 2 only
mysys/mf_unixpath.c:
  Changed header to GPL version 2 only
mysys/mf_util.c:
  Changed header to GPL version 2 only
mysys/mf_wcomp.c:
  Changed header to GPL version 2 only
mysys/mf_wfile.c:
  Changed header to GPL version 2 only
mysys/mulalloc.c:
  Changed header to GPL version 2 only
mysys/my_access.c:
  Changed header to GPL version 2 only
mysys/my_aes.c:
  Changed header to GPL version 2 only
mysys/my_alarm.c:
  Changed header to GPL version 2 only
mysys/my_alloc.c:
  Changed header to GPL version 2 only
mysys/my_append.c:
  Changed header to GPL version 2 only
mysys/my_bit.c:
  Changed header to GPL version 2 only
mysys/my_bitmap.c:
  Changed header to GPL version 2 only
mysys/my_chsize.c:
  Changed header to GPL version 2 only
mysys/my_clock.c:
  Changed header to GPL version 2 only
mysys/my_compress.c:
  Changed header to GPL version 2 only
mysys/my_conio.c:
  Changed header to GPL version 2 only
mysys/my_copy.c:
  Changed header to GPL version 2 only
mysys/my_crc32.c:
  Changed header to GPL version 2 only
mysys/my_create.c:
  Changed header to GPL version 2 only
mysys/my_delete.c:
  Changed header to GPL version 2 only
mysys/my_div.c:
  Changed header to GPL version 2 only
mysys/my_dup.c:
  Changed header to GPL version 2 only
mysys/my_error.c:
  Changed header to GPL version 2 only
mysys/my_file.c:
  Changed header to GPL version 2 only
mysys/my_fopen.c:
  Changed header to GPL version 2 only
mysys/my_fstream.c:
  Changed header to GPL version 2 only
mysys/my_gethostbyname.c:
  Changed header to GPL version 2 only
mysys/my_gethwaddr.c:
  Changed header to GPL version 2 only
mysys/my_getopt.c:
  Changed header to GPL version 2 only
mysys/my_getpagesize.c:
  Changed header to GPL version 2 only
mysys/my_getsystime.c:
  Changed header to GPL version 2 only
mysys/my_getwd.c:
  Changed header to GPL version 2 only
mysys/my_handler.c:
  Changed header to GPL version 2 only
mysys/my_init.c:
  Changed header to GPL version 2 only
mysys/my_largepage.c:
  Changed header to GPL version 2 only
mysys/my_lib.c:
  Changed header to GPL version 2 only
mysys/my_libwrap.c:
  Changed header to GPL version 2 only
mysys/my_lock.c:
  Changed header to GPL version 2 only
mysys/my_lockmem.c:
  Changed header to GPL version 2 only
mysys/my_lread.c:
  Changed header to GPL version 2 only
mysys/my_lwrite.c:
  Changed header to GPL version 2 only
mysys/my_malloc.c:
  Changed header to GPL version 2 only
mysys/my_messnc.c:
  Changed header to GPL version 2 only
mysys/my_mkdir.c:
  Changed header to GPL version 2 only
mysys/my_mmap.c:
  Changed header to GPL version 2 only
mysys/my_net.c:
  Changed header to GPL version 2 only
mysys/my_netware.c:
  Changed header to GPL version 2 only
mysys/my_new.cc:
  Changed header to GPL version 2 only
mysys/my_once.c:
  Changed header to GPL version 2 only
mysys/my_open.c:
  Changed header to GPL version 2 only
mysys/my_os2cond.c:
  Changed header to GPL version 2 only
mysys/my_os2dirsrch.c:
  Changed header to GPL version 2 only
mysys/my_os2dirsrch.h:
  Changed header to GPL version 2 only
mysys/my_os2dlfcn.c:
  Changed header to GPL version 2 only
mysys/my_os2dlfcn.h0:
  Changed header to GPL version 2 only
mysys/my_os2file64.c:
  Changed header to GPL version 2 only
mysys/my_os2thread.c:
  Changed header to GPL version 2 only
mysys/my_os2tls.c:
  Changed header to GPL version 2 only
mysys/my_port.c:
  Changed header to GPL version 2 only
mysys/my_pread.c:
  Changed header to GPL version 2 only
mysys/my_pthread.c:
  Changed header to GPL version 2 only
mysys/my_quick.c:
  Changed header to GPL version 2 only
mysys/my_read.c:
  Changed header to GPL version 2 only
mysys/my_realloc.c:
  Changed header to GPL version 2 only
mysys/my_redel.c:
  Changed header to GPL version 2 only
mysys/my_rename.c:
  Changed header to GPL version 2 only
mysys/my_seek.c:
  Changed header to GPL version 2 only
mysys/my_semaphore.c:
  Changed header to GPL version 2 only
mysys/my_sleep.c:
  Changed header to GPL version 2 only
mysys/my_static.c:
  Changed header to GPL version 2 only
mysys/my_static.h:
  Changed header to GPL version 2 only
mysys/my_symlink.c:
  Changed header to GPL version 2 only
mysys/my_symlink2.c:
  Changed header to GPL version 2 only
mysys/my_sync.c:
  Changed header to GPL version 2 only
mysys/my_thr_init.c:
  Changed header to GPL version 2 only
mysys/my_wincond.c:
  Changed header to GPL version 2 only
mysys/my_windac.c:
  Changed header to GPL version 2 only
mysys/my_winthread.c:
  Changed header to GPL version 2 only
mysys/my_write.c:
  Changed header to GPL version 2 only
mysys/mysys_priv.h:
  Changed header to GPL version 2 only
mysys/ptr_cmp.c:
  Changed header to GPL version 2 only
mysys/queues.c:
  Changed header to GPL version 2 only
mysys/raid.cc:
  Changed header to GPL version 2 only
mysys/raid2.c:
  Changed header to GPL version 2 only
mysys/rijndael.c:
  Changed header to GPL version 2 only
mysys/safemalloc.c:
  Changed header to GPL version 2 only
mysys/sha1.c:
  Changed header to GPL version 2 only
mysys/string.c:
  Changed header to GPL version 2 only
mysys/test_charset.c:
  Changed header to GPL version 2 only
mysys/test_dir.c:
  Changed header to GPL version 2 only
mysys/test_fn.c:
  Changed header to GPL version 2 only
mysys/test_xml.c:
  Changed header to GPL version 2 only
mysys/testhash.c:
  Changed header to GPL version 2 only
mysys/thr_alarm.c:
  Changed header to GPL version 2 only
mysys/thr_lock.c:
  Changed header to GPL version 2 only
mysys/thr_mutex.c:
  Changed header to GPL version 2 only
mysys/thr_rwlock.c:
  Changed header to GPL version 2 only
mysys/tree.c:
  Changed header to GPL version 2 only
mysys/typelib.c:
  Changed header to GPL version 2 only
ndb/include/debugger/DebuggerNames.hpp:
  Changed header to GPL version 2 only
ndb/include/debugger/EventLogger.hpp:
  Changed header to GPL version 2 only
ndb/include/debugger/GrepError.hpp:
  Changed header to GPL version 2 only
ndb/include/debugger/SignalLoggerManager.hpp:
  Changed header to GPL version 2 only
ndb/include/editline/editline.h:
  Changed header to GPL version 2 only
ndb/include/kernel/AttributeDescriptor.hpp:
  Changed header to GPL version 2 only
ndb/include/kernel/AttributeHeader.hpp:
  Changed header to GPL version 2 only
ndb/include/kernel/AttributeList.hpp:
  Changed header to GPL version 2 only
ndb/include/kernel/BlockNumbers.h:
  Changed header to GPL version 2 only
ndb/include/kernel/GlobalSignalNumbers.h:
  Changed header to GPL version 2 only
ndb/include/kernel/GrepEvent.hpp:
  Changed header to GPL version 2 only
ndb/include/kernel/Interpreter.hpp:
  Changed header to GPL version 2 only
ndb/include/kernel/LogLevel.hpp:
  Changed header to GPL version 2 only
ndb/include/kernel/NodeBitmask.hpp:
  Changed header to GPL version 2 only
ndb/include/kernel/NodeInfo.hpp:
  Changed header to GPL version 2 only
ndb/include/kernel/NodeState.hpp:
  Changed header to GPL version 2 only
ndb/include/kernel/RefConvert.hpp:
  Changed header to GPL version 2 only
ndb/include/kernel/kernel_types.h:
  Changed header to GPL version 2 only
ndb/include/kernel/ndb_limits.h:
  Changed header to GPL version 2 only
ndb/include/kernel/signaldata/AbortAll.hpp:
  Changed header to GPL version 2 only
ndb/include/kernel/signaldata/AccFrag.hpp:
  Changed header to GPL version 2 only
ndb/include/kernel/signaldata/AccLock.hpp:
  Changed header to GPL version 2 only
ndb/include/kernel/signaldata/AccScan.hpp:
  Changed header to GPL version 2 only
ndb/include/kernel/signaldata/AccSizeAltReq.hpp:
  Changed header to GPL version 2 only
ndb/include/kernel/signaldata/AlterIndx.hpp:
  Changed header to GPL version 2 only
ndb/include/kernel/signaldata/AlterTab.hpp:
  Changed header to GPL version 2 only
ndb/include/kernel/signaldata/AlterTable.hpp:
  Changed header to GPL version 2 only
ndb/include/kernel/signaldata/AlterTrig.hpp:
  Changed header to GPL version 2 only
ndb/include/kernel/signaldata/ApiBroadcast.hpp:
  Changed header to GPL version 2 only
ndb/include/kernel/signaldata/ApiRegSignalData.hpp:
  Changed header to GPL version 2 only
ndb/include/kernel/signaldata/ApiVersion.hpp:
  Changed header to GPL version 2 only
ndb/include/kernel/signaldata/ArbitSignalData.hpp:
  Changed header to GPL version 2 only
ndb/include/kernel/trigger_definitions.h:
  Changed header to GPL version 2 only
ndb/include/ndb_constants.h:
  Changed header to GPL version 2 only
ndb/include/ndb_global.h.in:
  Changed header to GPL version 2 only
ndb/include/ndb_init.h:
  Changed header to GPL version 2 only
ndb/include/ndb_types.h.in:
  Changed header to GPL version 2 only
ndb/include/ndb_version.h.in:
  Changed header to GPL version 2 only
ndb/include/kernel/signaldata/AttrInfo.hpp:
  Changed header to GPL version 2 only
ndb/include/kernel/signaldata/BackupContinueB.hpp:
  Changed header to GPL version 2 only
ndb/include/kernel/signaldata/BackupImpl.hpp:
  Changed header to GPL version 2 only
ndb/include/kernel/signaldata/BackupSignalData.hpp:
  Changed header to GPL version 2 only
ndb/include/kernel/signaldata/BlockCommitOrd.hpp:
  Changed header to GPL version 2 only
ndb/include/kernel/signaldata/BuildIndx.hpp:
  Changed header to GPL version 2 only
ndb/include/kernel/signaldata/CheckNodeGroups.hpp:
  Changed header to GPL version 2 only
ndb/include/kernel/signaldata/CloseComReqConf.hpp:
  Changed header to GPL version 2 only
ndb/include/kernel/signaldata/CmInit.hpp:
  Changed header to GPL version 2 only
ndb/include/kernel/signaldata/CmRegSignalData.hpp:
  Changed header to GPL version 2 only
ndb/include/kernel/signaldata/CmvmiCfgConf.hpp:
  Changed header to GPL version 2 only
ndb/include/kernel/signaldata/CntrMasterConf.hpp:
  Changed header to GPL version 2 only
ndb/include/kernel/signaldata/CntrMasterReq.hpp:
  Changed header to GPL version 2 only
ndb/include/kernel/signaldata/ConfigParamId.hpp:
  Changed header to GPL version 2 only
ndb/include/kernel/signaldata/ContinueFragmented.hpp:
  Changed header to GPL version 2 only
ndb/include/kernel/signaldata/CopyActive.hpp:
  Changed header to GPL version 2 only
ndb/include/kernel/signaldata/CopyFrag.hpp:
  Changed header to GPL version 2 only
ndb/include/kernel/signaldata/CopyGCIReq.hpp:
  Changed header to GPL version 2 only
ndb/include/kernel/signaldata/CreateEvnt.hpp:
  Changed header to GPL version 2 only
ndb/include/kernel/signaldata/CreateFrag.hpp:
  Changed header to GPL version 2 only
ndb/include/kernel/signaldata/CreateFragmentation.hpp:
  Changed header to GPL version 2 only
ndb/include/kernel/signaldata/CreateIndx.hpp:
  Changed header to GPL version 2 only
ndb/include/kernel/signaldata/CreateTab.hpp:
  Changed header to GPL version 2 only
ndb/include/kernel/signaldata/CreateTable.hpp:
  Changed header to GPL version 2 only
ndb/include/kernel/signaldata/CreateTrig.hpp:
  Changed header to GPL version 2 only
ndb/include/kernel/signaldata/DiAddTab.hpp:
  Changed header to GPL version 2 only
ndb/include/kernel/signaldata/DiGetNodes.hpp:
  Changed header to GPL version 2 only
ndb/include/kernel/signaldata/DictLock.hpp:
  Changed header to GPL version 2 only
ndb/include/kernel/signaldata/DictSchemaInfo.hpp:
  Changed header to GPL version 2 only
ndb/include/kernel/signaldata/DictSizeAltReq.hpp:
  Changed header to GPL version 2 only
ndb/include/kernel/signaldata/DictStart.hpp:
  Changed header to GPL version 2 only
ndb/include/kernel/signaldata/DictTabInfo.hpp:
  Changed header to GPL version 2 only
ndb/include/kernel/signaldata/DihAddFrag.hpp:
  Changed header to GPL version 2 only
ndb/include/kernel/signaldata/DihContinueB.hpp:
  Changed header to GPL version 2 only
ndb/include/kernel/signaldata/DihSizeAltReq.hpp:
  Changed header to GPL version 2 only
ndb/include/kernel/signaldata/DihStartTab.hpp:
  Changed header to GPL version 2 only
ndb/include/kernel/signaldata/DihSwitchReplica.hpp:
  Changed header to GPL version 2 only
ndb/include/kernel/signaldata/DisconnectRep.hpp:
  Changed header to GPL version 2 only
ndb/include/kernel/signaldata/DropIndx.hpp:
  Changed header to GPL version 2 only
ndb/include/kernel/signaldata/DropTab.hpp:
  Changed header to GPL version 2 only
ndb/include/kernel/signaldata/DropTabFile.hpp:
  Changed header to GPL version 2 only
ndb/include/kernel/signaldata/DropTable.hpp:
  Changed header to GPL version 2 only
ndb/include/kernel/signaldata/DropTrig.hpp:
  Changed header to GPL version 2 only
ndb/include/kernel/signaldata/DumpStateOrd.hpp:
  Changed header to GPL version 2 only
ndb/include/kernel/signaldata/EmptyLcp.hpp:
  Changed header to GPL version 2 only
ndb/include/kernel/signaldata/EndTo.hpp:
  Changed header to GPL version 2 only
ndb/include/kernel/signaldata/EventReport.hpp:
  Changed header to GPL version 2 only
ndb/include/kernel/signaldata/EventSubscribeReq.hpp:
  Changed header to GPL version 2 only
ndb/include/kernel/signaldata/ExecFragReq.hpp:
  Changed header to GPL version 2 only
ndb/include/kernel/signaldata/FailRep.hpp:
  Changed header to GPL version 2 only
ndb/include/kernel/signaldata/FireTrigOrd.hpp:
  Changed header to GPL version 2 only
ndb/include/kernel/signaldata/FsAppendReq.hpp:
  Changed header to GPL version 2 only
ndb/include/kernel/signaldata/FsCloseReq.hpp:
  Changed header to GPL version 2 only
ndb/include/kernel/signaldata/FsConf.hpp:
  Changed header to GPL version 2 only
ndb/include/kernel/signaldata/FsOpenReq.hpp:
  Changed header to GPL version 2 only
ndb/include/kernel/signaldata/FsReadWriteReq.hpp:
  Changed header to GPL version 2 only
ndb/include/kernel/signaldata/FsRef.hpp:
  Changed header to GPL version 2 only
ndb/include/kernel/signaldata/FsRemoveReq.hpp:
  Changed header to GPL version 2 only
ndb/include/kernel/signaldata/GCPSave.hpp:
  Changed header to GPL version 2 only
ndb/include/kernel/signaldata/GetTabInfo.hpp:
  Changed header to GPL version 2 only
ndb/include/kernel/signaldata/GetTableId.hpp:
  Changed header to GPL version 2 only
ndb/include/kernel/signaldata/GrepImpl.hpp:
  Changed header to GPL version 2 only
ndb/include/kernel/signaldata/HotSpareRep.hpp:
  Changed header to GPL version 2 only
ndb/include/kernel/signaldata/IndxAttrInfo.hpp:
  Changed header to GPL version 2 only
ndb/include/kernel/signaldata/IndxKeyInfo.hpp:
  Changed header to GPL version 2 only
ndb/include/kernel/signaldata/InvalidateNodeLCPConf.hpp:
  Changed header to GPL version 2 only
ndb/include/kernel/signaldata/InvalidateNodeLCPReq.hpp:
  Changed header to GPL version 2 only
ndb/include/kernel/signaldata/KeyInfo.hpp:
  Changed header to GPL version 2 only
ndb/include/kernel/signaldata/LCP.hpp:
  Changed header to GPL version 2 only
ndb/include/kernel/signaldata/ListTables.hpp:
  Changed header to GPL version 2 only
ndb/include/kernel/signaldata/LqhFrag.hpp:
  Changed header to GPL version 2 only
ndb/include/kernel/signaldata/LqhKey.hpp:
  Changed header to GPL version 2 only
ndb/include/kernel/signaldata/LqhSizeAltReq.hpp:
  Changed header to GPL version 2 only
ndb/include/kernel/signaldata/LqhTransConf.hpp:
  Changed header to GPL version 2 only
ndb/include/kernel/signaldata/ManagementServer.hpp:
  Changed header to GPL version 2 only
ndb/include/kernel/signaldata/MasterGCP.hpp:
  Changed header to GPL version 2 only
ndb/include/kernel/signaldata/MasterLCP.hpp:
  Changed header to GPL version 2 only
ndb/include/kernel/signaldata/NFCompleteRep.hpp:
  Changed header to GPL version 2 only
ndb/include/kernel/signaldata/NdbSttor.hpp:
  Changed header to GPL version 2 only
ndb/include/kernel/signaldata/NdbfsContinueB.hpp:
  Changed header to GPL version 2 only
ndb/include/kernel/signaldata/NextScan.hpp:
  Changed header to GPL version 2 only
ndb/include/kernel/signaldata/NodeFailRep.hpp:
  Changed header to GPL version 2 only
ndb/include/kernel/signaldata/NodeStateSignalData.hpp:
  Changed header to GPL version 2 only
ndb/include/kernel/signaldata/PackedSignal.hpp:
  Changed header to GPL version 2 only
ndb/include/kernel/signaldata/PrepDropTab.hpp:
  Changed header to GPL version 2 only
ndb/include/kernel/signaldata/PrepFailReqRef.hpp:
  Changed header to GPL version 2 only
ndb/include/kernel/signaldata/ReadNodesConf.hpp:
  Changed header to GPL version 2 only
ndb/include/kernel/signaldata/RelTabMem.hpp:
  Changed header to GPL version 2 only
ndb/include/kernel/signaldata/RepImpl.hpp:
  Changed header to GPL version 2 only
ndb/include/kernel/signaldata/ResumeReq.hpp:
  Changed header to GPL version 2 only
ndb/include/kernel/signaldata/ScanFrag.hpp:
  Changed header to GPL version 2 only
ndb/include/kernel/signaldata/ScanTab.hpp:
  Changed header to GPL version 2 only
ndb/include/kernel/signaldata/SetLogLevelOrd.hpp:
  Changed header to GPL version 2 only
ndb/include/kernel/signaldata/SetVarReq.hpp:
  Changed header to GPL version 2 only
ndb/include/kernel/signaldata/SignalData.hpp:
  Changed header to GPL version 2 only
ndb/include/kernel/signaldata/SignalDataPrint.hpp:
  Changed header to GPL version 2 only
ndb/include/kernel/signaldata/SignalDroppedRep.hpp:
  Changed header to GPL version 2 only
ndb/include/kernel/signaldata/SrFragidConf.hpp:
  Changed header to GPL version 2 only
ndb/include/kernel/signaldata/StartFragReq.hpp:
  Changed header to GPL version 2 only
ndb/include/kernel/signaldata/StartInfo.hpp:
  Changed header to GPL version 2 only
ndb/include/kernel/signaldata/StartMe.hpp:
  Changed header to GPL version 2 only
ndb/include/kernel/signaldata/StartOrd.hpp:
  Changed header to GPL version 2 only
ndb/include/kernel/signaldata/StartPerm.hpp:
  Changed header to GPL version 2 only
ndb/include/kernel/signaldata/StartRec.hpp:
  Changed header to GPL version 2 only
ndb/include/kernel/signaldata/StartTo.hpp:
  Changed header to GPL version 2 only
ndb/include/kernel/signaldata/StopMe.hpp:
  Changed header to GPL version 2 only
ndb/include/kernel/signaldata/StopPerm.hpp:
  Changed header to GPL version 2 only
ndb/include/kernel/signaldata/StopReq.hpp:
  Changed header to GPL version 2 only
ndb/include/kernel/signaldata/SumaImpl.hpp:
  Changed header to GPL version 2 only
ndb/include/kernel/signaldata/SystemError.hpp:
  Changed header to GPL version 2 only
ndb/include/kernel/signaldata/TamperOrd.hpp:
  Changed header to GPL version 2 only
ndb/include/kernel/signaldata/TcCommit.hpp:
  Changed header to GPL version 2 only
ndb/include/kernel/signaldata/TcContinueB.hpp:
  Changed header to GPL version 2 only
ndb/include/kernel/signaldata/TcHbRep.hpp:
  Changed header to GPL version 2 only
ndb/include/kernel/signaldata/TcIndx.hpp:
  Changed header to GPL version 2 only
ndb/include/kernel/signaldata/TcKeyConf.hpp:
  Changed header to GPL version 2 only
ndb/include/kernel/signaldata/TcKeyFailConf.hpp:
  Changed header to GPL version 2 only
ndb/include/kernel/signaldata/TcKeyRef.hpp:
  Changed header to GPL version 2 only
ndb/include/kernel/signaldata/TcKeyReq.hpp:
  Changed header to GPL version 2 only
ndb/include/kernel/signaldata/TcRollbackRep.hpp:
  Changed header to GPL version 2 only
ndb/include/kernel/signaldata/TcSizeAltReq.hpp:
  Changed header to GPL version 2 only
ndb/include/kernel/signaldata/TestOrd.hpp:
  Changed header to GPL version 2 only
ndb/include/kernel/signaldata/TransIdAI.hpp:
  Changed header to GPL version 2 only
ndb/include/kernel/signaldata/TrigAttrInfo.hpp:
  Changed header to GPL version 2 only
ndb/include/kernel/signaldata/TupCommit.hpp:
  Changed header to GPL version 2 only
ndb/include/kernel/signaldata/TupFrag.hpp:
  Changed header to GPL version 2 only
ndb/include/kernel/signaldata/TupKey.hpp:
  Changed header to GPL version 2 only
ndb/include/kernel/signaldata/TupSizeAltReq.hpp:
  Changed header to GPL version 2 only
ndb/include/kernel/signaldata/TuxBound.hpp:
  Changed header to GPL version 2 only
ndb/include/kernel/signaldata/TuxContinueB.hpp:
  Changed header to GPL version 2 only
ndb/include/kernel/signaldata/TuxMaint.hpp:
  Changed header to GPL version 2 only
ndb/include/kernel/signaldata/TuxSizeAltReq.hpp:
  Changed header to GPL version 2 only
ndb/include/kernel/signaldata/UpdateTo.hpp:
  Changed header to GPL version 2 only
ndb/include/kernel/signaldata/UtilDelete.hpp:
  Changed header to GPL version 2 only
ndb/include/kernel/signaldata/UtilExecute.hpp:
  Changed header to GPL version 2 only
ndb/include/kernel/signaldata/UtilLock.hpp:
  Changed header to GPL version 2 only
ndb/include/kernel/signaldata/UtilPrepare.hpp:
  Changed header to GPL version 2 only
ndb/include/kernel/signaldata/UtilRelease.hpp:
  Changed header to GPL version 2 only
ndb/include/kernel/signaldata/UtilSequence.hpp:
  Changed header to GPL version 2 only
ndb/include/kernel/signaldata/WaitGCP.hpp:
  Changed header to GPL version 2 only
ndb/include/logger/ConsoleLogHandler.hpp:
  Changed header to GPL version 2 only
ndb/include/logger/FileLogHandler.hpp:
  Changed header to GPL version 2 only
ndb/include/logger/LogHandler.hpp:
  Changed header to GPL version 2 only
ndb/include/logger/Logger.hpp:
  Changed header to GPL version 2 only
ndb/include/logger/SysLogHandler.hpp:
  Changed header to GPL version 2 only
ndb/include/mgmapi/mgmapi.h:
  Changed header to GPL version 2 only
ndb/include/mgmapi/mgmapi_debug.h:
  Changed header to GPL version 2 only
ndb/include/mgmapi/ndb_logevent.h:
  Changed header to GPL version 2 only
ndb/include/mgmapi/ndbd_exit_codes.h:
  Changed header to GPL version 2 only
ndb/include/mgmcommon/ConfigRetriever.hpp:
  Changed header to GPL version 2 only
ndb/include/mgmcommon/IPCConfig.hpp:
  Changed header to GPL version 2 only
ndb/include/mgmcommon/MgmtErrorReporter.hpp:
  Changed header to GPL version 2 only
ndb/include/ndbapi/Ndb.hpp:
  Changed header to GPL version 2 only
ndb/include/ndbapi/NdbApi.hpp:
  Changed header to GPL version 2 only
ndb/include/ndbapi/NdbBlob.hpp:
  Changed header to GPL version 2 only
ndb/include/ndbapi/NdbDictionary.hpp:
  Changed header to GPL version 2 only
ndb/include/ndbapi/NdbError.hpp:
  Changed header to GPL version 2 only
ndb/include/ndbapi/NdbEventOperation.hpp:
  Changed header to GPL version 2 only
ndb/include/ndbapi/NdbIndexOperation.hpp:
  Changed header to GPL version 2 only
ndb/include/ndbapi/NdbIndexScanOperation.hpp:
  Changed header to GPL version 2 only
ndb/include/ndbapi/NdbOperation.hpp:
  Changed header to GPL version 2 only
ndb/include/ndbapi/NdbPool.hpp:
  Changed header to GPL version 2 only
ndb/include/ndbapi/NdbRecAttr.hpp:
  Changed header to GPL version 2 only
ndb/include/ndbapi/NdbReceiver.hpp:
  Changed header to GPL version 2 only
ndb/include/ndbapi/NdbScanFilter.hpp:
  Changed header to GPL version 2 only
ndb/include/ndbapi/NdbScanOperation.hpp:
  Changed header to GPL version 2 only
ndb/include/ndbapi/NdbTransaction.hpp:
  Changed header to GPL version 2 only
ndb/include/ndbapi/ndb_cluster_connection.hpp:
  Changed header to GPL version 2 only
ndb/include/ndbapi/ndb_opt_defaults.h:
  Changed header to GPL version 2 only
ndb/include/ndbapi/ndbapi_limits.h:
  Changed header to GPL version 2 only
ndb/include/ndbapi/ndberror.h:
  Changed header to GPL version 2 only
ndb/include/newtonapi/dba.h:
  Changed header to GPL version 2 only
ndb/include/newtonapi/defs/pcn_types.h:
  Changed header to GPL version 2 only
ndb/include/portlib/NdbCondition.h:
  Changed header to GPL version 2 only
ndb/include/portlib/NdbConfig.h:
  Changed header to GPL version 2 only
ndb/include/portlib/NdbDaemon.h:
  Changed header to GPL version 2 only
ndb/include/portlib/NdbEnv.h:
  Changed header to GPL version 2 only
ndb/include/portlib/NdbHost.h:
  Changed header to GPL version 2 only
ndb/include/portlib/NdbMain.h:
  Changed header to GPL version 2 only
ndb/include/portlib/NdbMem.h:
  Changed header to GPL version 2 only
ndb/include/portlib/NdbMutex.h:
  Changed header to GPL version 2 only
ndb/include/portlib/NdbSleep.h:
  Changed header to GPL version 2 only
ndb/include/portlib/NdbTCP.h:
  Changed header to GPL version 2 only
ndb/include/portlib/NdbThread.h:
  Changed header to GPL version 2 only
ndb/include/portlib/NdbTick.h:
  Changed header to GPL version 2 only
ndb/include/portlib/PortDefs.h:
  Changed header to GPL version 2 only
ndb/include/portlib/prefetch.h:
  Changed header to GPL version 2 only
ndb/include/transporter/TransporterCallback.hpp:
  Changed header to GPL version 2 only
ndb/include/transporter/TransporterDefinitions.hpp:
  Changed header to GPL version 2 only
ndb/include/transporter/TransporterRegistry.hpp:
  Changed header to GPL version 2 only
ndb/include/util/BaseString.hpp:
  Changed header to GPL version 2 only
ndb/include/util/Bitmask.hpp:
  Changed header to GPL version 2 only
ndb/include/util/File.hpp:
  Changed header to GPL version 2 only
ndb/include/util/InputStream.hpp:
  Changed header to GPL version 2 only
ndb/include/util/NdbAutoPtr.hpp:
  Changed header to GPL version 2 only
ndb/include/util/NdbOut.hpp:
  Changed header to GPL version 2 only
ndb/include/util/NdbSqlUtil.hpp:
  Changed header to GPL version 2 only
ndb/include/util/OutputStream.hpp:
  Changed header to GPL version 2 only
ndb/include/util/Parser.hpp:
  Changed header to GPL version 2 only
ndb/include/util/Properties.hpp:
  Changed header to GPL version 2 only
ndb/include/util/SimpleProperties.hpp:
  Changed header to GPL version 2 only
ndb/include/util/SocketAuthenticator.hpp:
  Changed header to GPL version 2 only
ndb/include/util/SocketClient.hpp:
  Changed header to GPL version 2 only
ndb/include/util/SocketServer.hpp:
  Changed header to GPL version 2 only
ndb/include/util/UtilBuffer.hpp:
  Changed header to GPL version 2 only
ndb/include/util/Vector.hpp:
  Changed header to GPL version 2 only
ndb/include/util/basestring_vsnprintf.h:
  Changed header to GPL version 2 only
ndb/include/util/md5_hash.hpp:
  Changed header to GPL version 2 only
ndb/include/util/ndb_opts.h:
  Changed header to GPL version 2 only
ndb/include/util/random.h:
  Changed header to GPL version 2 only
ndb/include/util/socket_io.h:
  Changed header to GPL version 2 only
ndb/include/util/uucode.h:
  Changed header to GPL version 2 only
ndb/include/util/version.h:
  Changed header to GPL version 2 only
ndb/ndbapi-examples/mgmapi_logevent_example/mgmapi_logevent.cpp:
  Changed header to GPL version 2 only
ndb/ndbapi-examples/ndbapi_async_example/ndbapi_async.cpp:
  Changed header to GPL version 2 only
ndb/ndbapi-examples/ndbapi_async_example1/ndbapi_async1.cpp:
  Changed header to GPL version 2 only
ndb/ndbapi-examples/ndbapi_event_example/ndbapi_event.cpp:
  Changed header to GPL version 2 only
ndb/ndbapi-examples/ndbapi_retries_example/ndbapi_retries.cpp:
  Changed header to GPL version 2 only
ndb/ndbapi-examples/ndbapi_scan_example/ndbapi_scan.cpp:
  Changed header to GPL version 2 only
ndb/ndbapi-examples/ndbapi_simple_example/ndbapi_simple.cpp:
  Changed header to GPL version 2 only
ndb/ndbapi-examples/ndbapi_simple_index_example/ndbapi_simple_index.cpp:
  Changed header to GPL version 2 only
ndb/src/common/debugger/BlockNames.cpp:
  Changed header to GPL version 2 only
ndb/src/common/debugger/DebuggerNames.cpp:
  Changed header to GPL version 2 only
ndb/src/common/debugger/EventLogger.cpp:
  Changed header to GPL version 2 only
ndb/src/common/debugger/GrepError.cpp:
  Changed header to GPL version 2 only
ndb/src/common/debugger/SignalLoggerManager.cpp:
  Changed header to GPL version 2 only
ndb/src/common/debugger/signaldata/AccLock.cpp:
  Changed header to GPL version 2 only
ndb/src/common/debugger/signaldata/AlterIndx.cpp:
  Changed header to GPL version 2 only
ndb/src/common/debugger/signaldata/AlterTab.cpp:
  Changed header to GPL version 2 only
ndb/src/common/debugger/signaldata/AlterTable.cpp:
  Changed header to GPL version 2 only
ndb/src/common/debugger/signaldata/AlterTrig.cpp:
  Changed header to GPL version 2 only
ndb/src/common/debugger/signaldata/BackupImpl.cpp:
  Changed header to GPL version 2 only
ndb/src/common/debugger/signaldata/BackupSignalData.cpp:
  Changed header to GPL version 2 only
ndb/src/common/debugger/signaldata/CloseComReqConf.cpp:
  Changed header to GPL version 2 only
ndb/src/common/debugger/signaldata/ContinueB.cpp:
  Changed header to GPL version 2 only
ndb/src/common/debugger/signaldata/CopyGCI.cpp:
  Changed header to GPL version 2 only
ndb/src/common/debugger/signaldata/CreateEvnt.cpp:
  Changed header to GPL version 2 only
ndb/src/common/debugger/signaldata/CreateFragmentation.cpp:
  Changed header to GPL version 2 only
ndb/src/common/debugger/signaldata/CreateIndx.cpp:
  Changed header to GPL version 2 only
ndb/src/common/debugger/signaldata/CreateTrig.cpp:
  Changed header to GPL version 2 only
ndb/src/common/debugger/signaldata/DictTabInfo.cpp:
  Changed header to GPL version 2 only
ndb/src/common/debugger/signaldata/DihContinueB.cpp:
  Changed header to GPL version 2 only
ndb/src/common/debugger/signaldata/DihSwitchReplicaReq.cpp:
  Changed header to GPL version 2 only
ndb/src/common/debugger/signaldata/DisconnectRep.cpp:
  Changed header to GPL version 2 only
ndb/src/common/debugger/signaldata/DropIndx.cpp:
  Changed header to GPL version 2 only
ndb/src/common/debugger/signaldata/DropTab.cpp:
  Changed header to GPL version 2 only
ndb/src/common/debugger/signaldata/DropTrig.cpp:
  Changed header to GPL version 2 only
ndb/src/common/debugger/signaldata/FailRep.cpp:
  Changed header to GPL version 2 only
ndb/src/common/debugger/signaldata/FireTrigOrd.cpp:
  Changed header to GPL version 2 only
ndb/src/common/debugger/signaldata/FsAppendReq.cpp:
  Changed header to GPL version 2 only
ndb/src/common/debugger/signaldata/FsCloseReq.cpp:
  Changed header to GPL version 2 only
ndb/src/common/debugger/signaldata/FsConf.cpp:
  Changed header to GPL version 2 only
ndb/src/common/debugger/signaldata/FsOpenReq.cpp:
  Changed header to GPL version 2 only
ndb/src/common/debugger/signaldata/FsReadWriteReq.cpp:
  Changed header to GPL version 2 only
ndb/src/common/debugger/signaldata/FsRef.cpp:
  Changed header to GPL version 2 only
ndb/src/common/debugger/signaldata/GCPSave.cpp:
  Changed header to GPL version 2 only
ndb/src/common/debugger/signaldata/IndxAttrInfo.cpp:
  Changed header to GPL version 2 only
ndb/src/common/debugger/signaldata/IndxKeyInfo.cpp:
  Changed header to GPL version 2 only
ndb/src/common/debugger/signaldata/LCP.cpp:
  Changed header to GPL version 2 only
ndb/src/common/debugger/signaldata/LqhFrag.cpp:
  Changed header to GPL version 2 only
ndb/src/common/debugger/signaldata/LqhKey.cpp:
  Changed header to GPL version 2 only
ndb/src/common/debugger/signaldata/LqhTrans.cpp:
  Changed header to GPL version 2 only
ndb/src/common/debugger/signaldata/MasterLCP.cpp:
  Changed header to GPL version 2 only
ndb/src/common/debugger/signaldata/NFCompleteRep.cpp:
  Changed header to GPL version 2 only
ndb/src/common/debugger/signaldata/NdbSttor.cpp:
  Changed header to GPL version 2 only
ndb/src/common/debugger/signaldata/NdbfsContinueB.cpp:
  Changed header to GPL version 2 only
ndb/src/common/debugger/signaldata/PackedSignal.cpp:
  Changed header to GPL version 2 only
ndb/src/common/debugger/signaldata/PrepDropTab.cpp:
  Changed header to GPL version 2 only
ndb/src/common/debugger/signaldata/PrepFailReqRef.cpp:
  Changed header to GPL version 2 only
ndb/src/common/debugger/signaldata/ScanFrag.cpp:
  Changed header to GPL version 2 only
ndb/src/common/debugger/signaldata/ScanTab.cpp:
  Changed header to GPL version 2 only
ndb/src/common/debugger/signaldata/SignalDataPrint.cpp:
  Changed header to GPL version 2 only
ndb/src/common/debugger/signaldata/SignalDroppedRep.cpp:
  Changed header to GPL version 2 only
ndb/src/common/debugger/signaldata/SignalNames.cpp:
  Changed header to GPL version 2 only
ndb/src/common/debugger/signaldata/StartRec.cpp:
  Changed header to GPL version 2 only
ndb/src/common/debugger/signaldata/SumaImpl.cpp:
  Changed header to GPL version 2 only
ndb/src/common/debugger/signaldata/SystemError.cpp:
  Changed header to GPL version 2 only
ndb/src/common/debugger/signaldata/TcIndx.cpp:
  Changed header to GPL version 2 only
ndb/src/common/debugger/signaldata/TcKeyConf.cpp:
  Changed header to GPL version 2 only
ndb/src/common/debugger/signaldata/TcKeyRef.cpp:
  Changed header to GPL version 2 only
ndb/src/common/debugger/signaldata/TcKeyReq.cpp:
  Changed header to GPL version 2 only
ndb/src/common/debugger/signaldata/TcRollbackRep.cpp:
  Changed header to GPL version 2 only
ndb/src/common/debugger/signaldata/TrigAttrInfo.cpp:
  Changed header to GPL version 2 only
ndb/src/common/debugger/signaldata/TupCommit.cpp:
  Changed header to GPL version 2 only
ndb/src/common/debugger/signaldata/TupKey.cpp:
  Changed header to GPL version 2 only
ndb/src/common/debugger/signaldata/TuxMaint.cpp:
  Changed header to GPL version 2 only
ndb/src/common/debugger/signaldata/UtilDelete.cpp:
  Changed header to GPL version 2 only
ndb/src/common/debugger/signaldata/UtilExecute.cpp:
  Changed header to GPL version 2 only
ndb/src/common/debugger/signaldata/UtilLock.cpp:
  Changed header to GPL version 2 only
ndb/src/common/debugger/signaldata/UtilPrepare.cpp:
  Changed header to GPL version 2 only
ndb/src/common/debugger/signaldata/UtilSequence.cpp:
  Changed header to GPL version 2 only
ndb/src/common/logger/ConsoleLogHandler.cpp:
  Changed header to GPL version 2 only
ndb/src/common/logger/FileLogHandler.cpp:
  Changed header to GPL version 2 only
ndb/src/common/logger/LogHandler.cpp:
  Changed header to GPL version 2 only
ndb/src/common/logger/LogHandlerList.cpp:
  Changed header to GPL version 2 only
ndb/src/common/logger/LogHandlerList.hpp:
  Changed header to GPL version 2 only
ndb/src/common/logger/Logger.cpp:
  Changed header to GPL version 2 only
ndb/src/common/logger/SysLogHandler.cpp:
  Changed header to GPL version 2 only
ndb/src/common/logger/listtest/LogHandlerListUnitTest.cpp:
  Changed header to GPL version 2 only
ndb/src/common/logger/listtest/LogHandlerListUnitTest.hpp:
  Changed header to GPL version 2 only
ndb/src/common/logger/loggertest/LoggerUnitTest.cpp:
  Changed header to GPL version 2 only
ndb/src/common/logger/loggertest/LoggerUnitTest.hpp:
  Changed header to GPL version 2 only
ndb/src/common/mgmcommon/ConfigRetriever.cpp:
  Changed header to GPL version 2 only
ndb/src/common/mgmcommon/IPCConfig.cpp:
  Changed header to GPL version 2 only
ndb/src/common/mgmcommon/printConfig/printConfig.cpp:
  Changed header to GPL version 2 only
ndb/src/common/portlib/NdbCondition.c:
  Changed header to GPL version 2 only
ndb/src/common/portlib/NdbConfig.c:
  Changed header to GPL version 2 only
ndb/src/common/portlib/NdbDaemon.c:
  Changed header to GPL version 2 only
ndb/src/common/portlib/NdbEnv.c:
  Changed header to GPL version 2 only
ndb/src/common/portlib/NdbHost.c:
  Changed header to GPL version 2 only
ndb/src/common/portlib/NdbMem.c:
  Changed header to GPL version 2 only
ndb/src/common/portlib/NdbMutex.c:
  Changed header to GPL version 2 only
ndb/src/common/portlib/NdbPortLibTest.cpp:
  Changed header to GPL version 2 only
ndb/src/common/portlib/NdbSleep.c:
  Changed header to GPL version 2 only
ndb/src/common/portlib/NdbTCP.cpp:
  Changed header to GPL version 2 only
ndb/src/common/portlib/NdbThread.c:
  Changed header to GPL version 2 only
ndb/src/common/portlib/NdbTick.c:
  Changed header to GPL version 2 only
ndb/src/common/portlib/memtest.c:
  Changed header to GPL version 2 only
ndb/src/common/portlib/mmslist.cpp:
  Changed header to GPL version 2 only
ndb/src/common/portlib/mmstest.cpp:
  Changed header to GPL version 2 only
ndb/src/common/portlib/munmaptest.cpp:
  Changed header to GPL version 2 only
ndb/src/common/portlib/old_dirs/ose/NdbCondition.c:
  Changed header to GPL version 2 only
ndb/src/common/portlib/old_dirs/ose/NdbConditionOSE.h:
  Changed header to GPL version 2 only
ndb/src/common/portlib/old_dirs/ose/NdbEnv.c:
  Changed header to GPL version 2 only
ndb/src/common/portlib/old_dirs/ose/NdbHost.c:
  Changed header to GPL version 2 only
ndb/src/common/portlib/old_dirs/ose/NdbMem.c:
  Changed header to GPL version 2 only
ndb/src/common/portlib/old_dirs/ose/NdbMem_SoftOse.cpp:
  Changed header to GPL version 2 only
ndb/src/common/portlib/old_dirs/ose/NdbMutex.c:
  Changed header to GPL version 2 only
ndb/src/common/portlib/old_dirs/ose/NdbOut.cpp:
  Changed header to GPL version 2 only
ndb/src/common/portlib/old_dirs/ose/NdbSleep.c:
  Changed header to GPL version 2 only
ndb/src/common/portlib/old_dirs/ose/NdbTCP.c:
  Changed header to GPL version 2 only
ndb/src/common/portlib/old_dirs/ose/NdbThread.c:
  Changed header to GPL version 2 only
ndb/src/common/portlib/old_dirs/ose/NdbTick.c:
  Changed header to GPL version 2 only
ndb/src/common/portlib/old_dirs/win32/NdbCondition.c:
  Changed header to GPL version 2 only
ndb/src/common/portlib/old_dirs/win32/NdbDaemon.c:
  Changed header to GPL version 2 only
ndb/src/common/portlib/old_dirs/win32/NdbEnv.c:
  Changed header to GPL version 2 only
ndb/src/common/portlib/old_dirs/win32/NdbHost.c:
  Changed header to GPL version 2 only
ndb/src/common/portlib/old_dirs/win32/NdbMem.c:
  Changed header to GPL version 2 only
ndb/src/common/portlib/old_dirs/win32/NdbMutex.c:
  Changed header to GPL version 2 only
ndb/src/common/portlib/old_dirs/win32/NdbSleep.c:
  Changed header to GPL version 2 only
ndb/src/common/portlib/old_dirs/win32/NdbTCP.c:
  Changed header to GPL version 2 only
ndb/src/common/portlib/old_dirs/win32/NdbThread.c:
  Changed header to GPL version 2 only
ndb/src/common/portlib/old_dirs/win32/NdbTick.c:
  Changed header to GPL version 2 only
ndb/src/common/portlib/win32/NdbCondition.c:
  Changed header to GPL version 2 only
ndb/src/common/portlib/win32/NdbDaemon.c:
  Changed header to GPL version 2 only
ndb/src/common/portlib/win32/NdbEnv.c:
  Changed header to GPL version 2 only
ndb/src/common/portlib/win32/NdbHost.c:
  Changed header to GPL version 2 only
ndb/src/common/portlib/win32/NdbMem.c:
  Changed header to GPL version 2 only
ndb/src/common/portlib/win32/NdbMutex.c:
  Changed header to GPL version 2 only
ndb/src/common/portlib/win32/NdbSleep.c:
  Changed header to GPL version 2 only
ndb/src/common/portlib/win32/NdbTCP.c:
  Changed header to GPL version 2 only
ndb/src/common/portlib/win32/NdbThread.c:
  Changed header to GPL version 2 only
ndb/src/common/portlib/win32/NdbTick.c:
  Changed header to GPL version 2 only
ndb/src/common/transporter/OSE_Receiver.cpp:
  Changed header to GPL version 2 only
ndb/src/common/transporter/OSE_Receiver.hpp:
  Changed header to GPL version 2 only
ndb/src/common/transporter/OSE_Signals.hpp:
  Changed header to GPL version 2 only
ndb/src/common/transporter/OSE_Transporter.cpp:
  Changed header to GPL version 2 only
ndb/src/common/transporter/OSE_Transporter.hpp:
  Changed header to GPL version 2 only
ndb/src/common/transporter/Packer.cpp:
  Changed header to GPL version 2 only
ndb/src/common/transporter/Packer.hpp:
  Changed header to GPL version 2 only
ndb/src/common/transporter/SCI_Transporter.cpp:
  Changed header to GPL version 2 only
ndb/src/common/transporter/SCI_Transporter.hpp:
  Changed header to GPL version 2 only
ndb/src/common/transporter/SHM_Buffer.hpp:
  Changed header to GPL version 2 only
ndb/src/common/transporter/SHM_Transporter.cpp:
  Changed header to GPL version 2 only
ndb/src/common/transporter/SHM_Transporter.hpp:
  Changed header to GPL version 2 only
ndb/src/common/transporter/SHM_Transporter.unix.cpp:
  Changed header to GPL version 2 only
ndb/src/common/transporter/SHM_Transporter.win32.cpp:
  Changed header to GPL version 2 only
ndb/src/common/transporter/SendBuffer.cpp:
  Changed header to GPL version 2 only
ndb/src/common/transporter/SendBuffer.hpp:
  Changed header to GPL version 2 only
ndb/src/common/transporter/TCP_Transporter.cpp:
  Changed header to GPL version 2 only
ndb/src/common/transporter/TCP_Transporter.hpp:
  Changed header to GPL version 2 only
ndb/src/common/transporter/Transporter.cpp:
  Changed header to GPL version 2 only
ndb/src/common/transporter/Transporter.hpp:
  Changed header to GPL version 2 only
ndb/src/common/transporter/TransporterInternalDefinitions.hpp:
  Changed header to GPL version 2 only
ndb/src/common/transporter/TransporterRegistry.cpp:
  Changed header to GPL version 2 only
ndb/src/common/transporter/basictest/basicTransporterTest.cpp:
  Changed header to GPL version 2 only
ndb/src/common/transporter/buddy.cpp:
  Changed header to GPL version 2 only
ndb/src/common/transporter/buddy.hpp:
  Changed header to GPL version 2 only
ndb/src/common/transporter/failoverSCI/failoverSCI.cpp:
  Changed header to GPL version 2 only
ndb/src/common/transporter/perftest/perfTransporterTest.cpp:
  Changed header to GPL version 2 only
ndb/src/common/transporter/priotest/prioSCI/prioSCI.cpp:
  Changed header to GPL version 2 only
ndb/src/common/transporter/priotest/prioSHM/prioSHM.cpp:
  Changed header to GPL version 2 only
ndb/src/common/transporter/priotest/prioTCP/prioTCP.cpp:
  Changed header to GPL version 2 only
ndb/src/common/transporter/priotest/prioTransporterTest.cpp:
  Changed header to GPL version 2 only
ndb/src/common/transporter/priotest/prioTransporterTest.hpp:
  Changed header to GPL version 2 only
ndb/src/common/util/BaseString.cpp:
  Changed header to GPL version 2 only
ndb/src/common/util/File.cpp:
  Changed header to GPL version 2 only
ndb/src/common/util/InputStream.cpp:
  Changed header to GPL version 2 only
ndb/src/common/util/NdbErrHnd.cpp:
  Changed header to GPL version 2 only
ndb/src/common/util/NdbOut.cpp:
  Changed header to GPL version 2 only
ndb/src/common/util/NdbSqlUtil.cpp:
  Changed header to GPL version 2 only
ndb/src/common/util/OutputStream.cpp:
  Changed header to GPL version 2 only
ndb/src/common/util/Parser.cpp:
  Changed header to GPL version 2 only
ndb/src/common/util/Properties.cpp:
  Changed header to GPL version 2 only
ndb/src/common/util/SimpleProperties.cpp:
  Changed header to GPL version 2 only
ndb/src/common/util/SocketAuthenticator.cpp:
  Changed header to GPL version 2 only
ndb/src/common/util/SocketClient.cpp:
  Changed header to GPL version 2 only
ndb/src/common/util/SocketServer.cpp:
  Changed header to GPL version 2 only
ndb/src/common/util/basestring_vsnprintf.c:
  Changed header to GPL version 2 only
ndb/src/common/util/filetest/FileUnitTest.cpp:
  Changed header to GPL version 2 only
ndb/src/common/util/filetest/FileUnitTest.hpp:
  Changed header to GPL version 2 only
ndb/src/common/util/md5_hash.cpp:
  Changed header to GPL version 2 only
ndb/src/common/util/ndb_init.c:
  Changed header to GPL version 2 only
ndb/src/common/util/random.c:
  Changed header to GPL version 2 only
ndb/src/common/util/socket_io.cpp:
  Changed header to GPL version 2 only
ndb/src/common/util/strdup.c:
  Changed header to GPL version 2 only
ndb/src/common/util/testProperties/testProperties.cpp:
  Changed header to GPL version 2 only
ndb/src/common/util/testSimpleProperties/sp_test.cpp:
  Changed header to GPL version 2 only
ndb/src/common/util/uucode.c:
  Changed header to GPL version 2 only
ndb/src/common/util/version.c:
  Changed header to GPL version 2 only
ndb/src/cw/cpcc-win32/C++/CPC_GUI.cpp:
  Changed header to GPL version 2 only
ndb/src/cw/cpcc-win32/C++/CPC_GUI.h:
  Changed header to GPL version 2 only
ndb/src/cw/cpcc-win32/C++/NdbControls.cpp:
  Changed header to GPL version 2 only
ndb/src/cw/cpcc-win32/C++/StdAfx.cpp:
  Changed header to GPL version 2 only
ndb/src/cw/cpcc-win32/C++/StdAfx.h:
  Changed header to GPL version 2 only
ndb/src/cw/cpcc-win32/C++/TreeView.cpp:
  Changed header to GPL version 2 only
ndb/src/cw/cpcc-win32/C++/TreeView.h:
  Changed header to GPL version 2 only
ndb/src/cw/cpcc-win32/C++/resource.h:
  Changed header to GPL version 2 only
ndb/src/cw/cpcd/APIService.cpp:
  Changed header to GPL version 2 only
ndb/src/cw/cpcd/APIService.hpp:
  Changed header to GPL version 2 only
ndb/src/cw/cpcd/CPCD.cpp:
  Changed header to GPL version 2 only
ndb/src/cw/cpcd/CPCD.hpp:
  Changed header to GPL version 2 only
ndb/src/cw/cpcd/Monitor.cpp:
  Changed header to GPL version 2 only
ndb/src/cw/cpcd/Process.cpp:
  Changed header to GPL version 2 only
ndb/src/cw/cpcd/common.cpp:
  Changed header to GPL version 2 only
ndb/src/cw/cpcd/common.hpp:
  Changed header to GPL version 2 only
ndb/src/cw/cpcd/main.cpp:
  Changed header to GPL version 2 only
ndb/src/cw/test/socketclient/socketClientTest.cpp:
  Changed header to GPL version 2 only
ndb/src/cw/util/ClientInterface.cpp:
  Changed header to GPL version 2 only
ndb/src/cw/util/ClientInterface.hpp:
  Changed header to GPL version 2 only
ndb/src/cw/util/SocketRegistry.cpp:
  Changed header to GPL version 2 only
ndb/src/cw/util/SocketRegistry.hpp:
  Changed header to GPL version 2 only
ndb/src/cw/util/SocketService.cpp:
  Changed header to GPL version 2 only
ndb/src/cw/util/SocketService.hpp:
  Changed header to GPL version 2 only
ndb/src/kernel/SimBlockList.cpp:
  Changed header to GPL version 2 only
ndb/src/kernel/blocks/backup/Backup.cpp:
  Changed header to GPL version 2 only
ndb/src/kernel/blocks/backup/Backup.hpp:
  Changed header to GPL version 2 only
ndb/src/kernel/blocks/backup/BackupFormat.hpp:
  Changed header to GPL version 2 only
ndb/src/kernel/blocks/backup/BackupInit.cpp:
  Changed header to GPL version 2 only
ndb/src/kernel/blocks/backup/FsBuffer.hpp:
  Changed header to GPL version 2 only
ndb/src/kernel/blocks/backup/read.cpp:
  Changed header to GPL version 2 only
ndb/src/kernel/blocks/cmvmi/Cmvmi.cpp:
  Changed header to GPL version 2 only
ndb/src/kernel/blocks/cmvmi/Cmvmi.hpp:
  Changed header to GPL version 2 only
ndb/src/kernel/blocks/dbacc/Dbacc.hpp:
  Changed header to GPL version 2 only
ndb/src/kernel/blocks/dbacc/DbaccInit.cpp:
  Changed header to GPL version 2 only
ndb/src/kernel/blocks/dbacc/DbaccMain.cpp:
  Changed header to GPL version 2 only
ndb/src/kernel/blocks/mutexes.hpp:
  Changed header to GPL version 2 only
ndb/src/kernel/main.cpp:
  Changed header to GPL version 2 only
ndb/src/kernel/blocks/dbdict/Dbdict.cpp:
  Changed header to GPL version 2 only
ndb/src/kernel/blocks/dbdict/Dbdict.hpp:
  Changed header to GPL version 2 only
ndb/src/kernel/blocks/dbdict/SchemaFile.hpp:
  Changed header to GPL version 2 only
ndb/src/kernel/blocks/dbdict/printSchemaFile.cpp:
  Changed header to GPL version 2 only
ndb/src/kernel/blocks/dbdih/Dbdih.hpp:
  Changed header to GPL version 2 only
ndb/src/kernel/blocks/dbdih/DbdihInit.cpp:
  Changed header to GPL version 2 only
ndb/src/kernel/blocks/dbdih/DbdihMain.cpp:
  Changed header to GPL version 2 only
ndb/src/kernel/blocks/dbdih/Sysfile.hpp:
  Changed header to GPL version 2 only
ndb/src/kernel/blocks/dbdih/printSysfile/printSysfile.cpp:
  Changed header to GPL version 2 only
ndb/src/kernel/blocks/dblqh/Dblqh.hpp:
  Changed header to GPL version 2 only
ndb/src/kernel/blocks/dblqh/DblqhInit.cpp:
  Changed header to GPL version 2 only
ndb/src/kernel/blocks/dblqh/DblqhMain.cpp:
  Changed header to GPL version 2 only
ndb/src/kernel/blocks/dblqh/redoLogReader/records.cpp:
  Changed header to GPL version 2 only
ndb/src/kernel/blocks/dblqh/redoLogReader/records.hpp:
  Changed header to GPL version 2 only
ndb/src/kernel/blocks/dblqh/redoLogReader/redoLogFileReader.cpp:
  Changed header to GPL version 2 only
ndb/src/kernel/blocks/dbtc/Dbtc.hpp:
  Changed header to GPL version 2 only
ndb/src/kernel/blocks/dbtc/DbtcInit.cpp:
  Changed header to GPL version 2 only
ndb/src/kernel/blocks/dbtc/DbtcMain.cpp:
  Changed header to GPL version 2 only
ndb/src/kernel/blocks/dbtup/AttributeOffset.hpp:
  Changed header to GPL version 2 only
ndb/src/kernel/blocks/dbtup/Dbtup.hpp:
  Changed header to GPL version 2 only
ndb/src/kernel/blocks/dbtup/DbtupAbort.cpp:
  Changed header to GPL version 2 only
ndb/src/kernel/blocks/dbtup/DbtupBuffer.cpp:
  Changed header to GPL version 2 only
ndb/src/kernel/blocks/dbtup/DbtupCommit.cpp:
  Changed header to GPL version 2 only
ndb/src/kernel/blocks/dbtup/DbtupDebug.cpp:
  Changed header to GPL version 2 only
ndb/src/kernel/blocks/dbtup/DbtupExecQuery.cpp:
  Changed header to GPL version 2 only
ndb/src/kernel/blocks/dbtup/DbtupFixAlloc.cpp:
  Changed header to GPL version 2 only
ndb/src/kernel/blocks/dbtup/DbtupGen.cpp:
  Changed header to GPL version 2 only
ndb/src/kernel/blocks/dbtup/DbtupIndex.cpp:
  Changed header to GPL version 2 only
ndb/src/kernel/blocks/dbtup/DbtupLCP.cpp:
  Changed header to GPL version 2 only
ndb/src/kernel/blocks/dbtup/DbtupMeta.cpp:
  Changed header to GPL version 2 only
ndb/src/kernel/blocks/dbtup/DbtupPagMan.cpp:
  Changed header to GPL version 2 only
ndb/src/kernel/blocks/dbtup/DbtupPageMap.cpp:
  Changed header to GPL version 2 only
ndb/src/kernel/blocks/dbtup/DbtupRoutines.cpp:
  Changed header to GPL version 2 only
ndb/src/kernel/blocks/dbtup/DbtupScan.cpp:
  Changed header to GPL version 2 only
ndb/src/kernel/blocks/dbtup/DbtupStoredProcDef.cpp:
  Changed header to GPL version 2 only
ndb/src/kernel/blocks/dbtup/DbtupSystemRestart.cpp:
  Changed header to GPL version 2 only
ndb/src/kernel/blocks/dbtup/DbtupTabDesMan.cpp:
  Changed header to GPL version 2 only
ndb/src/kernel/blocks/dbtup/DbtupTrigger.cpp:
  Changed header to GPL version 2 only
ndb/src/kernel/blocks/dbtup/DbtupUndoLog.cpp:
  Changed header to GPL version 2 only
ndb/src/kernel/blocks/dbtux/Dbtux.hpp:
  Changed header to GPL version 2 only
ndb/src/kernel/blocks/dbtux/DbtuxCmp.cpp:
  Changed header to GPL version 2 only
ndb/src/kernel/blocks/dbtux/DbtuxDebug.cpp:
  Changed header to GPL version 2 only
ndb/src/kernel/blocks/dbtux/DbtuxGen.cpp:
  Changed header to GPL version 2 only
ndb/src/kernel/blocks/dbtux/DbtuxMaint.cpp:
  Changed header to GPL version 2 only
ndb/src/kernel/blocks/dbtux/DbtuxMeta.cpp:
  Changed header to GPL version 2 only
ndb/src/kernel/blocks/dbtux/DbtuxNode.cpp:
  Changed header to GPL version 2 only
ndb/src/kernel/blocks/dbtux/DbtuxScan.cpp:
  Changed header to GPL version 2 only
ndb/src/kernel/blocks/dbtux/DbtuxSearch.cpp:
  Changed header to GPL version 2 only
ndb/src/kernel/blocks/dbtux/DbtuxTree.cpp:
  Changed header to GPL version 2 only
ndb/src/kernel/blocks/dbutil/DbUtil.cpp:
  Changed header to GPL version 2 only
ndb/src/kernel/blocks/dbutil/DbUtil.hpp:
  Changed header to GPL version 2 only
ndb/src/kernel/blocks/ndbcntr/Ndbcntr.hpp:
  Changed header to GPL version 2 only
ndb/src/kernel/blocks/ndbcntr/NdbcntrInit.cpp:
  Changed header to GPL version 2 only
ndb/src/kernel/blocks/ndbcntr/NdbcntrMain.cpp:
  Changed header to GPL version 2 only
ndb/src/kernel/blocks/ndbcntr/NdbcntrSysTable.cpp:
  Changed header to GPL version 2 only
ndb/src/kernel/blocks/ndbfs/AsyncFile.cpp:
  Changed header to GPL version 2 only
ndb/src/kernel/blocks/ndbfs/AsyncFile.hpp:
  Changed header to GPL version 2 only
ndb/src/kernel/blocks/ndbfs/AsyncFileTest/AsyncFileTest.cpp:
  Changed header to GPL version 2 only
ndb/src/kernel/blocks/ndbfs/CircularIndex.cpp:
  Changed header to GPL version 2 only
ndb/src/kernel/blocks/ndbfs/CircularIndex.hpp:
  Changed header to GPL version 2 only
ndb/src/kernel/blocks/ndbfs/Filename.cpp:
  Changed header to GPL version 2 only
ndb/src/kernel/blocks/ndbfs/Filename.hpp:
  Changed header to GPL version 2 only
ndb/src/kernel/blocks/ndbfs/MemoryChannel.cpp:
  Changed header to GPL version 2 only
ndb/src/kernel/blocks/ndbfs/MemoryChannel.hpp:
  Changed header to GPL version 2 only
ndb/src/kernel/blocks/ndbfs/MemoryChannelOSE.hpp:
  Changed header to GPL version 2 only
ndb/src/kernel/blocks/ndbfs/MemoryChannelTest/MemoryChannelTest.cpp:
  Changed header to GPL version 2 only
ndb/src/kernel/blocks/ndbfs/Ndbfs.cpp:
  Changed header to GPL version 2 only
ndb/src/kernel/blocks/ndbfs/Ndbfs.hpp:
  Changed header to GPL version 2 only
ndb/src/kernel/blocks/ndbfs/OpenFiles.hpp:
  Changed header to GPL version 2 only
ndb/src/kernel/blocks/ndbfs/Pool.hpp:
  Changed header to GPL version 2 only
ndb/src/kernel/blocks/ndbfs/VoidFs.cpp:
  Changed header to GPL version 2 only
ndb/src/kernel/blocks/qmgr/Qmgr.hpp:
  Changed header to GPL version 2 only
ndb/src/kernel/blocks/qmgr/QmgrInit.cpp:
  Changed header to GPL version 2 only
ndb/src/kernel/blocks/qmgr/QmgrMain.cpp:
  Changed header to GPL version 2 only
ndb/src/kernel/blocks/qmgr/timer.hpp:
  Changed header to GPL version 2 only
ndb/src/kernel/blocks/suma/Suma.cpp:
  Changed header to GPL version 2 only
ndb/src/kernel/blocks/suma/Suma.hpp:
  Changed header to GPL version 2 only
ndb/src/kernel/blocks/suma/SumaInit.cpp:
  Changed header to GPL version 2 only
ndb/src/kernel/blocks/trix/Trix.cpp:
  Changed header to GPL version 2 only
ndb/src/kernel/blocks/trix/Trix.hpp:
  Changed header to GPL version 2 only
ndb/src/kernel/error/ErrorHandlingMacros.hpp:
  Changed header to GPL version 2 only
ndb/src/kernel/error/ErrorReporter.cpp:
  Changed header to GPL version 2 only
ndb/src/kernel/error/ErrorReporter.hpp:
  Changed header to GPL version 2 only
ndb/src/kernel/error/TimeModule.cpp:
  Changed header to GPL version 2 only
ndb/src/kernel/error/TimeModule.hpp:
  Changed header to GPL version 2 only
ndb/src/kernel/error/ndbd_exit_codes.c:
  Changed header to GPL version 2 only
ndb/src/kernel/vm/Array.hpp:
  Changed header to GPL version 2 only
ndb/src/kernel/vm/ArrayFifoList.hpp:
  Changed header to GPL version 2 only
ndb/src/kernel/vm/ArrayList.hpp:
  Changed header to GPL version 2 only
ndb/src/kernel/vm/ArrayPool.hpp:
  Changed header to GPL version 2 only
ndb/src/kernel/vm/CArray.hpp:
  Changed header to GPL version 2 only
ndb/src/kernel/vm/Callback.hpp:
  Changed header to GPL version 2 only
ndb/src/kernel/vm/ClusterConfiguration.cpp:
  Changed header to GPL version 2 only
ndb/src/kernel/vm/ClusterConfiguration.hpp:
  Changed header to GPL version 2 only
ndb/src/kernel/vm/Configuration.cpp:
  Changed header to GPL version 2 only
ndb/src/kernel/vm/Configuration.hpp:
  Changed header to GPL version 2 only
ndb/src/kernel/vm/DLFifoList.hpp:
  Changed header to GPL version 2 only
ndb/src/kernel/vm/DLHashTable.hpp:
  Changed header to GPL version 2 only
ndb/src/kernel/vm/DLHashTable2.hpp:
  Changed header to GPL version 2 only
ndb/src/kernel/vm/DLList.hpp:
  Changed header to GPL version 2 only
ndb/src/kernel/vm/DataBuffer.hpp:
  Changed header to GPL version 2 only
ndb/src/kernel/vm/Emulator.cpp:
  Changed header to GPL version 2 only
ndb/src/kernel/vm/Emulator.hpp:
  Changed header to GPL version 2 only
ndb/src/kernel/vm/FastScheduler.cpp:
  Changed header to GPL version 2 only
ndb/src/kernel/vm/FastScheduler.hpp:
  Changed header to GPL version 2 only
ndb/src/kernel/vm/GlobalData.hpp:
  Changed header to GPL version 2 only
ndb/src/kernel/vm/KeyDescriptor.hpp:
  Changed header to GPL version 2 only
ndb/src/kernel/vm/KeyTable.hpp:
  Changed header to GPL version 2 only
ndb/src/kernel/vm/KeyTable2.hpp:
  Changed header to GPL version 2 only
ndb/src/kernel/vm/LongSignal.hpp:
  Changed header to GPL version 2 only
ndb/src/kernel/vm/MetaData.cpp:
  Changed header to GPL version 2 only
ndb/src/kernel/vm/MetaData.hpp:
  Changed header to GPL version 2 only
ndb/src/kernel/vm/Mutex.cpp:
  Changed header to GPL version 2 only
ndb/src/kernel/vm/Mutex.hpp:
  Changed header to GPL version 2 only
ndb/src/kernel/vm/Prio.hpp:
  Changed header to GPL version 2 only
ndb/src/kernel/vm/RequestTracker.hpp:
  Changed header to GPL version 2 only
ndb/src/kernel/vm/SLList.hpp:
  Changed header to GPL version 2 only
ndb/src/kernel/vm/SafeCounter.cpp:
  Changed header to GPL version 2 only
ndb/src/kernel/vm/SafeCounter.hpp:
  Changed header to GPL version 2 only
ndb/src/kernel/vm/SectionReader.cpp:
  Changed header to GPL version 2 only
ndb/src/kernel/vm/SectionReader.hpp:
  Changed header to GPL version 2 only
ndb/src/kernel/vm/SignalCounter.hpp:
  Changed header to GPL version 2 only
ndb/src/kernel/vm/SimBlockList.hpp:
  Changed header to GPL version 2 only
ndb/src/kernel/vm/SimplePropertiesSection.cpp:
  Changed header to GPL version 2 only
ndb/src/kernel/vm/SimulatedBlock.cpp:
  Changed header to GPL version 2 only
ndb/src/kernel/vm/SimulatedBlock.hpp:
  Changed header to GPL version 2 only
ndb/src/kernel/vm/SuperPool.cpp:
  Changed header to GPL version 2 only
ndb/src/kernel/vm/SuperPool.hpp:
  Changed header to GPL version 2 only
ndb/src/kernel/vm/ThreadConfig.cpp:
  Changed header to GPL version 2 only
ndb/src/kernel/vm/ThreadConfig.hpp:
  Changed header to GPL version 2 only
ndb/src/kernel/vm/TimeQueue.cpp:
  Changed header to GPL version 2 only
ndb/src/kernel/vm/TimeQueue.hpp:
  Changed header to GPL version 2 only
ndb/src/kernel/vm/TransporterCallback.cpp:
  Changed header to GPL version 2 only
ndb/src/kernel/vm/VMSignal.cpp:
  Changed header to GPL version 2 only
ndb/src/kernel/vm/VMSignal.hpp:
  Changed header to GPL version 2 only
ndb/src/kernel/vm/WaitQueue.hpp:
  Changed header to GPL version 2 only
ndb/src/kernel/vm/WatchDog.cpp:
  Changed header to GPL version 2 only
ndb/src/kernel/vm/WatchDog.hpp:
  Changed header to GPL version 2 only
ndb/src/kernel/vm/al_test/arrayListTest.cpp:
  Changed header to GPL version 2 only
ndb/src/kernel/vm/al_test/arrayPoolTest.cpp:
  Changed header to GPL version 2 only
ndb/src/kernel/vm/al_test/main.cpp:
  Changed header to GPL version 2 only
ndb/src/kernel/vm/ndbd_malloc.cpp:
  Changed header to GPL version 2 only
ndb/src/kernel/vm/ndbd_malloc.hpp:
  Changed header to GPL version 2 only
ndb/src/kernel/vm/pc.hpp:
  Changed header to GPL version 2 only
ndb/src/kernel/vm/testCopy/rr.cpp:
  Changed header to GPL version 2 only
ndb/src/kernel/vm/testCopy/testCopy.cpp:
  Changed header to GPL version 2 only
ndb/src/kernel/vm/testDataBuffer/testDataBuffer.cpp:
  Changed header to GPL version 2 only
ndb/src/kernel/vm/testLongSig/testLongSig.cpp:
  Changed header to GPL version 2 only
ndb/src/kernel/vm/testSimplePropertiesSection/test.cpp:
  Changed header to GPL version 2 only
ndb/src/kernel/vm/testSuperPool.cpp:
  Changed header to GPL version 2 only
ndb/src/mgmapi/LocalConfig.cpp:
  Changed header to GPL version 2 only
ndb/src/mgmapi/LocalConfig.hpp:
  Changed header to GPL version 2 only
ndb/src/mgmapi/mgmapi.cpp:
  Changed header to GPL version 2 only
ndb/src/mgmapi/mgmapi_configuration.hpp:
  Changed header to GPL version 2 only
ndb/src/mgmapi/mgmapi_internal.h:
  Changed header to GPL version 2 only
ndb/src/mgmapi/ndb_logevent.cpp:
  Changed header to GPL version 2 only
ndb/src/mgmapi/ndb_logevent.hpp:
  Changed header to GPL version 2 only
ndb/src/mgmapi/test/keso.c:
  Changed header to GPL version 2 only
ndb/src/mgmapi/test/mgmSrvApi.cpp:
  Changed header to GPL version 2 only
ndb/src/mgmclient/CommandInterpreter.cpp:
  Changed header to GPL version 2 only
ndb/src/mgmclient/main.cpp:
  Changed header to GPL version 2 only
ndb/src/mgmclient/ndb_mgmclient.hpp:
  Changed header to GPL version 2 only
ndb/src/mgmclient/ndb_mgmclient.h:
  Changed header to GPL version 2 only
ndb/src/mgmclient/test_cpcd/test_cpcd.cpp:
  Changed header to GPL version 2 only
ndb/src/mgmsrv/Config.cpp:
  Changed header to GPL version 2 only
ndb/src/mgmsrv/Config.hpp:
  Changed header to GPL version 2 only
ndb/src/mgmsrv/ConfigInfo.cpp:
  Changed header to GPL version 2 only
ndb/src/mgmsrv/ConfigInfo.hpp:
  Changed header to GPL version 2 only
ndb/src/mgmsrv/InitConfigFileParser.cpp:
  Changed header to GPL version 2 only
ndb/src/mgmsrv/InitConfigFileParser.hpp:
  Changed header to GPL version 2 only
ndb/src/mgmsrv/MgmtSrvr.cpp:
  Changed header to GPL version 2 only
ndb/src/mgmsrv/MgmtSrvr.hpp:
  Changed header to GPL version 2 only
ndb/src/mgmsrv/MgmtSrvrConfig.cpp:
  Changed header to GPL version 2 only
ndb/src/mgmsrv/MgmtSrvrGeneralSignalHandling.cpp:
  Changed header to GPL version 2 only
ndb/src/mgmsrv/Services.cpp:
  Changed header to GPL version 2 only
ndb/src/mgmsrv/Services.hpp:
  Changed header to GPL version 2 only
ndb/src/mgmsrv/SignalQueue.cpp:
  Changed header to GPL version 2 only
ndb/src/mgmsrv/SignalQueue.hpp:
  Changed header to GPL version 2 only
ndb/src/mgmsrv/convertStrToInt.cpp:
  Changed header to GPL version 2 only
ndb/src/mgmsrv/convertStrToInt.hpp:
  Changed header to GPL version 2 only
ndb/src/mgmsrv/main.cpp:
  Changed header to GPL version 2 only
ndb/src/mgmsrv/mkconfig/mkconfig.cpp:
  Changed header to GPL version 2 only
ndb/src/ndbapi/API.hpp:
  Changed header to GPL version 2 only
ndb/src/ndbapi/ClusterMgr.cpp:
  Changed header to GPL version 2 only
ndb/src/ndbapi/ClusterMgr.hpp:
  Changed header to GPL version 2 only
ndb/src/ndbapi/DictCache.cpp:
  Changed header to GPL version 2 only
ndb/src/ndbapi/DictCache.hpp:
  Changed header to GPL version 2 only
ndb/src/ndbapi/Ndb.cpp:
  Changed header to GPL version 2 only
ndb/src/ndbapi/NdbApiSignal.cpp:
  Changed header to GPL version 2 only
ndb/src/ndbapi/NdbApiSignal.hpp:
  Changed header to GPL version 2 only
ndb/src/ndbapi/NdbBlob.cpp:
  Changed header to GPL version 2 only
ndb/src/ndbapi/NdbBlobImpl.hpp:
  Changed header to GPL version 2 only
ndb/src/ndbapi/NdbDictionary.cpp:
  Changed header to GPL version 2 only
ndb/src/ndbapi/NdbDictionaryImpl.cpp:
  Changed header to GPL version 2 only
ndb/src/ndbapi/NdbDictionaryImpl.hpp:
  Changed header to GPL version 2 only
ndb/src/ndbapi/NdbErrorOut.cpp:
  Changed header to GPL version 2 only
ndb/src/ndbapi/NdbEventOperation.cpp:
  Changed header to GPL version 2 only
ndb/src/ndbapi/NdbEventOperationImpl.cpp:
  Changed header to GPL version 2 only
ndb/src/ndbapi/NdbEventOperationImpl.hpp:
  Changed header to GPL version 2 only
ndb/src/ndbapi/NdbImpl.hpp:
  Changed header to GPL version 2 only
ndb/src/ndbapi/NdbIndexOperation.cpp:
  Changed header to GPL version 2 only
ndb/src/ndbapi/NdbLinHash.hpp:
  Changed header to GPL version 2 only
ndb/src/ndbapi/NdbOperation.cpp:
  Changed header to GPL version 2 only
ndb/src/ndbapi/NdbOperationDefine.cpp:
  Changed header to GPL version 2 only
ndb/src/ndbapi/NdbOperationExec.cpp:
  Changed header to GPL version 2 only
ndb/src/ndbapi/NdbOperationInt.cpp:
  Changed header to GPL version 2 only
ndb/src/ndbapi/NdbOperationScan.cpp:
  Changed header to GPL version 2 only
ndb/src/ndbapi/NdbOperationSearch.cpp:
  Changed header to GPL version 2 only
ndb/src/ndbapi/NdbPool.cpp:
  Changed header to GPL version 2 only
ndb/src/ndbapi/NdbPoolImpl.cpp:
  Changed header to GPL version 2 only
ndb/src/ndbapi/NdbPoolImpl.hpp:
  Changed header to GPL version 2 only
ndb/src/ndbapi/NdbRecAttr.cpp:
  Changed header to GPL version 2 only
ndb/src/ndbapi/NdbReceiver.cpp:
  Changed header to GPL version 2 only
ndb/src/ndbapi/NdbScanFilter.cpp:
  Changed header to GPL version 2 only
ndb/src/ndbapi/NdbScanOperation.cpp:
  Changed header to GPL version 2 only
ndb/src/ndbapi/NdbTransaction.cpp:
  Changed header to GPL version 2 only
ndb/src/ndbapi/NdbTransactionScan.cpp:
  Changed header to GPL version 2 only
ndb/src/ndbapi/NdbUtil.cpp:
  Changed header to GPL version 2 only
ndb/src/ndbapi/NdbUtil.hpp:
  Changed header to GPL version 2 only
ndb/src/ndbapi/NdbWaiter.hpp:
  Changed header to GPL version 2 only
ndb/src/ndbapi/Ndberr.cpp:
  Changed header to GPL version 2 only
ndb/src/ndbapi/Ndbif.cpp:
  Changed header to GPL version 2 only
ndb/src/ndbapi/Ndbinit.cpp:
  Changed header to GPL version 2 only
ndb/src/ndbapi/Ndblist.cpp:
  Changed header to GPL version 2 only
ndb/src/ndbapi/ObjectMap.hpp:
  Changed header to GPL version 2 only
ndb/src/ndbapi/SignalSender.cpp:
  Changed header to GPL version 2 only
ndb/src/ndbapi/SignalSender.hpp:
  Changed header to GPL version 2 only
ndb/src/ndbapi/TransporterFacade.cpp:
  Changed header to GPL version 2 only
ndb/src/ndbapi/TransporterFacade.hpp:
  Changed header to GPL version 2 only
ndb/src/ndbapi/ndb_cluster_connection.cpp:
  Changed header to GPL version 2 only
ndb/src/ndbapi/ndb_cluster_connection_impl.hpp:
  Changed header to GPL version 2 only
ndb/src/ndbapi/ndberror.c:
  Changed header to GPL version 2 only
ndb/src/ndbapi/signal-sender/SignalSender.cpp:
  Changed header to GPL version 2 only
ndb/src/ndbapi/signal-sender/SignalSender.hpp:
  Changed header to GPL version 2 only
ndb/test/include/CpcClient.hpp:
  Changed header to GPL version 2 only
ndb/test/include/HugoAsynchTransactions.hpp:
  Changed header to GPL version 2 only
ndb/test/include/HugoCalculator.hpp:
  Changed header to GPL version 2 only
ndb/test/include/HugoOperations.hpp:
  Changed header to GPL version 2 only
ndb/test/include/HugoTransactions.hpp:
  Changed header to GPL version 2 only
ndb/test/include/NDBT.hpp:
  Changed header to GPL version 2 only
ndb/test/include/NDBT_DataSet.hpp:
  Changed header to GPL version 2 only
ndb/test/include/NDBT_DataSetTransaction.hpp:
  Changed header to GPL version 2 only
ndb/test/include/NDBT_Error.hpp:
  Changed header to GPL version 2 only
ndb/test/include/NDBT_Output.hpp:
  Changed header to GPL version 2 only
ndb/test/include/NDBT_ResultRow.hpp:
  Changed header to GPL version 2 only
ndb/test/include/NDBT_ReturnCodes.h:
  Changed header to GPL version 2 only
ndb/test/include/NDBT_Stats.hpp:
  Changed header to GPL version 2 only
ndb/test/include/NDBT_Table.hpp:
  Changed header to GPL version 2 only
ndb/test/include/NDBT_Tables.hpp:
  Changed header to GPL version 2 only
ndb/test/include/NDBT_Test.hpp:
  Changed header to GPL version 2 only
ndb/test/include/NdbBackup.hpp:
  Changed header to GPL version 2 only
ndb/test/include/NdbConfig.hpp:
  Changed header to GPL version 2 only
ndb/test/include/NdbGrep.hpp:
  Changed header to GPL version 2 only
ndb/test/include/NdbRestarter.hpp:
  Changed header to GPL version 2 only
ndb/test/include/NdbRestarts.hpp:
  Changed header to GPL version 2 only
ndb/test/include/NdbSchemaCon.hpp:
  Changed header to GPL version 2 only
ndb/test/include/NdbSchemaOp.hpp:
  Changed header to GPL version 2 only
ndb/test/include/NdbTest.hpp:
  Changed header to GPL version 2 only
ndb/test/include/NdbTimer.hpp:
  Changed header to GPL version 2 only
ndb/test/include/TestNdbEventOperation.hpp:
  Changed header to GPL version 2 only
ndb/test/include/UtilTransactions.hpp:
  Changed header to GPL version 2 only
ndb/test/include/getarg.h:
  Changed header to GPL version 2 only
ndb/test/ndbapi/InsertRecs.cpp:
  Changed header to GPL version 2 only
ndb/test/ndbapi/ScanFilter.hpp:
  Changed header to GPL version 2 only
ndb/test/ndbapi/ScanFunctions.hpp:
  Changed header to GPL version 2 only
ndb/test/ndbapi/ScanInterpretTest.hpp:
  Changed header to GPL version 2 only
ndb/test/ndbapi/TraceNdbApi.cpp:
  Changed header to GPL version 2 only
ndb/test/ndbapi/VerifyNdbApi.cpp:
  Changed header to GPL version 2 only
ndb/test/ndbapi/acid.cpp:
  Changed header to GPL version 2 only
ndb/test/ndbapi/acid2.cpp:
  Changed header to GPL version 2 only
ndb/test/ndbapi/adoInsertRecs.cpp:
  Changed header to GPL version 2 only
ndb/test/ndbapi/asyncGenerator.cpp:
  Changed header to GPL version 2 only
ndb/test/ndbapi/benchronja.cpp:
  Changed header to GPL version 2 only
ndb/test/ndbapi/bulk_copy.cpp:
  Changed header to GPL version 2 only
ndb/test/ndbapi/cdrserver.cpp:
  Changed header to GPL version 2 only
ndb/test/ndbapi/celloDb.cpp:
  Changed header to GPL version 2 only
ndb/test/ndbapi/create_all_tabs.cpp:
  Changed header to GPL version 2 only
ndb/test/ndbapi/create_tab.cpp:
  Changed header to GPL version 2 only
ndb/test/ndbapi/drop_all_tabs.cpp:
  Changed header to GPL version 2 only
ndb/test/ndbapi/flexAsynch.cpp:
  Changed header to GPL version 2 only
ndb/test/ndbapi/flexBench.cpp:
  Changed header to GPL version 2 only
ndb/test/ndbapi/flexHammer.cpp:
  Changed header to GPL version 2 only
ndb/test/ndbapi/flexScan.cpp:
  Changed header to GPL version 2 only
ndb/test/ndbapi/flexTT.cpp:
  Changed header to GPL version 2 only
ndb/test/ndbapi/flexTimedAsynch.cpp:
  Changed header to GPL version 2 only
ndb/test/ndbapi/flex_bench_mysql.cpp:
  Changed header to GPL version 2 only
ndb/test/ndbapi/index.cpp:
  Changed header to GPL version 2 only
ndb/test/ndbapi/index2.cpp:
  Changed header to GPL version 2 only
ndb/test/ndbapi/initronja.cpp:
  Changed header to GPL version 2 only
ndb/test/ndbapi/interpreterInTup.cpp:
  Changed header to GPL version 2 only
ndb/test/ndbapi/mainAsyncGenerator.cpp:
  Changed header to GPL version 2 only
ndb/test/ndbapi/msa.cpp:
  Changed header to GPL version 2 only
ndb/test/ndbapi/ndb_async1.cpp:
  Changed header to GPL version 2 only
ndb/test/ndbapi/ndb_async2.cpp:
  Changed header to GPL version 2 only
ndb/test/ndbapi/ndb_user_populate.cpp:
  Changed header to GPL version 2 only
ndb/test/ndbapi/ndb_user_transaction.cpp:
  Changed header to GPL version 2 only
ndb/test/ndbapi/ndb_user_transaction2.cpp:
  Changed header to GPL version 2 only
ndb/test/ndbapi/ndb_user_transaction3.cpp:
  Changed header to GPL version 2 only
ndb/test/ndbapi/ndb_user_transaction4.cpp:
  Changed header to GPL version 2 only
ndb/test/ndbapi/ndb_user_transaction5.cpp:
  Changed header to GPL version 2 only
ndb/test/ndbapi/ndb_user_transaction6.cpp:
  Changed header to GPL version 2 only
ndb/test/ndbapi/restarter.cpp:
  Changed header to GPL version 2 only
ndb/test/ndbapi/restarter2.cpp:
  Changed header to GPL version 2 only
ndb/test/ndbapi/restarts.cpp:
  Changed header to GPL version 2 only
ndb/test/ndbapi/size.cpp:
  Changed header to GPL version 2 only
ndb/test/ndbapi/testBackup.cpp:
  Changed header to GPL version 2 only
ndb/test/ndbapi/testBasic.cpp:
  Changed header to GPL version 2 only
ndb/test/ndbapi/testBasicAsynch.cpp:
  Changed header to GPL version 2 only
ndb/test/ndbapi/testBlobs.cpp:
  Changed header to GPL version 2 only
ndb/test/ndbapi/testDataBuffers.cpp:
  Changed header to GPL version 2 only
ndb/test/ndbapi/testDeadlock.cpp:
  Changed header to GPL version 2 only
ndb/test/ndbapi/testDict.cpp:
  Changed header to GPL version 2 only
ndb/test/ndbapi/testGrepVerify.cpp:
  Changed header to GPL version 2 only
ndb/test/ndbapi/testIndex.cpp:
  Changed header to GPL version 2 only
ndb/test/ndbapi/testInterpreter.cpp:
  Changed header to GPL version 2 only
ndb/test/ndbapi/testMgm.cpp:
  Changed header to GPL version 2 only
ndb/test/ndbapi/testNdbApi.cpp:
  Changed header to GPL version 2 only
ndb/test/ndbapi/testNodeRestart.cpp:
  Changed header to GPL version 2 only
ndb/test/ndbapi/testOIBasic.cpp:
  Changed header to GPL version 2 only
ndb/test/ndbapi/testOperations.cpp:
  Changed header to GPL version 2 only
ndb/test/ndbapi/testOrderedIndex.cpp:
  Changed header to GPL version 2 only
ndb/test/ndbapi/testPartitioning.cpp:
  Changed header to GPL version 2 only
ndb/test/ndbapi/testReadPerf.cpp:
  Changed header to GPL version 2 only
ndb/test/ndbapi/testRestartGci.cpp:
  Changed header to GPL version 2 only
ndb/test/ndbapi/testSRBank.cpp:
  Changed header to GPL version 2 only
ndb/test/ndbapi/testScan.cpp:
  Changed header to GPL version 2 only
ndb/test/ndbapi/testScanInterpreter.cpp:
  Changed header to GPL version 2 only
ndb/test/ndbapi/testScanPerf.cpp:
  Changed header to GPL version 2 only
ndb/test/ndbapi/testSystemRestart.cpp:
  Changed header to GPL version 2 only
ndb/test/ndbapi/bank/Bank.cpp:
  Changed header to GPL version 2 only
ndb/test/ndbapi/bank/Bank.hpp:
  Changed header to GPL version 2 only
ndb/test/ndbapi/bank/BankLoad.cpp:
  Changed header to GPL version 2 only
ndb/test/ndbapi/bank/bankCreator.cpp:
  Changed header to GPL version 2 only
ndb/test/ndbapi/bank/bankMakeGL.cpp:
  Changed header to GPL version 2 only
ndb/test/ndbapi/bank/bankSumAccounts.cpp:
  Changed header to GPL version 2 only
ndb/test/ndbapi/bank/bankTimer.cpp:
  Changed header to GPL version 2 only
ndb/test/ndbapi/bank/bankTransactionMaker.cpp:
  Changed header to GPL version 2 only
ndb/test/ndbapi/bank/bankValidateAllGLs.cpp:
  Changed header to GPL version 2 only
ndb/test/ndbapi/bank/testBank.cpp:
  Changed header to GPL version 2 only
ndb/test/ndbapi/bench/asyncGenerator.cpp:
  Changed header to GPL version 2 only
ndb/test/ndbapi/bench/dbGenerator.h:
  Changed header to GPL version 2 only
ndb/test/ndbapi/bench/dbPopulate.cpp:
  Changed header to GPL version 2 only
ndb/test/ndbapi/bench/dbPopulate.h:
  Changed header to GPL version 2 only
ndb/test/ndbapi/bench/macros.h:
  Changed header to GPL version 2 only
ndb/test/ndbapi/bench/mainAsyncGenerator.cpp:
  Changed header to GPL version 2 only
ndb/test/ndbapi/bench/mainPopulate.cpp:
  Changed header to GPL version 2 only
ndb/test/ndbapi/bench/ndb_async1.cpp:
  Changed header to GPL version 2 only
ndb/test/ndbapi/bench/ndb_async2.cpp:
  Changed header to GPL version 2 only
ndb/test/ndbapi/bench/ndb_error.hpp:
  Changed header to GPL version 2 only
ndb/test/ndbapi/bench/ndb_schema.hpp:
  Changed header to GPL version 2 only
ndb/test/ndbapi/bench/ndb_user_transaction.cpp:
  Changed header to GPL version 2 only
ndb/test/ndbapi/bench/ndb_user_transaction2.cpp:
  Changed header to GPL version 2 only
ndb/test/ndbapi/bench/ndb_user_transaction3.cpp:
  Changed header to GPL version 2 only
ndb/test/ndbapi/bench/ndb_user_transaction4.cpp:
  Changed header to GPL version 2 only
ndb/test/ndbapi/bench/ndb_user_transaction5.cpp:
  Changed header to GPL version 2 only
ndb/test/ndbapi/bench/ndb_user_transaction6.cpp:
  Changed header to GPL version 2 only
ndb/test/ndbapi/bench/testData.h:
  Changed header to GPL version 2 only
ndb/test/ndbapi/bench/testDefinitions.h:
  Changed header to GPL version 2 only
ndb/test/ndbapi/bench/userInterface.cpp:
  Changed header to GPL version 2 only
ndb/test/ndbapi/bench/userInterface.h:
  Changed header to GPL version 2 only
ndb/test/ndbapi/old_dirs/acid2/TraceNdbApi.hpp:
  Changed header to GPL version 2 only
ndb/test/ndbapi/old_dirs/acid2/VerifyNdbApi.hpp:
  Changed header to GPL version 2 only
ndb/test/ndbapi/old_dirs/lmc-bench/async-src/include/dbGenerator.h:
  Changed header to GPL version 2 only
ndb/test/ndbapi/old_dirs/lmc-bench/async-src/include/testData.h:
  Changed header to GPL version 2 only
ndb/test/ndbapi/old_dirs/lmc-bench/async-src/include/userInterface.h:
  Changed header to GPL version 2 only
ndb/test/ndbapi/old_dirs/lmc-bench/async-src/user/macros.h:
  Changed header to GPL version 2 only
ndb/test/ndbapi/old_dirs/lmc-bench/async-src/user/ndb_error.hpp:
  Changed header to GPL version 2 only
ndb/test/ndbapi/old_dirs/lmc-bench/include/ndb_schema.hpp:
  Changed header to GPL version 2 only
ndb/test/ndbapi/old_dirs/lmc-bench/include/testDefinitions.h:
  Changed header to GPL version 2 only
ndb/test/ndbapi/old_dirs/lmc-bench/src/generator/dbGenerator.c:
  Changed header to GPL version 2 only
ndb/test/ndbapi/old_dirs/lmc-bench/src/generator/dbGenerator.h:
  Changed header to GPL version 2 only
ndb/test/ndbapi/old_dirs/lmc-bench/src/generator/mainGenerator.c:
  Changed header to GPL version 2 only
ndb/test/ndbapi/old_dirs/lmc-bench/src/include/testData.h:
  Changed header to GPL version 2 only
ndb/test/ndbapi/old_dirs/lmc-bench/src/include/userInterface.h:
  Changed header to GPL version 2 only
ndb/test/ndbapi/old_dirs/lmc-bench/src/populator/dbPopulate.c:
  Changed header to GPL version 2 only
ndb/test/ndbapi/old_dirs/lmc-bench/src/populator/dbPopulate.h:
  Changed header to GPL version 2 only
ndb/test/ndbapi/old_dirs/lmc-bench/src/populator/mainPopulate.c:
  Changed header to GPL version 2 only
ndb/test/ndbapi/old_dirs/lmc-bench/src/user/localDbPrepare.c:
  Changed header to GPL version 2 only
ndb/test/ndbapi/old_dirs/lmc-bench/src/user/macros.h:
  Changed header to GPL version 2 only
ndb/test/ndbapi/old_dirs/lmc-bench/src/user/ndb_error.hpp:
  Changed header to GPL version 2 only
ndb/test/ndbapi/old_dirs/lmc-bench/src/user/old/userHandle.h:
  Changed header to GPL version 2 only
ndb/test/ndbapi/old_dirs/lmc-bench/src/user/old/userInterface.c:
  Changed header to GPL version 2 only
ndb/test/ndbapi/old_dirs/lmc-bench/src/user/userHandle.h:
  Changed header to GPL version 2 only
ndb/test/ndbapi/old_dirs/lmc-bench/src/user/userInterface.cpp:
  Changed header to GPL version 2 only
ndb/test/ndbapi/old_dirs/lmc-bench/src/user/userTransaction.c:
  Changed header to GPL version 2 only
ndb/test/ndbapi/testTimeout.cpp:
  Changed header to GPL version 2 only
ndb/test/ndbapi/testTransactions.cpp:
  Changed header to GPL version 2 only
ndb/test/ndbapi/test_event.cpp:
  Changed header to GPL version 2 only
ndb/test/ndbapi/test_event_merge.cpp:
  Changed header to GPL version 2 only
ndb/test/ndbapi/test_event_multi_table.cpp:
  Changed header to GPL version 2 only
ndb/test/ndbapi/userInterface.cpp:
  Changed header to GPL version 2 only
ndb/test/ndbapi/old_dirs/lmc-bench/src/user/old/userTransaction.c:
  Changed header to GPL version 2 only
ndb/test/ndbapi/old_dirs/vw_test/bcd.h:
  Changed header to GPL version 2 only
ndb/test/ndbapi/old_dirs/vw_test/utv.h:
  Changed header to GPL version 2 only
ndb/test/ndbapi/old_dirs/vw_test/vcdrfunc.h:
  Changed header to GPL version 2 only
ndb/test/newtonapi/basic_test/basic/basic.cpp:
  Changed header to GPL version 2 only
ndb/test/newtonapi/basic_test/bulk_read/br_test.cpp:
  Changed header to GPL version 2 only
ndb/test/newtonapi/basic_test/common.cpp:
  Changed header to GPL version 2 only
ndb/test/newtonapi/basic_test/common.hpp:
  Changed header to GPL version 2 only
ndb/test/newtonapi/basic_test/ptr_binding/ptr_binding_test.cpp:
  Changed header to GPL version 2 only
ndb/test/newtonapi/basic_test/too_basic.cpp:
  Changed header to GPL version 2 only
ndb/test/newtonapi/perf_test/perf.cpp:
  Changed header to GPL version 2 only
ndb/test/odbc/SQL99_test/SQL99_test.cpp:
  Changed header to GPL version 2 only
ndb/test/odbc/SQL99_test/SQL99_test.h:
  Changed header to GPL version 2 only
ndb/test/odbc/client/NDBT_ALLOCHANDLE.cpp:
  Changed header to GPL version 2 only
ndb/test/odbc/client/NDBT_ALLOCHANDLE_HDBC.cpp:
  Changed header to GPL version 2 only
ndb/test/odbc/client/NDBT_SQLConnect.cpp:
  Changed header to GPL version 2 only
ndb/test/odbc/client/NDBT_SQLPrepare.cpp:
  Changed header to GPL version 2 only
ndb/test/odbc/client/SQLAllocEnvTest.cpp:
  Changed header to GPL version 2 only
ndb/test/odbc/client/SQLAllocHandleTest.cpp:
  Changed header to GPL version 2 only
ndb/test/odbc/client/SQLAllocHandleTest_bf.cpp:
  Changed header to GPL version 2 only
ndb/test/odbc/client/SQLBindColTest.cpp:
  Changed header to GPL version 2 only
ndb/test/odbc/client/SQLBindParameterTest.cpp:
  Changed header to GPL version 2 only
ndb/test/odbc/client/SQLCancelTest.cpp:
  Changed header to GPL version 2 only
ndb/test/odbc/client/SQLCloseCursorTest.cpp:
  Changed header to GPL version 2 only
ndb/test/odbc/client/SQLColAttributeTest.cpp:
  Changed header to GPL version 2 only
ndb/test/odbc/client/SQLColAttributeTest1.cpp:
  Changed header to GPL version 2 only
ndb/test/odbc/client/SQLColAttributeTest2.cpp:
  Changed header to GPL version 2 only
ndb/test/odbc/client/SQLColAttributeTest3.cpp:
  Changed header to GPL version 2 only
ndb/test/odbc/client/SQLConnectTest.cpp:
  Changed header to GPL version 2 only
ndb/test/odbc/client/SQLCopyDescTest.cpp:
  Changed header to GPL version 2 only
ndb/test/odbc/client/SQLDescribeColTest.cpp:
  Changed header to GPL version 2 only
ndb/test/odbc/client/SQLDisconnectTest.cpp:
  Changed header to GPL version 2 only
ndb/test/odbc/client/SQLDriverConnectTest.cpp:
  Changed header to GPL version 2 only
ndb/test/odbc/client/SQLEndTranTest.cpp:
  Changed header to GPL version 2 only
ndb/test/odbc/client/SQLErrorTest.cpp:
  Changed header to GPL version 2 only
ndb/test/odbc/client/SQLExecDirectTest.cpp:
  Changed header to GPL version 2 only
ndb/test/odbc/client/SQLExecuteTest.cpp:
  Changed header to GPL version 2 only
ndb/test/odbc/client/SQLFetchScrollTest.cpp:
  Changed header to GPL version 2 only
ndb/test/odbc/client/SQLFetchTest.cpp:
  Changed header to GPL version 2 only
ndb/test/odbc/client/SQLFreeHandleTest.cpp:
  Changed header to GPL version 2 only
ndb/test/odbc/client/SQLFreeStmtTest.cpp:
  Changed header to GPL version 2 only
ndb/test/odbc/client/SQLGetConnectAttrTest.cpp:
  Changed header to GPL version 2 only
ndb/test/odbc/client/SQLGetCursorNameTest.cpp:
  Changed header to GPL version 2 only
ndb/test/odbc/client/SQLGetDataTest.cpp:
  Changed header to GPL version 2 only
ndb/test/odbc/client/SQLGetDescFieldTest.cpp:
  Changed header to GPL version 2 only
ndb/test/odbc/client/SQLGetDescRecTest.cpp:
  Changed header to GPL version 2 only
ndb/test/odbc/client/SQLGetDiagFieldTest.cpp:
  Changed header to GPL version 2 only
ndb/test/odbc/client/SQLGetDiagRecSimpleTest.cpp:
  Changed header to GPL version 2 only
ndb/test/odbc/client/SQLGetDiagRecTest.cpp:
  Changed header to GPL version 2 only
ndb/test/odbc/client/SQLGetEnvAttrTest.cpp:
  Changed header to GPL version 2 only
ndb/test/odbc/client/SQLGetFunctionsTest.cpp:
  Changed header to GPL version 2 only
ndb/test/odbc/client/SQLGetInfoTest.cpp:
  Changed header to GPL version 2 only
ndb/test/odbc/client/SQLGetStmtAttrTest.cpp:
  Changed header to GPL version 2 only
ndb/test/odbc/client/SQLGetTypeInfoTest.cpp:
  Changed header to GPL version 2 only
ndb/test/odbc/client/SQLMoreResultsTest.cpp:
  Changed header to GPL version 2 only
ndb/test/odbc/client/SQLNumResultColsTest.cpp:
  Changed header to GPL version 2 only
ndb/test/odbc/client/SQLParamDataTest.cpp:
  Changed header to GPL version 2 only
ndb/test/odbc/client/SQLPrepareTest.cpp:
  Changed header to GPL version 2 only
ndb/test/odbc/client/SQLPutDataTest.cpp:
  Changed header to GPL version 2 only
ndb/test/odbc/client/SQLRowCountTest.cpp:
  Changed header to GPL version 2 only
ndb/test/odbc/client/SQLSetConnectAttrTest.cpp:
  Changed header to GPL version 2 only
ndb/test/odbc/client/SQLSetCursorNameTest.cpp:
  Changed header to GPL version 2 only
ndb/test/odbc/client/SQLSetDescFieldTest.cpp:
  Changed header to GPL version 2 only
ndb/test/odbc/client/SQLSetDescRecTest.cpp:
  Changed header to GPL version 2 only
ndb/test/odbc/client/SQLSetEnvAttrTest.cpp:
  Changed header to GPL version 2 only
ndb/test/odbc/client/SQLSetStmtAttrTest.cpp:
  Changed header to GPL version 2 only
ndb/test/odbc/client/SQLTablesTest.cpp:
  Changed header to GPL version 2 only
ndb/test/odbc/client/SQLTransactTest.cpp:
  Changed header to GPL version 2 only
ndb/test/odbc/client/common.hpp:
  Changed header to GPL version 2 only
ndb/test/odbc/client/main.cpp:
  Changed header to GPL version 2 only
ndb/test/odbc/driver/testOdbcDriver.cpp:
  Changed header to GPL version 2 only
ndb/test/odbc/test_compiler/test_compiler.cpp:
  Changed header to GPL version 2 only
ndb/test/run-test/main.cpp:
  Changed header to GPL version 2 only
ndb/test/run-test/run-test.hpp:
  Changed header to GPL version 2 only
ndb/test/src/CpcClient.cpp:
  Changed header to GPL version 2 only
ndb/test/src/HugoAsynchTransactions.cpp:
  Changed header to GPL version 2 only
ndb/test/src/HugoCalculator.cpp:
  Changed header to GPL version 2 only
ndb/test/src/HugoOperations.cpp:
  Changed header to GPL version 2 only
ndb/test/src/HugoTransactions.cpp:
  Changed header to GPL version 2 only
ndb/test/src/NDBT_Error.cpp:
  Changed header to GPL version 2 only
ndb/test/src/NDBT_Output.cpp:
  Changed header to GPL version 2 only
ndb/test/src/NDBT_ResultRow.cpp:
  Changed header to GPL version 2 only
ndb/test/src/NDBT_ReturnCodes.cpp:
  Changed header to GPL version 2 only
ndb/test/src/NDBT_Table.cpp:
  Changed header to GPL version 2 only
ndb/test/src/NDBT_Tables.cpp:
  Changed header to GPL version 2 only
ndb/test/src/NDBT_Test.cpp:
  Changed header to GPL version 2 only
ndb/test/src/NdbBackup.cpp:
  Changed header to GPL version 2 only
ndb/test/src/NdbConfig.cpp:
  Changed header to GPL version 2 only
ndb/test/src/NdbGrep.cpp:
  Changed header to GPL version 2 only
ndb/test/src/NdbRestarter.cpp:
  Changed header to GPL version 2 only
ndb/test/src/NdbRestarts.cpp:
  Changed header to GPL version 2 only
ndb/test/src/NdbSchemaCon.cpp:
  Changed header to GPL version 2 only
ndb/test/src/NdbSchemaOp.cpp:
  Changed header to GPL version 2 only
ndb/test/src/UtilTransactions.cpp:
  Changed header to GPL version 2 only
ndb/test/tools/copy_tab.cpp:
  Changed header to GPL version 2 only
ndb/test/tools/cpcc.cpp:
  Changed header to GPL version 2 only
ndb/test/tools/create_index.cpp:
  Changed header to GPL version 2 only
ndb/test/tools/hugoCalculator.cpp:
  Changed header to GPL version 2 only
ndb/test/tools/hugoFill.cpp:
  Changed header to GPL version 2 only
ndb/test/tools/hugoLoad.cpp:
  Changed header to GPL version 2 only
ndb/test/tools/hugoLockRecords.cpp:
  Changed header to GPL version 2 only
ndb/test/tools/hugoPkDelete.cpp:
  Changed header to GPL version 2 only
ndb/test/tools/hugoPkRead.cpp:
  Changed header to GPL version 2 only
ndb/test/tools/hugoPkReadRecord.cpp:
  Changed header to GPL version 2 only
ndb/test/tools/hugoPkUpdate.cpp:
  Changed header to GPL version 2 only
ndb/test/tools/hugoScanRead.cpp:
  Changed header to GPL version 2 only
ndb/test/tools/hugoScanUpdate.cpp:
  Changed header to GPL version 2 only
ndb/test/tools/old_dirs/waiter/waiter.cpp:
  Changed header to GPL version 2 only
ndb/test/tools/restart.cpp:
  Changed header to GPL version 2 only
ndb/test/tools/transproxy.cpp:
  Changed header to GPL version 2 only
ndb/test/tools/verify_index.cpp:
  Changed header to GPL version 2 only
ndb/tools/delete_all.cpp:
  Changed header to GPL version 2 only
ndb/tools/desc.cpp:
  Changed header to GPL version 2 only
ndb/tools/drop_index.cpp:
  Changed header to GPL version 2 only
ndb/tools/drop_tab.cpp:
  Changed header to GPL version 2 only
ndb/tools/listTables.cpp:
  Changed header to GPL version 2 only
ndb/tools/ndb_config.cpp:
  Changed header to GPL version 2 only
ndb/tools/ndb_test_platform.cpp:
  Changed header to GPL version 2 only
ndb/tools/ndbsql.cpp:
  Changed header to GPL version 2 only
ndb/tools/restore/Restore.cpp:
  Changed header to GPL version 2 only
ndb/tools/restore/Restore.hpp:
  Changed header to GPL version 2 only
ndb/tools/restore/consumer.cpp:
  Changed header to GPL version 2 only
ndb/tools/restore/consumer.hpp:
  Changed header to GPL version 2 only
ndb/tools/restore/consumer_printer.cpp:
  Changed header to GPL version 2 only
ndb/tools/restore/consumer_printer.hpp:
  Changed header to GPL version 2 only
ndb/tools/restore/consumer_restore.cpp:
  Changed header to GPL version 2 only
ndb/tools/restore/consumer_restore.hpp:
  Changed header to GPL version 2 only
ndb/tools/select_all.cpp:
  Changed header to GPL version 2 only
ndb/tools/select_count.cpp:
  Changed header to GPL version 2 only
ndb/tools/waiter.cpp:
  Changed header to GPL version 2 only
ndb/tools/restore/consumer_restorem.cpp:
  Changed header to GPL version 2 only
ndb/tools/restore/restore_main.cpp:
  Changed header to GPL version 2 only
netware/mysql_fix_privilege_tables.pl:
  Changed header to GPL version 2 only
netware/mysql_secure_installation.pl:
  Changed header to GPL version 2 only
os2/Makefile.am:
  Changed header to GPL version 2 only
os2/include/Makefile.am:
  Changed header to GPL version 2 only
os2/include/sys/Makefile.am:
  Changed header to GPL version 2 only
pstack/Makefile.am:
  Changed header to GPL version 2 only
regex/Makefile.am:
  Changed header to GPL version 2 only
scripts/Makefile.am:
  Changed header to GPL version 2 only
scripts/fill_help_tables.sh:
  Changed header to GPL version 2 only
scripts/mysql_config.sh:
  Changed header to GPL version 2 only
scripts/mysql_secure_installation.sh:
  Changed header to GPL version 2 only
server-tools/instance-manager/Makefile.am:
  Changed header to GPL version 2 only
server-tools/instance-manager/buffer.cc:
  Changed header to GPL version 2 only
server-tools/instance-manager/buffer.h:
  Changed header to GPL version 2 only
server-tools/instance-manager/command.cc:
  Changed header to GPL version 2 only
server-tools/instance-manager/command.h:
  Changed header to GPL version 2 only
server-tools/instance-manager/commands.cc:
  Changed header to GPL version 2 only
server-tools/instance-manager/commands.h:
  Changed header to GPL version 2 only
server-tools/instance-manager/guardian.cc:
  Changed header to GPL version 2 only
server-tools/instance-manager/guardian.h:
  Changed header to GPL version 2 only
server-tools/instance-manager/instance.cc:
  Changed header to GPL version 2 only
server-tools/instance-manager/instance.h:
  Changed header to GPL version 2 only
server-tools/instance-manager/instance_map.cc:
  Changed header to GPL version 2 only
server-tools/instance-manager/instance_map.h:
  Changed header to GPL version 2 only
server-tools/instance-manager/instance_options.cc:
  Changed header to GPL version 2 only
server-tools/instance-manager/instance_options.h:
  Changed header to GPL version 2 only
server-tools/instance-manager/listener.cc:
  Changed header to GPL version 2 only
server-tools/instance-manager/listener.h:
  Changed header to GPL version 2 only
server-tools/instance-manager/log.cc:
  Changed header to GPL version 2 only
server-tools/instance-manager/log.h:
  Changed header to GPL version 2 only
server-tools/instance-manager/manager.cc:
  Changed header to GPL version 2 only
server-tools/instance-manager/manager.h:
  Changed header to GPL version 2 only
server-tools/instance-manager/messages.cc:
  Changed header to GPL version 2 only
server-tools/instance-manager/messages.h:
  Changed header to GPL version 2 only
server-tools/instance-manager/mysql_connection.cc:
  Changed header to GPL version 2 only
server-tools/instance-manager/mysql_connection.h:
  Changed header to GPL version 2 only
server-tools/instance-manager/mysql_manager_error.h:
  Changed header to GPL version 2 only
server-tools/instance-manager/mysqlmanager.cc:
  Changed header to GPL version 2 only
server-tools/instance-manager/options.cc:
  Changed header to GPL version 2 only
server-tools/instance-manager/options.h:
  Changed header to GPL version 2 only
server-tools/instance-manager/parse.cc:
  Changed header to GPL version 2 only
server-tools/instance-manager/parse.h:
  Changed header to GPL version 2 only
server-tools/instance-manager/parse_output.cc:
  Changed header to GPL version 2 only
server-tools/instance-manager/parse_output.h:
  Changed header to GPL version 2 only
server-tools/instance-manager/priv.cc:
  Changed header to GPL version 2 only
server-tools/instance-manager/priv.h:
  Changed header to GPL version 2 only
server-tools/instance-manager/protocol.cc:
  Changed header to GPL version 2 only
server-tools/instance-manager/protocol.h:
  Changed header to GPL version 2 only
server-tools/instance-manager/thread_registry.cc:
  Changed header to GPL version 2 only
server-tools/instance-manager/thread_registry.h:
  Changed header to GPL version 2 only
server-tools/instance-manager/user_map.cc:
  Changed header to GPL version 2 only
server-tools/instance-manager/user_map.h:
  Changed header to GPL version 2 only
sql/Makefile.am:
  Changed header to GPL version 2 only
sql/client_settings.h:
  Changed header to GPL version 2 only
sql/custom_conf.h:
  Changed header to GPL version 2 only
sql/derror.cc:
  Changed header to GPL version 2 only
sql/des_key_file.cc:
  Changed header to GPL version 2 only
sql/discover.cc:
  Changed header to GPL version 2 only
sql/field.cc:
  Changed header to GPL version 2 only
sql/field.h:
  Changed header to GPL version 2 only
sql/field_conv.cc:
  Changed header to GPL version 2 only
sql/filesort.cc:
  Changed header to GPL version 2 only
sql/frm_crypt.cc:
  Changed header to GPL version 2 only
sql/gen_lex_hash.cc:
  Changed header to GPL version 2 only
sql/gstream.cc:
  Changed header to GPL version 2 only
sql/gstream.h:
  Changed header to GPL version 2 only
sql/ha_archive.cc:
  Changed header to GPL version 2 only
sql/ha_archive.h:
  Changed header to GPL version 2 only
sql/ha_berkeley.cc:
  Changed header to GPL version 2 only
sql/ha_berkeley.h:
  Changed header to GPL version 2 only
sql/ha_blackhole.cc:
  Changed header to GPL version 2 only
sql/ha_blackhole.h:
  Changed header to GPL version 2 only
sql/ha_federated.cc:
  Changed header to GPL version 2 only
sql/ha_federated.h:
  Changed header to GPL version 2 only
sql/ha_heap.cc:
  Changed header to GPL version 2 only
sql/ha_heap.h:
  Changed header to GPL version 2 only
sql/ha_innodb.cc:
  Changed header to GPL version 2 only
sql/ha_innodb.h:
  Changed header to GPL version 2 only
sql/ha_myisam.cc:
  Changed header to GPL version 2 only
sql/ha_myisam.h:
  Changed header to GPL version 2 only
sql/ha_myisammrg.cc:
  Changed header to GPL version 2 only
sql/ha_myisammrg.h:
  Changed header to GPL version 2 only
sql/ha_ndbcluster.cc:
  Changed header to GPL version 2 only
sql/ha_ndbcluster.h:
  Changed header to GPL version 2 only
sql/handler.cc:
  Changed header to GPL version 2 only
sql/handler.h:
  Changed header to GPL version 2 only
sql/hash_filo.cc:
  Changed header to GPL version 2 only
sql/hash_filo.h:
  Changed header to GPL version 2 only
sql/hostname.cc:
  Changed header to GPL version 2 only
sql/init.cc:
  Changed header to GPL version 2 only
sql/item.cc:
  Changed header to GPL version 2 only
sql/item.h:
  Changed header to GPL version 2 only
sql/item_buff.cc:
  Changed header to GPL version 2 only
sql/item_cmpfunc.cc:
  Changed header to GPL version 2 only
sql/item_cmpfunc.h:
  Changed header to GPL version 2 only
sql/item_create.cc:
  Changed header to GPL version 2 only
sql/item_create.h:
  Changed header to GPL version 2 only
sql/item_func.cc:
  Changed header to GPL version 2 only
sql/item_func.h:
  Changed header to GPL version 2 only
sql/item_geofunc.cc:
  Changed header to GPL version 2 only
sql/item_geofunc.h:
  Changed header to GPL version 2 only
sql/item_row.cc:
  Changed header to GPL version 2 only
sql/item_row.h:
  Changed header to GPL version 2 only
sql/item_strfunc.cc:
  Changed header to GPL version 2 only
sql/item_strfunc.h:
  Changed header to GPL version 2 only
sql/item_subselect.cc:
  Changed header to GPL version 2 only
sql/item_subselect.h:
  Changed header to GPL version 2 only
sql/item_sum.cc:
  Changed header to GPL version 2 only
sql/item_sum.h:
  Changed header to GPL version 2 only
sql/item_timefunc.cc:
  Changed header to GPL version 2 only
sql/item_timefunc.h:
  Changed header to GPL version 2 only
sql/item_uniq.cc:
  Changed header to GPL version 2 only
sql/item_uniq.h:
  Changed header to GPL version 2 only
sql/key.cc:
  Changed header to GPL version 2 only
sql/lex.h:
  Changed header to GPL version 2 only
sql/lex_symbol.h:
  Changed header to GPL version 2 only
sql/lock.cc:
  Changed header to GPL version 2 only
sql/log.cc:
  Changed header to GPL version 2 only
sql/log_event.cc:
  Changed header to GPL version 2 only
sql/log_event.h:
  Changed header to GPL version 2 only
sql/matherr.c:
  Changed header to GPL version 2 only
sql/mf_iocache.cc:
  Changed header to GPL version 2 only
sql/my_decimal.cc:
  Changed header to GPL version 2 only
sql/my_decimal.h:
  Changed header to GPL version 2 only
sql/my_lock.c:
  Changed header to GPL version 2 only
sql/mysql_priv.h:
  Changed header to GPL version 2 only
sql/mysqld.cc:
  Changed header to GPL version 2 only
sql/mysqld_suffix.h:
  Changed header to GPL version 2 only
sql/net_serv.cc:
  Changed header to GPL version 2 only
sql/opt_range.cc:
  Changed header to GPL version 2 only
sql/opt_range.h:
  Changed header to GPL version 2 only
sql/opt_sum.cc:
  Changed header to GPL version 2 only
sql/parse_file.cc:
  Changed header to GPL version 2 only
sql/parse_file.h:
  Changed header to GPL version 2 only
sql/password.c:
  Changed header to GPL version 2 only
sql/procedure.cc:
  Changed header to GPL version 2 only
sql/procedure.h:
  Changed header to GPL version 2 only
sql/protocol.cc:
  Changed header to GPL version 2 only
sql/protocol.h:
  Changed header to GPL version 2 only
sql/records.cc:
  Changed header to GPL version 2 only
sql/repl_failsafe.cc:
  Changed header to GPL version 2 only
sql/repl_failsafe.h:
  Changed header to GPL version 2 only
sql/set_var.cc:
  Changed header to GPL version 2 only
sql/set_var.h:
  Changed header to GPL version 2 only
sql/slave.cc:
  Changed header to GPL version 2 only
sql/slave.h:
  Changed header to GPL version 2 only
sql/sp.cc:
  Changed header to GPL version 2 only
sql/sp.h:
  Changed header to GPL version 2 only
sql/sp_cache.cc:
  Changed header to GPL version 2 only
sql/sp_cache.h:
  Changed header to GPL version 2 only
sql/sp_head.cc:
  Changed header to GPL version 2 only
sql/sp_head.h:
  Changed header to GPL version 2 only
sql/sp_pcontext.cc:
  Changed header to GPL version 2 only
sql/sp_pcontext.h:
  Changed header to GPL version 2 only
sql/sp_rcontext.cc:
  Changed header to GPL version 2 only
sql/sp_rcontext.h:
  Changed header to GPL version 2 only
sql/spatial.cc:
  Changed header to GPL version 2 only
sql/spatial.h:
  Changed header to GPL version 2 only
sql/sql_acl.cc:
  Changed header to GPL version 2 only
sql/sql_acl.h:
  Changed header to GPL version 2 only
sql/sql_analyse.cc:
  Changed header to GPL version 2 only
sql/sql_analyse.h:
  Changed header to GPL version 2 only
sql/sql_array.h:
  Changed header to GPL version 2 only
sql/sql_base.cc:
  Changed header to GPL version 2 only
sql/sql_bitmap.h:
  Changed header to GPL version 2 only
sql/sql_cache.cc:
  Changed header to GPL version 2 only
sql/sql_cache.h:
  Changed header to GPL version 2 only
sql/sql_class.cc:
  Changed header to GPL version 2 only
sql/sql_class.h:
  Changed header to GPL version 2 only
sql/sql_client.cc:
  Changed header to GPL version 2 only
sql/sql_crypt.cc:
  Changed header to GPL version 2 only
sql/sql_crypt.h:
  Changed header to GPL version 2 only
sql/sql_cursor.cc:
  Changed header to GPL version 2 only
sql/sql_cursor.h:
  Changed header to GPL version 2 only
sql/sql_db.cc:
  Changed header to GPL version 2 only
sql/sql_delete.cc:
  Changed header to GPL version 2 only
sql/sql_derived.cc:
  Changed header to GPL version 2 only
sql/sql_do.cc:
  Changed header to GPL version 2 only
sql/sql_error.cc:
  Changed header to GPL version 2 only
sql/sql_error.h:
  Changed header to GPL version 2 only
sql/sql_handler.cc:
  Changed header to GPL version 2 only
sql/sql_help.cc:
  Changed header to GPL version 2 only
sql/sql_insert.cc:
  Changed header to GPL version 2 only
sql/sql_lex.cc:
  Changed header to GPL version 2 only
sql/sql_lex.h:
  Changed header to GPL version 2 only
sql/sql_list.cc:
  Changed header to GPL version 2 only
sql/sql_list.h:
  Changed header to GPL version 2 only
sql/sql_load.cc:
  Changed header to GPL version 2 only
sql/sql_locale.cc:
  Changed header to GPL version 2 only
sql/sql_manager.cc:
  Changed header to GPL version 2 only
sql/sql_manager.h:
  Changed header to GPL version 2 only
sql/sql_map.cc:
  Changed header to GPL version 2 only
sql/sql_map.h:
  Changed header to GPL version 2 only
sql/sql_olap.cc:
  Changed header to GPL version 2 only
sql/sql_parse.cc:
  Changed header to GPL version 2 only
sql/sql_prepare.cc:
  Changed header to GPL version 2 only
sql/sql_rename.cc:
  Changed header to GPL version 2 only
sql/sql_repl.cc:
  Changed header to GPL version 2 only
sql/sql_repl.h:
  Changed header to GPL version 2 only
sql/sql_select.cc:
  Changed header to GPL version 2 only
sql/sql_select.h:
  Changed header to GPL version 2 only
sql/sql_show.cc:
  Changed header to GPL version 2 only
sql/sql_sort.h:
  Changed header to GPL version 2 only
sql/sql_state.c:
  Changed header to GPL version 2 only
sql/sql_string.cc:
  Changed header to GPL version 2 only
sql/sql_string.h:
  Changed header to GPL version 2 only
sql/sql_table.cc:
  Changed header to GPL version 2 only
sql/sql_test.cc:
  Changed header to GPL version 2 only
sql/sql_trigger.cc:
  Changed header to GPL version 2 only
sql/sql_trigger.h:
  Changed header to GPL version 2 only
sql/sql_udf.cc:
  Changed header to GPL version 2 only
sql/sql_udf.h:
  Changed header to GPL version 2 only
sql/sql_union.cc:
  Changed header to GPL version 2 only
sql/sql_update.cc:
  Changed header to GPL version 2 only
sql-bench/Makefile.am:
  Changed header to GPL version 2 only
sql-bench/as3ap.sh:
  Changed header to GPL version 2 only
sql-bench/bench-count-distinct.sh:
  Changed header to GPL version 2 only
sql-bench/bench-init.pl.sh:
  Changed header to GPL version 2 only
sql-bench/compare-results.sh:
  Changed header to GPL version 2 only
sql-bench/copy-db.sh:
  Changed header to GPL version 2 only
sql-bench/crash-me.sh:
  Changed header to GPL version 2 only
sql-bench/print-limit-table:
  Changed header to GPL version 2 only
sql-bench/run-all-tests.sh:
  Changed header to GPL version 2 only
sql/examples/ha_example.cc:
  Changed header to GPL version 2 only
sql/examples/ha_example.h:
  Changed header to GPL version 2 only
sql/examples/ha_tina.cc:
  Changed header to GPL version 2 only
sql/examples/ha_tina.h:
  Changed header to GPL version 2 only
sql/share/Makefile.am:
  Changed header to GPL version 2 only
sql/share/charsets/Index.xml:
  Changed header to GPL version 2 only
sql/share/charsets/armscii8.xml:
  Changed header to GPL version 2 only
sql/share/charsets/ascii.xml:
  Changed header to GPL version 2 only
sql/share/charsets/cp1250.xml:
  Changed header to GPL version 2 only
sql/share/charsets/cp1251.xml:
  Changed header to GPL version 2 only
sql/share/charsets/cp1256.xml:
  Changed header to GPL version 2 only
sql/share/charsets/cp1257.xml:
  Changed header to GPL version 2 only
sql/share/charsets/cp850.xml:
  Changed header to GPL version 2 only
sql/share/charsets/cp852.xml:
  Changed header to GPL version 2 only
sql/share/charsets/cp866.xml:
  Changed header to GPL version 2 only
sql/share/charsets/dec8.xml:
  Changed header to GPL version 2 only
sql/share/charsets/geostd8.xml:
  Changed header to GPL version 2 only
sql/share/charsets/greek.xml:
  Changed header to GPL version 2 only
sql/share/charsets/hebrew.xml:
  Changed header to GPL version 2 only
sql/share/charsets/hp8.xml:
  Changed header to GPL version 2 only
sql/share/charsets/keybcs2.xml:
  Changed header to GPL version 2 only
sql/share/charsets/koi8r.xml:
  Changed header to GPL version 2 only
sql/share/charsets/koi8u.xml:
  Changed header to GPL version 2 only
sql/share/charsets/latin1.xml:
  Changed header to GPL version 2 only
sql/share/charsets/latin2.xml:
  Changed header to GPL version 2 only
sql/share/charsets/latin5.xml:
  Changed header to GPL version 2 only
sql/share/charsets/latin7.xml:
  Changed header to GPL version 2 only
sql/share/charsets/macce.xml:
  Changed header to GPL version 2 only
sql/share/charsets/macroman.xml:
  Changed header to GPL version 2 only
sql/share/charsets/swe7.xml:
  Changed header to GPL version 2 only
sql/sql_view.cc:
  Changed header to GPL version 2 only
sql/sql_view.h:
  Changed header to GPL version 2 only
sql/sql_yacc.yy:
  Changed header to GPL version 2 only
sql/stacktrace.c:
  Changed header to GPL version 2 only
sql/stacktrace.h:
  Changed header to GPL version 2 only
sql/strfunc.cc:
  Changed header to GPL version 2 only
sql/structs.h:
  Changed header to GPL version 2 only
sql/table.cc:
  Changed header to GPL version 2 only
sql/table.h:
  Changed header to GPL version 2 only
sql/thr_malloc.cc:
  Changed header to GPL version 2 only
sql/time.cc:
  Changed header to GPL version 2 only
sql/tzfile.h:
  Changed header to GPL version 2 only
sql/tztime.cc:
  Changed header to GPL version 2 only
sql/tztime.h:
  Changed header to GPL version 2 only
sql/udf_example.c:
  Changed header to GPL version 2 only
sql/uniques.cc:
  Changed header to GPL version 2 only
sql/unireg.cc:
  Changed header to GPL version 2 only
sql/unireg.h:
  Changed header to GPL version 2 only
sql-bench/server-cfg.sh:
  Changed header to GPL version 2 only
sql-bench/test-ATIS.sh:
  Changed header to GPL version 2 only
sql-bench/test-alter-table.sh:
  Changed header to GPL version 2 only
sql-bench/test-big-tables.sh:
  Changed header to GPL version 2 only
sql-bench/test-connect.sh:
  Changed header to GPL version 2 only
sql-bench/test-create.sh:
  Changed header to GPL version 2 only
sql-bench/test-insert.sh:
  Changed header to GPL version 2 only
sql-bench/test-select.sh:
  Changed header to GPL version 2 only
sql-bench/test-transactions.sh:
  Changed header to GPL version 2 only
sql-bench/test-wisconsin.sh:
  Changed header to GPL version 2 only
sql-common/Makefile.am:
  Changed header to GPL version 2 only
sql-common/client.c:
  Changed header to GPL version 2 only
sql-common/my_time.c:
  Changed header to GPL version 2 only
sql-common/my_user.c:
  Changed header to GPL version 2 only
sql-common/pack.c:
  Changed header to GPL version 2 only
strings/Makefile.am:
  Changed header to GPL version 2 only
strings/bchange.c:
  Changed header to GPL version 2 only
strings/bcmp.c:
  Changed header to GPL version 2 only
strings/bcopy-duff.c:
  Changed header to GPL version 2 only
strings/bfill.c:
  Changed header to GPL version 2 only
strings/bmove.c:
  Changed header to GPL version 2 only
strings/bmove512.c:
  Changed header to GPL version 2 only
strings/bmove_upp-sparc.s:
  Changed header to GPL version 2 only
strings/bmove_upp.c:
  Changed header to GPL version 2 only
strings/bzero.c:
  Changed header to GPL version 2 only
strings/conf_to_src.c:
  Changed header to GPL version 2 only
strings/ctype-big5.c:
  Changed header to GPL version 2 only
strings/ctype-bin.c:
  Changed header to GPL version 2 only
strings/ctype-cp932.c:
  Changed header to GPL version 2 only
strings/ctype-czech.c:
  Changed header to GPL version 2 only
strings/ctype-euc_kr.c:
  Changed header to GPL version 2 only
strings/ctype-eucjpms.c:
  Changed header to GPL version 2 only
strings/ctype-gb2312.c:
  Changed header to GPL version 2 only
strings/ctype-gbk.c:
  Changed header to GPL version 2 only
strings/ctype-latin1.c:
  Changed header to GPL version 2 only
strings/ctype-mb.c:
  Changed header to GPL version 2 only
strings/ctype-simple.c:
  Changed header to GPL version 2 only
strings/ctype-sjis.c:
  Changed header to GPL version 2 only
strings/ctype-tis620.c:
  Changed header to GPL version 2 only
strings/ctype-uca.c:
  Changed header to GPL version 2 only
strings/ctype-ucs2.c:
  Changed header to GPL version 2 only
strings/ctype-ujis.c:
  Changed header to GPL version 2 only
strings/ctype-utf8.c:
  Changed header to GPL version 2 only
strings/ctype-win1250ch.c:
  Changed header to GPL version 2 only
strings/ctype.c:
  Changed header to GPL version 2 only
strings/decimal.c:
  Changed header to GPL version 2 only
strings/do_ctype.c:
  Changed header to GPL version 2 only
strings/int2str.c:
  Changed header to GPL version 2 only
strings/is_prefix.c:
  Changed header to GPL version 2 only
strings/llstr.c:
  Changed header to GPL version 2 only
strings/longlong2str-x86.s:
  Changed header to GPL version 2 only
strings/longlong2str.c:
  Changed header to GPL version 2 only
strings/longlong2str_asm.c:
  Changed header to GPL version 2 only
strings/macros.asm:
  Changed header to GPL version 2 only
strings/memcmp.c:
  Changed header to GPL version 2 only
strings/memcpy.c:
  Changed header to GPL version 2 only
strings/memset.c:
  Changed header to GPL version 2 only
strings/my_strtoll10-x86.s:
  Changed header to GPL version 2 only
strings/my_strtoll10.c:
  Changed header to GPL version 2 only
strings/my_vsnprintf.c:
  Changed header to GPL version 2 only
strings/ptr_cmp.asm:
  Changed header to GPL version 2 only
strings/r_strinstr.c:
  Changed header to GPL version 2 only
strings/str2int.c:
  Changed header to GPL version 2 only
strings/str_alloc.c:
  Changed header to GPL version 2 only
strings/str_test.c:
  Changed header to GPL version 2 only
strings/strappend-sparc.s:
  Changed header to GPL version 2 only
strings/strappend.c:
  Changed header to GPL version 2 only
strings/strcat.c:
  Changed header to GPL version 2 only
strings/strcend.c:
  Changed header to GPL version 2 only
strings/strchr.c:
  Changed header to GPL version 2 only
strings/strcmp.c:
  Changed header to GPL version 2 only
strings/strcont.c:
  Changed header to GPL version 2 only
strings/strend-sparc.s:
  Changed header to GPL version 2 only
strings/strend.c:
  Changed header to GPL version 2 only
strings/strfill.c:
  Changed header to GPL version 2 only
strings/strings-not-used.h:
  Changed header to GPL version 2 only
strings/strings-x86.s:
  Changed header to GPL version 2 only
strings/strings.asm:
  Changed header to GPL version 2 only
strings/strinstr-sparc.s:
  Changed header to GPL version 2 only
strings/strinstr.c:
  Changed header to GPL version 2 only
strings/strlen.c:
  Changed header to GPL version 2 only
strings/strmake-sparc.s:
  Changed header to GPL version 2 only
strings/strmake.c:
  Changed header to GPL version 2 only
strings/strmov-sparc.s:
  Changed header to GPL version 2 only
strings/strmov.c:
  Changed header to GPL version 2 only
strings/strnlen.c:
  Changed header to GPL version 2 only
strings/strnmov-sparc.s:
  Changed header to GPL version 2 only
strings/strnmov.c:
  Changed header to GPL version 2 only
strings/strrchr.c:
  Changed header to GPL version 2 only
strings/strstr-sparc.s:
  Changed header to GPL version 2 only
strings/strstr.c:
  Changed header to GPL version 2 only
strings/strto.c:
  Changed header to GPL version 2 only
strings/strtol.c:
  Changed header to GPL version 2 only
strings/strtoll.c:
  Changed header to GPL version 2 only
strings/strtoul.c:
  Changed header to GPL version 2 only
strings/strtoull.c:
  Changed header to GPL version 2 only
strings/strxmov-sparc.s:
  Changed header to GPL version 2 only
strings/strxmov.asm:
  Changed header to GPL version 2 only
strings/strxmov.c:
  Changed header to GPL version 2 only
strings/strxnmov.c:
  Changed header to GPL version 2 only
strings/t_ctype.h:
  Changed header to GPL version 2 only
strings/udiv.c:
  Changed header to GPL version 2 only
strings/xml.c:
  Changed header to GPL version 2 only
support-files/MacOSX/Makefile.am:
  Changed header to GPL version 2 only
support-files/Makefile.am:
  Changed header to GPL version 2 only
support-files/MySQL-shared-compat.spec.sh:
  Changed header to GPL version 2 only
tests/Makefile.am:
  Changed header to GPL version 2 only
tests/connect_test.c:
  Changed header to GPL version 2 only
tests/deadlock_test.c:
  Changed header to GPL version 2 only
tests/insert_test.c:
  Changed header to GPL version 2 only
tests/list_test.c:
  Changed header to GPL version 2 only
tests/mysql_client_test.c:
  Changed header to GPL version 2 only
tests/select_test.c:
  Changed header to GPL version 2 only
tests/showdb_test.c:
  Changed header to GPL version 2 only
tests/ssl_test.c:
  Changed header to GPL version 2 only
tests/thread_test.c:
  Changed header to GPL version 2 only
tools/Makefile.am:
  Changed header to GPL version 2 only
tools/mysqlmanager.c:
  Changed header to GPL version 2 only
vio/Makefile.am:
  Changed header to GPL version 2 only
vio/test-ssl.c:
  Changed header to GPL version 2 only
vio/test-sslclient.c:
  Changed header to GPL version 2 only
vio/test-sslserver.c:
  Changed header to GPL version 2 only
vio/vio.c:
  Changed header to GPL version 2 only
vio/vio_priv.h:
  Changed header to GPL version 2 only
vio/viosocket.c:
  Changed header to GPL version 2 only
vio/viossl.c:
  Changed header to GPL version 2 only
vio/viosslfactories.c:
  Changed header to GPL version 2 only
vio/viotest-ssl.c:
  Changed header to GPL version 2 only
win/Makefile.am:
  Changed header to GPL version 2 only
zlib/Makefile.am:
  Changed header to GPL version 2 only
2006-12-23 20:17:15 +01:00
kent@mysql.com/kent-amd64.(none)
226a5c833f Many files:
Changed header to GPL version 2 only
2006-12-23 20:17:15 +01:00
unknown
2e5a6f9eaa Merge neptunus.(none):/home/msvensson/mysql/mysql-5.0
into  neptunus.(none):/home/msvensson/mysql/mysql-5.0-maint


BitKeeper/etc/ignore:
  auto-union
Docs/Makefile.am:
  Auto merged
Makefile.am:
  Auto merged
client/mysql.cc:
  Auto merged
client/mysqltest.c:
  Auto merged
include/Makefile.am:
  Auto merged
myisam/myisampack.c:
  Auto merged
mysql-test/lib/mtr_io.pl:
  Auto merged
mysql-test/lib/mtr_process.pl:
  Auto merged
mysql-test/mysql-test-run.pl:
  Auto merged
mysql-test/r/view_grant.result:
  Auto merged
mysql-test/t/view_grant.test:
  Auto merged
sql/handler.cc:
  Auto merged
sql/item.cc:
  Auto merged
sql/item_func.cc:
  Auto merged
sql/item_func.h:
  Auto merged
sql/item_timefunc.cc:
  Auto merged
sql/mysql_priv.h:
  Auto merged
sql/mysqld.cc:
  Auto merged
sql/sp.cc:
  Auto merged
sql/sql_base.cc:
  Auto merged
sql-common/my_time.c:
  Auto merged
sql/sql_handler.cc:
  Auto merged
extra/yassl/taocrypt/include/algebra.hpp:
  Manual merge with import of upstream yaSSL
2006-12-04 19:28:38 +01:00