1
0
mirror of https://github.com/MariaDB/server.git synced 2025-05-05 16:59:35 +03:00

1077 Commits

Author SHA1 Message Date
tomas@poseidon.ndb.mysql.com
5a46fbfbd8 Bug #17499 continued
- moved initialization of used_partitions
- more tests

+ removed reference to fixed bugs
2006-02-28 17:51:27 +01:00
unknown
46fc76534a Bug #17701, ALTER TABLE t1 ADD PARTITION for PARTITION BY LIST hangs test
- code wrongly tries to do a "fast alter partition", although not supported


sql/handler.h:
  moved defines
sql/sql_partition.h:
  moved defines
2006-02-28 12:29:50 +01:00
tomas@poseidon.ndb.mysql.com
81479bde6a Bug #17701, ALTER TABLE t1 ADD PARTITION for PARTITION BY LIST hangs test
- code wrongly tries to do a "fast alter partition", although not supported
2006-02-28 12:29:50 +01:00
unknown
7cac0ddfd0 WL#2977 and WL#2712 global and session-level variable to set the binlog format (row/statement),
and new binlog format called "mixed" (which is statement-based except if only row-based is correct,
in this cset it means if UDF or UUID is used; more cases could be added in later 5.1 release):
SET GLOBAL|SESSION BINLOG_FORMAT=row|statement|mixed|default;
the global default is statement unless cluster is enabled (then it's row) as in 5.1-alpha.
It's not possible to use SET on this variable if a session is currently in row-based mode and has open temporary tables (because CREATE
TEMPORARY TABLE was not binlogged so temp table is not known on slave),  or if NDB is enabled (because
NDB does not support such change on-the-fly, though it will later), of if in a stored function (see below).
The added tests test the possibility or impossibility to SET, their effects, and the mixed mode,
including in prepared statements and in stored procedures and functions.
Caveats:
a) The mixed mode will not work for stored functions: in mixed mode, a stored function will
always be binlogged as one call and in a statement-based way (e.g. INSERT VALUES(myfunc()) or SELECT myfunc()).
b) for the same reason, changing the thread's binlog format inside a stored function is
refused with an error message.
c) the same problems apply to triggers; implementing b) for triggers will be done later (will ask
Dmitri).
Additionally, as the binlog format is now changeable by each user for his session, I remove the implication
which was done at startup, where row-based automatically set log-bin-trust-routine-creators to 1
(not possible anymore as a user can now switch to stmt-based and do nasty things again), and automatically
set --innodb-locks-unsafe-for-binlog to 1 (was anyway theoretically incorrect as it disabled
phantom protection).
Plus fixes for compiler warnings.


mysql-test/r/rpl_row_4_bytes.result:
  update
mysql-test/t/rpl_row_4_bytes.test:
  don't influence next tests
sql/ha_archive.cc:
  please pay attention to this structure when you change it...
sql/ha_berkeley.cc:
  please pay attention to this structure when you change it...
sql/ha_blackhole.cc:
  please pay attention to this structure when you change it...
sql/ha_federated.cc:
  please pay attention to this structure when you change it...
sql/ha_heap.cc:
  please pay attention to this structure when you change it...
sql/ha_innodb.cc:
  please pay attention to this structure when you change it...
sql/ha_myisam.cc:
  please pay attention to this structure when you change it...
sql/ha_myisammrg.cc:
  please pay attention to this structure when you change it...
sql/ha_ndbcluster_binlog.cc:
  no more global 'binlog_row_based'
sql/ha_partition.cc:
  please pay attention to this structure when you change it...
sql/handler.cc:
  please pay attention to this structure when you change it...
sql/handler.h:
  it's good to initialize statically (to get no compiler warning) even if to a null value.
sql/item_func.cc:
  UDFs require row-based if this is the "mixed" binlog format.
sql/item_strfunc.cc:
  UUID() requires row-based binlogging if this is the "mixed" binlog format
sql/log.cc:
  binlog_row_based -> thd->current_stmt_binlog_row_based
sql/log.h:
  the enum enum_binlog_format moves to log.h from mysqld.cc as we need it in several places.
sql/log_event.cc:
  binlog_row_based -> thd->current_stmt_binlog_row_based
