51 lines
1.4 KiB
SQL
51 lines
1.4 KiB
SQL
delimiter |;
|
|
CREATE PROCEDURE oj_schema_mod_ndb(db varchar(64))
|
|
BEGIN
|
|
|
|
declare tabname varchar(255);
|
|
declare indextype varchar(32);
|
|
declare _unique varchar(16);
|
|
declare done integer default 0;
|
|
declare cnt integer default 0;
|
|
declare c cursor for
|
|
SELECT table_name
|
|
FROM INFORMATION_SCHEMA.TABLES where table_schema = db;
|
|
declare continue handler for not found set done = 1;
|
|
|
|
open c;
|
|
|
|
repeat
|
|
fetch c into tabname;
|
|
if not done then
|
|
set cnt = cnt+1;
|
|
## Modify primary key & partition for some tables
|
|
if ((cnt%3) = 0) then
|
|
set @ddl = CONCAT('ALTER TABLE ', db, '.', tabname, ' PARTITION BY KEY(col_int)');
|
|
select @ddl;
|
|
PREPARE stmt from @ddl;
|
|
EXECUTE stmt;
|
|
|
|
elseif ((cnt%5) = 0) then
|
|
set @ddl = CONCAT('ALTER TABLE ', db, '.', tabname, ' PARTITION BY KEY(pk)');
|
|
select @ddl;
|
|
PREPARE stmt from @ddl;
|
|
EXECUTE stmt;
|
|
|
|
elseif ((cnt%7) = 0) then
|
|
set @ddl = CONCAT('ALTER TABLE ', db, '.', tabname, ' PARTITION BY KEY(col_char_16)');
|
|
select @ddl;
|
|
PREPARE stmt from @ddl;
|
|
EXECUTE stmt;
|
|
|
|
elseif ((cnt%11) = 0) then
|
|
set @ddl = CONCAT('ALTER TABLE ', db, '.', tabname, ' PARTITION BY KEY(col_varchar_256)');
|
|
select @ddl;
|
|
PREPARE stmt from @ddl;
|
|
EXECUTE stmt;
|
|
end if;
|
|
end if;
|
|
until done end repeat;
|
|
close c;
|
|
END
|
|
\G
|