mirror of
https://github.com/MariaDB/server.git
synced 2025-02-02 12:01:42 +01:00
07e9a6dc2a
partition is corrupt The main problem was that ALTER TABLE t ANALYZE/CHECK/OPTIMIZE/REPAIR PARTITION took another code path (over mysql_alter_table instead of mysql_admin_table) which differs in two ways: 1) alter table opens the tables in a different way than admin tables do resulting in returning with error before it tried the command 2) alter table does not start to send any diagnostic rows to the client which the lower admin functions continue to use -> resulting in assertion crash The fix: Remapped ALTER TABLE t ANALYZE/CHECK/OPTIMIZE/REPAIR PARTITION to use the same code path as ANALYZE/CHECK/OPTIMIZE/REPAIR TABLE t. Adding check in mysql_admin_table to setup the partition list for which partitions that should be used. Partitioned tables will still not work with REPAIR TABLE/PARTITION USE_FRM, since that requires moving partitions to tables, REPAIR TABLE t USE_FRM, and check that the data still fulfills the partitioning function and then move the table back to being a partition. NOTE: I have removed the following functions from the handler interface: analyze_partitions, check_partitions, optimize_partitions, repair_partitions Since they are not longer needed. THIS ALTERS THE STORAGE ENGINE API
120 lines
6.7 KiB
PHP
120 lines
6.7 KiB
PHP
################################################################################
|
|
# inc/partition_alter1.inc #
|
|
# #
|
|
# Purpose: #
|
|
# Execute ALTER ... OPTIMIZE/CHECK/REBUID/ANALYZE statements (maintenance) #
|
|
# #
|
|
#------------------------------------------------------------------------------#
|
|
# Original Author: HH #
|
|
# Original Date: 2006-07-27 #
|
|
# Change Author: #
|
|
# Change Date: #
|
|
# Change: #
|
|
################################################################################
|
|
|
|
--echo
|
|
--echo #========================================================================
|
|
--echo # 1.1.1.12 ALTER TABLE <maintenance> PARTITION
|
|
--echo #========================================================================
|
|
--echo #------------------------------------------------------------------------
|
|
--echo # 1 ALTER ... ANALYZE PARTITION
|
|
--echo #------------------------------------------------------------------------
|
|
--echo # 1.1 ALTER ... ANALYZE PARTITION part_1;
|
|
let $alter= ALTER TABLE t1 ANALYZE PARTITION part_1;
|
|
--source suite/parts/inc/partition_alter_41.inc
|
|
--echo # 1.2 ALTER ... ANALYZE PARTITION part_1,part_2;
|
|
let $alter= ALTER TABLE t1 ANALYZE PARTITION part_1,part_2;
|
|
--source suite/parts/inc/partition_alter_41.inc
|
|
--echo # 1.3 ALTER ... ANALYZE PARTITION part_1,part_2,part_5,part_6,part_10;
|
|
let $alter= ALTER TABLE t1 ANALYZE PARTITION part_1,part_2,part_5,part_6,part_10;
|
|
--source suite/parts/inc/partition_alter_41.inc
|
|
--echo # 1.4 ALTER ... ANALYZE PARTITION part_1,part_1,part_1;
|
|
let $alter= ALTER TABLE t1 ANALYZE PARTITION part_1,part_1,part_1;
|
|
--source suite/parts/inc/partition_alter_41.inc
|
|
--echo # 1.5 ALTER ... ANALYZE PARTITION ALL;
|
|
let $alter= ALTER TABLE t1 ANALYZE PARTITION ALL;
|
|
--source suite/parts/inc/partition_alter_41.inc
|
|
|
|
--echo #------------------------------------------------------------------------
|
|
--echo # 2 ALTER ... CHECK PARTITION
|
|
--echo #------------------------------------------------------------------------
|
|
--echo # 2.1 ALTER ... CHECK PARTITION part_1;
|
|
let $alter= ALTER TABLE t1 CHECK PARTITION part_1;
|
|
--source suite/parts/inc/partition_alter_41.inc
|
|
--echo # 2.2 ALTER ... CHECK PARTITION part_1,part_2;
|
|
let $alter= ALTER TABLE t1 CHECK PARTITION part_1,part_2;
|
|
--source suite/parts/inc/partition_alter_41.inc
|
|
--echo # 2.3 ALTER ... CHECK PARTITION part_1,part_2,part_5,part_6,part_10;
|
|
let $alter= ALTER TABLE t1 CHECK PARTITION part_1,part_2,part_5,part_6,part_10;
|
|
--source suite/parts/inc/partition_alter_41.inc
|
|
--echo # 2.4 ALTER ... CHECK PARTITION part_1,part_1,part_1;
|
|
let $alter= ALTER TABLE t1 CHECK PARTITION part_1,part_1,part_1;
|
|
--source suite/parts/inc/partition_alter_41.inc
|
|
--echo # 2.5 ALTER ... CHECK PARTITION ALL;
|
|
let $alter= ALTER TABLE t1 CHECK PARTITION ALL;
|
|
--source suite/parts/inc/partition_alter_41.inc
|
|
|
|
--echo #------------------------------------------------------------------------
|
|
--echo # 3 ALTER ... OPTIMIZE PARTITION
|
|
--echo #------------------------------------------------------------------------
|
|
--echo # 3.1 ALTER ... OPTIMIZE PARTITION part_1;
|
|
let $alter= ALTER TABLE t1 OPTIMIZE PARTITION part_1;
|
|
--source suite/parts/inc/partition_alter_41.inc
|
|
--echo # 3.2 ALTER ... OPTIMIZE PARTITION part_1,part_2;
|
|
let $alter= ALTER TABLE t1 OPTIMIZE PARTITION part_1,part_2;
|
|
--source suite/parts/inc/partition_alter_41.inc
|
|
--echo # 3.3 ALTER ... OPTIMIZE PARTITION part_1,part_2,part_5,part_6,part_10;
|
|
let $alter= ALTER TABLE t1 OPTIMIZE PARTITION part_1,part_2,part_5,part_6,part_10;
|
|
--source suite/parts/inc/partition_alter_41.inc
|
|
--echo # 3.4 ALTER ... OPTIMIZE PARTITION part_1,part_1,part_1;
|
|
let $alter= ALTER TABLE t1 OPTIMIZE PARTITION part_1,part_1,part_1;
|
|
--source suite/parts/inc/partition_alter_41.inc
|
|
--echo # 3.5 ALTER ... OPTIMIZE PARTITION ALL;
|
|
let $alter= ALTER TABLE t1 OPTIMIZE PARTITION ALL;
|
|
--source suite/parts/inc/partition_alter_41.inc
|
|
|
|
--echo #------------------------------------------------------------------------
|
|
--echo # 4 ALTER ... REBUILD PARTITION
|
|
--echo #------------------------------------------------------------------------
|
|
--echo # 4.1 ALTER ... REBUILD PARTITION part_1;
|
|
let $alter= ALTER TABLE t1 REBUILD PARTITION part_1;
|
|
--source suite/parts/inc/partition_alter_41.inc
|
|
--echo # 4.2 ALTER ... REBUILD PARTITION part_1,part_2;
|
|
let $alter= ALTER TABLE t1 REBUILD PARTITION part_1,part_2;
|
|
--source suite/parts/inc/partition_alter_41.inc
|
|
--echo # 4.3 ALTER ... REBUILD PARTITION part_1,part_2,part_5,part_6,part_10;
|
|
let $alter= ALTER TABLE t1 REBUILD PARTITION part_1,part_2,part_5,part_6,part_10;
|
|
--source suite/parts/inc/partition_alter_41.inc
|
|
--echo # 4.4 ALTER ... REBUILD PARTITION part_1,part_1,part_1;
|
|
let $alter= ALTER TABLE t1 REBUILD PARTITION part_1,part_1,part_1;
|
|
--source suite/parts/inc/partition_alter_41.inc
|
|
--echo # 4.5 ALTER ... REBUILD PARTITION ALL;
|
|
let $alter= ALTER TABLE t1 REBUILD PARTITION ALL;
|
|
--source suite/parts/inc/partition_alter_41.inc
|
|
|
|
--echo #------------------------------------------------------------------------
|
|
--echo # 5 ALTER ... REPAIR PARTITION
|
|
--echo #------------------------------------------------------------------------
|
|
--echo # 5.1 ALTER ... REPAIR PARTITION part_1;
|
|
let $alter= ALTER TABLE t1 REPAIR PARTITION part_1;
|
|
--source suite/parts/inc/partition_alter_41.inc
|
|
--echo # 5.2 ALTER ... REPAIR PARTITION part_1,part_2;
|
|
let $alter= ALTER TABLE t1 REPAIR PARTITION part_1,part_2;
|
|
--source suite/parts/inc/partition_alter_41.inc
|
|
--echo # 5.3 ALTER ... REPAIR PARTITION part_1,part_2,part_5,part_6,part_10;
|
|
let $alter= ALTER TABLE t1 REPAIR PARTITION part_1,part_2,part_5,part_6,part_10;
|
|
--source suite/parts/inc/partition_alter_41.inc
|
|
--echo # 5.4 ALTER ... REPAIR PARTITION part_1,part_1,part_1;
|
|
let $alter= ALTER TABLE t1 REPAIR PARTITION part_1,part_1,part_1;
|
|
--source suite/parts/inc/partition_alter_41.inc
|
|
--echo # 5.5 ALTER ... REPAIR PARTITION ALL;
|
|
let $alter= ALTER TABLE t1 REPAIR PARTITION ALL;
|
|
--source suite/parts/inc/partition_alter_41.inc
|
|
|
|
--echo #------------------------------------------------------------------------
|
|
--echo # 6 ALTER ... REMOVE PARTITIONING
|
|
--echo #------------------------------------------------------------------------
|
|
--echo # 6.1 ALTER ... REMOVE PARTITIONING;
|
|
let $alter= ALTER TABLE t1 REMOVE PARTITIONING;
|
|
--source suite/parts/inc/partition_alter_41.inc
|
|
|