sql/log_event.h:
  this global variable not used anymore
sql/mysql_priv.h:
  these global variables not used anymore
sql/mysqld.cc:
  simplification in the handling of --binlog-format (but with no user-visible change), thanks to
  the new global system variable.
  RBR does not anymore turn on --log-bin-trust-function-creators and --innodb-locks-unsafe-for-binlog
  as these are global options and RBR is now settable per session.
sql/partition_info.cc:
  compiler warnings
sql/set_var.cc:
  new class of thread's variable, to handle the binlog_format (like sys_var_thd_enum except
  that is_readonly() is overriden for more checks before update).
  compiler warnings (ok'd by Serg)
sql/set_var.h:
  new class for the thread's binlog_format (see set_var.cc)
sql/share/errmsg.txt:
  some messages for when one can't toggle from one binlog format to another
sql/sp_head.cc:
  binlog_row_based -> thd->current_stmt_binlog_row_based
sql/sql_base.cc:
  binlog_row_based -> thd->current_stmt_binlog_row_based
sql/sql_class.cc:
  When a THD is initialized, we set its current_stmt_binlog_row_based
sql/sql_class.h:
  new THD::variables.binlog_format (the value of the session variable set by SET
  or inherited from the global value), and THD::current_stmt_binlog_row_based which tells if the
  current statement does row-based or statement-based binlogging. Both members are needed
  as the 2nd one cannot be derived only from the first one (the statement's type plays a role too),
  and the 1st one is needed to reset the 2nd one.
sql/sql_delete.cc:
  binlog_row_based -> thd->current_stmt_binlog_row_based
sql/sql_insert.cc:
  binlog_row_based -> thd->current_stmt_binlog_row_based
sql/sql_load.cc:
  binlog_row_based -> thd->current_stmt_binlog_row_based.
sql/sql_parse.cc:
  when we are done with a statement, we reset the current_stmt_binlog_row_based to the value
  derived from THD::variables.binlog_format.
sql/sql_partition.cc:
  compiler warning
sql/sql_show.cc:
  compiler warning
sql/sql_table.cc:
  binlog_row_based -> thd->current_stmt_binlog_row_based
tests/mysql_client_test.c:
  compiler warning
mysql-test/r/ndb_binlog_basic2.result:
  new result
mysql-test/r/rpl_switch_stm_row_mixed.result:
  new result
mysql-test/t/ndb_binlog_basic2.test:
  new test to verify that if cluster is enabled, can't change binlog format on the fly.
mysql-test/t/rpl_switch_stm_row_mixed.test:
  test to see if one can switch between SBR, RBR, and "mixed" mode, and when one cannot,
  and test to see if the switching, and the mixed mode, work properly (using UUID() to test,
  as using UDFs is not possible in the testsuite for portability reasons).
2006-02-25 22:21:03 +01:00
guilhem@mysql.com
0071749595 WL#2977 and WL#2712 global and session-level variable to set the binlog format (row/statement),
and new binlog format called "mixed" (which is statement-based except if only row-based is correct,
in this cset it means if UDF or UUID is used; more cases could be added in later 5.1 release):
SET GLOBAL|SESSION BINLOG_FORMAT=row|statement|mixed|default;
the global default is statement unless cluster is enabled (then it's row) as in 5.1-alpha.
It's not possible to use SET on this variable if a session is currently in row-based mode and has open temporary tables (because CREATE
TEMPORARY TABLE was not binlogged so temp table is not known on slave),  or if NDB is enabled (because
NDB does not support such change on-the-fly, though it will later), of if in a stored function (see below).
The added tests test the possibility or impossibility to SET, their effects, and the mixed mode,
including in prepared statements and in stored procedures and functions.
Caveats:
a) The mixed mode will not work for stored functions: in mixed mode, a stored function will
always be binlogged as one call and in a statement-based way (e.g. INSERT VALUES(myfunc()) or SELECT myfunc()).
b) for the same reason, changing the thread's binlog format inside a stored function is
refused with an error message.
c) the same problems apply to triggers; implementing b) for triggers will be done later (will ask
Dmitri).
Additionally, as the binlog format is now changeable by each user for his session, I remove the implication
which was done at startup, where row-based automatically set log-bin-trust-routine-creators to 1
(not possible anymore as a user can now switch to stmt-based and do nasty things again), and automatically
set --innodb-locks-unsafe-for-binlog to 1 (was anyway theoretically incorrect as it disabled
phantom protection).
Plus fixes for compiler warnings.
2006-02-25 22:21:03 +01:00
unknown
a9dab911a4 BUG# 17430 Partitoins: crash on SELECT * FROM t1 WHERE f_int1 IS NULL
BUG# 17432: Partitions: wrong result, SELECT ... WHERE <column> is null


