|
| 1 | +-- MySQL view creation script. |
| 2 | +-- Execute with: mysql < views.sql |
| 3 | + |
| 4 | +CREATE OR REPLACE VIEW ALL_PART_KEY_COLUMNS AS |
| 5 | +WITH part_tables AS ( |
| 6 | + SELECT DISTINCT |
| 7 | + TABLE_SCHEMA, |
| 8 | + TABLE_NAME, |
| 9 | + PARTITION_EXPRESSION |
| 10 | + FROM information_schema.PARTITIONS |
| 11 | + WHERE PARTITION_NAME IS NOT NULL |
| 12 | + AND PARTITION_EXPRESSION IS NOT NULL |
| 13 | +), |
| 14 | +key_list AS ( |
| 15 | + SELECT |
| 16 | + TABLE_SCHEMA AS OWNER, |
| 17 | + TABLE_NAME AS NAME, |
| 18 | + TRIM( |
| 19 | + BOTH ')' |
| 20 | + FROM TRIM( |
| 21 | + BOTH '(' |
| 22 | + FROM SUBSTRING_INDEX(PARTITION_EXPRESSION, '(', -1) |
| 23 | + ) |
| 24 | + ) AS key_list |
| 25 | + FROM part_tables |
| 26 | +) |
| 27 | +SELECT |
| 28 | + k.OWNER, |
| 29 | + k.NAME, |
| 30 | + 'TABLE' AS OBJECT_TYPE, |
| 31 | + TRIM(BOTH '`' FROM |
| 32 | + SUBSTRING_INDEX( |
| 33 | + SUBSTRING_INDEX(k.key_list, ',', n.n), |
| 34 | + ',', -1 |
| 35 | + ) |
| 36 | + ) AS COLUMN_NAME, |
| 37 | + n.n AS COLUMN_POSITION |
| 38 | +FROM key_list k |
| 39 | +JOIN ( |
| 40 | + SELECT 1 n UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL |
| 41 | + SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL |
| 42 | + SELECT 7 UNION ALL SELECT 8 |
| 43 | +) n |
| 44 | + ON n.n <= 1 + LENGTH(k.key_list) - LENGTH(REPLACE(k.key_list, ',', '')) |
| 45 | +WHERE k.key_list NOT REGEXP '[()]' |
| 46 | +ORDER BY |
| 47 | + k.OWNER, |
| 48 | + k.NAME, |
| 49 | + COLUMN_POSITION; |
| 50 | + |
| 51 | +CREATE OR REPLACE VIEW ALL_PART_TABLES AS |
| 52 | +SELECT |
| 53 | + TABLE_SCHEMA AS OWNER, |
| 54 | + TABLE_NAME, |
| 55 | + PARTITION_METHOD AS PARTITIONING_TYPE, |
| 56 | + COUNT(DISTINCT PARTITION_NAME) AS PARTITION_COUNT, |
| 57 | + LENGTH(PARTITION_EXPRESSION) - LENGTH(REPLACE(PARTITION_EXPRESSION, ',', '')) + 1 AS PARTITIONING_KEY_COUNT |
| 58 | +FROM information_schema.partitions |
| 59 | +GROUP BY |
| 60 | + TABLE_SCHEMA, |
| 61 | + TABLE_NAME, |
| 62 | + PARTITION_METHOD, |
| 63 | + PARTITION_EXPRESSION; |
| 64 | + |
| 65 | +CREATE OR REPLACE VIEW ALL_TAB_PARTITIONS AS |
| 66 | +SELECT |
| 67 | + TABLE_SCHEMA AS TABLE_OWNER, |
| 68 | + TABLE_NAME, |
| 69 | + PARTITION_NAME, |
| 70 | + MIN(PARTITION_ORDINAL_POSITION) AS PARTITION_POSITION, |
| 71 | + CASE |
| 72 | + WHEN MAX(PARTITION_DESCRIPTION) = 'MAXVALUE' |
| 73 | + THEN 'MAXVALUE' |
| 74 | + ELSE TRIM(BOTH '''' FROM MAX(PARTITION_DESCRIPTION)) |
| 75 | + END AS HIGH_VALUE, |
| 76 | + LENGTH( |
| 77 | + CASE |
| 78 | + WHEN MAX(PARTITION_DESCRIPTION) = 'MAXVALUE' |
| 79 | + THEN 'MAXVALUE' |
| 80 | + ELSE TRIM(BOTH '''' FROM MAX(PARTITION_DESCRIPTION)) |
| 81 | + END |
| 82 | + ) AS HIGH_VALUE_LENGTH, |
| 83 | + MAX(PARTITION_METHOD) AS PARTITIONING_TYPE, |
| 84 | + 1 AS PARTITION_KEY_COUNT |
| 85 | +FROM information_schema.PARTITIONS |
| 86 | +WHERE PARTITION_NAME IS NOT NULL |
| 87 | +GROUP BY |
| 88 | + TABLE_SCHEMA, |
| 89 | + TABLE_NAME, |
| 90 | + PARTITION_NAME; |
0 commit comments