mysql-test/r/partition.result:
  result block for tests
mysql-test/t/partition.test:
  test cases for bug #17432 and 17430
sql/sql_partition.cc:
  improve null handling by returning LONGLONG_MIN for values that are NULL
2006-02-24 10:10:41 -06:00
reggie@linux.site
52fbc7a1cd BUG# 17430 Partitoins: crash on SELECT * FROM t1 WHERE f_int1 IS NULL
BUG# 17432: Partitions: wrong result, SELECT ... WHERE <column> is null
2006-02-24 10:10:41 -06:00
unknown
b2cf86f1bd BUG #15408 - Partitions: subpartition names are not unique
libmysqld/Makefile.am:
  changed name to partition_info.cc
mysql-test/r/partition_mgm_err.result:
  added drop table for previous test
mysql-test/t/partition_mgm_err.test:
  added drop table for previous test
sql/Makefile.am:
  reformatted a bit
  changed name of partition_info.cpp to partition_info.cc
sql/partition_element.h:
  updated copyright date
sql/partition_info.cc:
  minor corrections as a result of review
sql/partition_info.h:
  updated copyright date
sql/sql_partition.cc:
  updated file comment and fixed some spacing
sql/sql_partition.h:
  updated copyright date
win/cmakefiles/sql:
  changed name to partition_info.cc
2006-02-21 17:40:07 -06:00
reggie@linux.site
cb10b77c31 BUG #15408 - Partitions: subpartition names are not unique 2006-02-21 17:40:07 -06:00
unknown
1154609c39 Merge c-9a08e253.1238-1-64736c10.cust.bredbandsbolaget.se:/home/pappa/mysql-5.1-bugs
into  c-9a08e253.1238-1-64736c10.cust.bredbandsbolaget.se:/home/pappa/wl2826


configure.in:
  Auto merged
sql/ha_ndbcluster.cc:
  Auto merged
sql/ha_ndbcluster.h:
  Auto merged
sql/handler.h:
  Auto merged
sql/mysql_priv.h:
  Auto merged
sql/mysqld.cc:
  Auto merged
sql/set_var.cc:
  Auto merged
sql/sql_base.cc:
  Auto merged
sql/sql_class.cc:
  Auto merged
sql/sql_class.h:
  Auto merged
sql/sql_partition.cc:
  Auto merged
sql/sql_table.cc:
  Auto merged
sql/sql_yacc.yy:
  Auto merged
sql/table.cc:
  Auto merged
dbug/dbug.c:
  Manual merge
include/my_dbug.h:
  Manual merge
sql/ha_heap.cc:
  Manual merge
sql/ha_myisammrg.cc:
  Manual merge
sql/ha_partition.cc:
  Manual merge
sql/log.cc:
  Manual merge
sql/share/errmsg.txt:
  Manual merge
2006-02-20 16:41:46 -05:00
pappa@c-9a08e253.1238-1-64736c10.cust.bredbandsbolaget.se
dd17f48630 Merge c-9a08e253.1238-1-64736c10.cust.bredbandsbolaget.se:/home/pappa/mysql-5.1-bugs
into  c-9a08e253.1238-1-64736c10.cust.bredbandsbolaget.se:/home/pappa/wl2826
2006-02-20 16:41:46 -05:00
unknown
5b6c6c49b8 WL 2826: Error handling of ALTER TABLE for partitioning
Bug fixes


sql/ha_partition.cc:
  Bug fixes
sql/sql_partition.cc:
  Bug fixes
sql/sql_table.cc:
  Bug fixes
2006-02-20 16:22:19 -05:00
pappa@c-9a08e253.1238-1-64736c10.cust.bredbandsbolaget.se
d42757f87e WL 2826: Error handling of ALTER TABLE for partitioning
Bug fixes
2006-02-20 16:22:19 -05:00
unknown
de717a9962 WL 2826: Error handling of ALTER TABLE for partitioning
Fix compiler issues


sql/ha_heap.cc:
  Fix compiler warnings
sql/ha_myisammrg.cc:
  Fix compiler warnings
sql/log.cc:
  Fix compiler warnings
sql/sql_partition.cc:
  Fix compiler issues
sql/sql_table.cc:
  Fix compiler issues
2006-02-20 15:07:03 -05:00
pappa@c-9a08e253.1238-1-64736c10.cust.bredbandsbolaget.se
6ee7ab8aa3 WL 2826: Error handling of ALTER TABLE for partitioning
Fix compiler issues
2006-02-20 15:07:03 -05:00
unknown
fc5f022ee1 BUG# 15408 Partitions: subpartition names are not unique
THis patch goes along with 1.2098.23.1 to form the complete patch


libmysqld/Makefile.am:
  added partition_info.cpp   to libmysqld sources
sql/ha_ndbcluster.cc:
  using the new member versions of these
sql/sql_partition.cc:
  using the member version of is_sub_partitioned
2006-02-16 15:02:44 -06:00
reggie@linux.site
1527e94fc8 BUG# 15408 Partitions: subpartition names are not unique
THis patch goes along with 1.2098.23.1 to form the complete patch
2006-02-16 15:02:44 -06:00
unknown
8270eb50e4 Merge reggie@192.168.0.9:/home/reggie/work/mysql-5.1-bug15408
into  big_geek.:C:/Work/mysql/mysql-5.1-bug15408


sql/ha_partition.cc:
  Auto merged
sql/opt_range.cc:
  Auto merged
sql/sql_partition.cc:
  Auto merged
sql/sql_show.cc:
  Auto merged
sql/handler.h:
  merging changes into my partition code reorg
2006-02-16 11:07:21 -06:00
reggie@big_geek.
3ce0880d3f Merge reggie@192.168.0.9:/home/reggie/work/mysql-5.1-bug15408
into  big_geek.:C:/Work/mysql/mysql-5.1-bug15408
2006-02-16 11:07:21 -06:00
unknown
d047fe77b7 BUG#15408: Partitions: subpartition names are not unique
Also, moved some of the code out of handler.h and into partition specific files for better 
separation.
Also, moved some of the C funcs into partition_info as formal C++ methods


mysql-test/r/partition_mgm_err.result:
  result block for test of bug # 15408
mysql-test/t/partition_mgm_err.test:
  test for duplicate subpartition names
sql/Makefile.am:
  adding sql_partition.h, partition_info.cpp, partition_info.h, and partition_element.h to the makefile
sql/ha_partition.cc:
  using the new members of partition_info
sql/ha_partition.h:
  using the new members of partition_info
sql/handler.h:
  moved this code into sql_partition.h
sql/mysql_priv.h:
  including sql_partition.h also now
sql/opt_range.cc:
  using the new members of partition_info
sql/sql_partition.cc:
  moved some of the functions out and into the partition_info class
  using the new members of partition_info
sql/sql_show.cc:
  using the new members of partition_info
win/cmakefiles/sql:
  added partition_info.cpp to the sql cmake file
sql/partition_element.h:
  New BitKeeper file ``sql/partition_element.h''
sql/partition_info.h:
  New BitKeeper file ``sql/partition_info.h''
sql/sql_partition.h:
  New BitKeeper file ``sql/sql_partition.h''
2006-02-16 10:38:33 -06:00
reggie@big_geek.
466a5bb399 BUG#15408: Partitions: subpartition names are not unique
Also, moved some of the code out of handler.h and into partition specific files for better 
separation.
Also, moved some of the C funcs into partition_info as formal C++ methods
2006-02-16 10:38:33 -06:00
unknown
f52e37ada8 WL 2826: Error handling of ALTER TABLE for partitioning
Final part of the error handling of ALTER TABLE for partitioning


sql/sql_partition.cc:
  Final part of the error handling of ALTER TABLE for partitioning
2006-02-15 14:05:15 +01:00
mikron@mikael-ronstr-ms-dator.local
b856931987 WL 2826: Error handling of ALTER TABLE for partitioning
Final part of the error handling of ALTER TABLE for partitioning
2006-02-15 14:05:15 +01:00
unknown
f8b27ebb54 Merge mskold@bk-internal.mysql.com:/home/bk/mysql-5.1-new
into  mysql.com:/usr/local/home/marty/MySQL/mysql-5.1-work


sql/sql_partition.cc:
  Auto merged
2006-02-15 12:52:30 +01:00
mskold@mysql.com
5e4df23c96 Merge mskold@bk-internal.mysql.com:/home/bk/mysql-5.1-new
into  mysql.com:/usr/local/home/marty/MySQL/mysql-5.1-work
2006-02-15 12:52:30 +01:00
unknown
aa796cab7d Fix for bug#16907 Partitions: crash, SELECT goes into last partition, UNIQUE INDEX
In presense of subpartitioning use get_part_partition_id() to calculate part_id
2006-02-15 14:34:51 +04:00
gluh@eagle.intranet.mysql.r18.ru
544a1a98a5 Fix for bug#16907 Partitions: crash, SELECT goes into last partition, UNIQUE INDEX
In presense of subpartitioning use get_part_partition_id() to calculate part_id
2006-02-15 14:34:51 +04:00
unknown
0c8d763e81 Merge mskold@bk-internal.mysql.com:/home/bk/mysql-5.1-new
into  mysql.com:/usr/local/home/marty/MySQL/mysql-5.1-work


sql/sql_partition.cc:
  Auto merged
2006-02-15 11:19:45 +01:00
mskold@mysql.com
64aa3861a4 Merge mskold@bk-internal.mysql.com:/home/bk/mysql-5.1-new
into  mysql.com:/usr/local/home/marty/MySQL/mysql-5.1-work
2006-02-15 11:19:45 +01:00
unknown
e20cbe27de WL 2826: Error handling of ALTER TABLE for partitioning
Started writing detailed error handler of
ALTER TABLE for partitioning.
Philosophical issue, should one always attempt to make recovery
automatic or should one rely on manual means also.


sql/mysql_priv.h:
  Flag to ensure we can't be killed in a very critical spot
sql/sql_base.cc:
  Flag to ensure we can't be killed in a very critical spot
sql/sql_partition.cc:
  Started writing detailed error handler of
  ALTER TABLE for partitioning.
  Philosophical issue, should one always attempt to make recovery
  automatic or should one rely on manual means also.
2006-02-15 11:08:08 +01:00
mikron@c-6b09e253.1238-1-64736c10.cust.bredbandsbolaget.se
be8a2ae4be WL 2826: Error handling of ALTER TABLE for partitioning
Started writing detailed error handler of
ALTER TABLE for partitioning.
Philosophical issue, should one always attempt to make recovery
automatic or should one rely on manual means also.
2006-02-15 11:08:08 +01:00
unknown
76374fe564 Fix for bug#16901 Partitions: crash, SELECT, column of part. function=first column of primary key
use part_info->no_subparts to calculate partition range in case of subpartitions


mysql-test/r/partition.result:
  Fix for bug#16901 Partitions: crash, SELECT, column of part. function=first column of primary key
    test case
mysql-test/t/partition.test:
  Fix for bug#16901 Partitions: crash, SELECT, column of part. function=first column of primary key
    test case
2006-02-15 13:42:43 +04:00
gluh@eagle.intranet.mysql.r18.ru
00fc4cabe5 Fix for bug#16901 Partitions: crash, SELECT, column of part. function=first column of primary key
use part_info->no_subparts to calculate partition range in case of subpartitions
2006-02-15 13:42:43 +04:00
unknown
c8db62f64c WL 2826: Error handling of ALTER TABLE for partitioning
Some more error handling


sql/sql_partition.cc:
  Some more error handling
2006-02-14 17:03:47 +01:00
mikron@c-ba0ae253.1238-1-64736c10.cust.bredbandsbolaget.se
26c645d185 WL 2826: Error handling of ALTER TABLE for partitioning
Some more error handling
2006-02-14 17:03:47 +01:00
unknown
bd30fa15b8 Post-review fix (WL#2987) 2006-02-14 16:50:51 +01:00
mskold@mysql.com
dafc2c7aad Post-review fix (WL#2987) 2006-02-14 16:50:51 +01:00
unknown
5cecd1734e WL 2826: Error handling of ALTER TABLE for partitioning
First step for handling errors in ALTER TABLE for partitioning


sql/ha_partition.cc:
  First step for handling errors in ALTER TABLE for partitioning
sql/sql_partition.cc:
  First step for handling errors in ALTER TABLE for partitioning
sql/sql_table.cc:
  First step for handling errors in ALTER TABLE for partitioning
2006-02-14 14:22:21 +01:00
mikron@mikael-ronstr-ms-dator.local
aec1c506a5 WL 2826: Error handling of ALTER TABLE for partitioning
First step for handling errors in ALTER TABLE for partitioning
2006-02-14 14:22:21 +01:00
unknown
897dd4794d WL 2826: Error handling of ALTER TABLE for partitioning
Added action code for recovery


sql/mysql_priv.h:
  Added entry in table log struct
sql/sql_partition.cc:
  Some renames to replace
sql/sql_table.cc:
  Added action code for recovery
2006-02-14 11:08:58 +01:00
mikron@mikael-ronstr-ms-dator.local
5b99026ac7 WL 2826: Error handling of ALTER TABLE for partitioning
Added action code for recovery
2006-02-14 11:08:58 +01:00
unknown
5d5eba2d33 WL 2826: Error handling of ALTER TABLE for partitioning
Introduce log entry to handle replace of frm file


sql/handler.h:
  Introduce log entry to handle replace of frm file
sql/sql_partition.cc:
  Introduce log entry to handle replace of frm file
sql/sql_table.cc:
  Introduce log entry to handle replace of frm file
2006-02-13 13:52:23 +01:00
mikron@mikael-ronstr-ms-dator.local
5a20f2d0b4 WL 2826: Error handling of ALTER TABLE for partitioning
Introduce log entry to handle replace of frm file
2006-02-13 13:52:23 +01:00
unknown
b517dbf718 Compile fixes 2006-02-11 00:41:52 -05:00
pappa@c-9a08e253.1238-1-64736c10.cust.bredbandsbolaget.se
12647d736b Compile fixes 2006-02-11 00:41:52 -05:00
unknown
c6d1dee7e3 WL 2826: Error handling of ALTER TABLE for partitioning
Make lots of fixes to handle the most complex case of reorganising
of partitions where two-phased processes are needed in some cases.


sql/ha_partition.cc:
  Rewrote the rename partitions and drop partitions to align with how
  the table log handles things.
sql/handler.h:
  Added new entry to partition_element to keep track of log entry for
  a partition during ALTER TABLE that reorganises existing partitions.
sql/mysql_priv.h:
  Converted 'd', 'e' and so forth to constants with somewhat more
  descriptive names
  Added method to inactivate log entries
sql/sql_partition.cc:
  Fix change of partitions
sql/sql_table.cc:
  More constants with somewhat descriptive names
  Moved around some methods between internal part and external part
  Added new method to handle inactivation of log entries
2006-02-10 22:36:01 +01:00
mikron@c-370be253.1238-1-64736c10.cust.bredbandsbolaget.se
10c5b8f3ba WL 2826: Error handling of ALTER TABLE for partitioning
Make lots of fixes to handle the most complex case of reorganising
of partitions where two-phased processes are needed in some cases.
2006-02-10 22:36:01 +01:00
unknown
d830e2b40e Added partition pruning checks (WL#2987) 2006-02-10 17:06:24 +01:00
mskold@mysql.com
5c2c52b0cb Added partition pruning checks (WL#2987) 2006-02-10 17:06:24 +01:00
unknown
2287cee693 WL 2826: Error handling of ALTER TABLE for partitioning
New function to set exec_log_entry
Moving code outside lock of table log
Fixing some initialisations of list reference to avoid
releasing wrong parts


sql/sql_partition.cc:
  New function to set exec_log_entry
  Moving code outside lock of table log
  Fixing some initialisations of list reference to avoid
  releasing wrong parts
sql/sql_table.cc:
  Initialisation of write_header needed
2006-02-10 12:30:51 +01:00