adjust sys view definition to avoid system view modification columns not being able to affect dependent views

This commit is contained in:
obdev
2024-02-22 07:15:40 +00:00
committed by ob-robot
parent 782cd89b27
commit d60aec457f
25 changed files with 2388 additions and 237 deletions

View File

@ -5824,3 +5824,52 @@ EXECUTION_PLAN longtext YES NULL
select /*+QUERY_TIMEOUT(60000000)*/ count(*) as cnt from (select * from oceanbase.DBA_MVREF_STMT_STATS limit 1);
cnt
1
select case cnt when 0 then NULL else 'UNEXPECTED ERROR: It is expected to be an empty set, which means that all GV$ and V$ view column names are defined consistently' end ERROR_INFO from (select /*+no_rewrite*/ count(*) cnt from
(SELECT t.table_name,
group_concat(c.column_name) as column_name_list
FROM oceanbase.__all_table t,
oceanbase.__all_column c
WHERE c.table_id = t.table_id
AND t.table_id > 20000
AND t.table_id < 25000
AND t.table_id != 21342
AND t.object_status = 1
AND t.table_name LIKE 'V$%'
GROUP BY t.table_name) t1
join
(SELECT t.table_name,
group_concat(c.column_name) as column_name_list
FROM oceanbase.__all_table t,
oceanbase.__all_column c
WHERE c.table_id = t.table_id
AND t.table_id > 20000
AND t.table_id < 25000
AND t.table_name LIKE 'GV$%'
GROUP BY t.table_name) t2
on t1.table_name = substr(t2.table_name,2) and t1.column_name_list != t2.column_name_list) T;
ERROR_INFO
NULL
select /*+no_rewrite*/ t1.table_name,t2.table_name from
(SELECT t.table_name,
group_concat(c.column_name) as column_name_list
FROM oceanbase.__all_table t,
oceanbase.__all_column c
WHERE c.table_id = t.table_id
AND t.table_id > 20000
AND t.table_id < 25000
AND t.table_id != 21342
AND t.object_status = 1
AND t.table_name LIKE 'V$%'
GROUP BY t.table_name) t1
join
(SELECT t.table_name,
group_concat(c.column_name) as column_name_list
FROM oceanbase.__all_table t,
oceanbase.__all_column c
WHERE c.table_id = t.table_id
AND t.table_id > 20000
AND t.table_id < 25000
AND t.table_name LIKE 'GV$%'
GROUP BY t.table_name) t2
on t1.table_name = substr(t2.table_name,2) and t1.column_name_list != t2.column_name_list;
table_name table_name

View File

@ -8508,3 +8508,52 @@ EXECUTION_PLAN longtext YES NULL
select /*+QUERY_TIMEOUT(60000000)*/ count(*) as cnt from (select * from oceanbase.DBA_MVREF_STMT_STATS limit 1);
cnt
1
select case cnt when 0 then NULL else 'UNEXPECTED ERROR: It is expected to be an empty set, which means that all GV$ and V$ view column names are defined consistently' end ERROR_INFO from (select /*+no_rewrite*/ count(*) cnt from
(SELECT t.table_name,
group_concat(c.column_name) as column_name_list
FROM oceanbase.__all_table t,
oceanbase.__all_column c
WHERE c.table_id = t.table_id
AND t.table_id > 20000
AND t.table_id < 25000
AND t.table_id != 21342
AND t.object_status = 1
AND t.table_name LIKE 'V$%'
GROUP BY t.table_name) t1
join
(SELECT t.table_name,
group_concat(c.column_name) as column_name_list
FROM oceanbase.__all_table t,
oceanbase.__all_column c
WHERE c.table_id = t.table_id
AND t.table_id > 20000
AND t.table_id < 25000
AND t.table_name LIKE 'GV$%'
GROUP BY t.table_name) t2
on t1.table_name = substr(t2.table_name,2) and t1.column_name_list != t2.column_name_list) T;
ERROR_INFO
NULL
select /*+no_rewrite*/ t1.table_name,t2.table_name from
(SELECT t.table_name,
group_concat(c.column_name) as column_name_list
FROM oceanbase.__all_table t,
oceanbase.__all_column c
WHERE c.table_id = t.table_id
AND t.table_id > 20000
AND t.table_id < 25000
AND t.table_id != 21342
AND t.object_status = 1
AND t.table_name LIKE 'V$%'
GROUP BY t.table_name) t1
join
(SELECT t.table_name,
group_concat(c.column_name) as column_name_list
FROM oceanbase.__all_table t,
oceanbase.__all_column c
WHERE c.table_id = t.table_id
AND t.table_id > 20000
AND t.table_id < 25000
AND t.table_name LIKE 'GV$%'
GROUP BY t.table_name) t2
on t1.table_name = substr(t2.table_name,2) and t1.column_name_list != t2.column_name_list;
table_name table_name

View File

@ -41,3 +41,53 @@ eval select /*+QUERY_TIMEOUT(60000000)*/ IF(count(*) >= 0, 1, 0) from $database_
inc $idx;
}
--disable_warnings
select case cnt when 0 then NULL else 'UNEXPECTED ERROR: It is expected to be an empty set, which means that all GV$ and V$ view column names are defined consistently' end ERROR_INFO from (select /*+no_rewrite*/ count(*) cnt from
(SELECT t.table_name,
group_concat(c.column_name) as column_name_list
FROM oceanbase.__all_table t,
oceanbase.__all_column c
WHERE c.table_id = t.table_id
AND t.table_id > 20000
AND t.table_id < 25000
AND t.table_id != 21342
AND t.object_status = 1
AND t.table_name LIKE 'V$%'
GROUP BY t.table_name) t1
join
(SELECT t.table_name,
group_concat(c.column_name) as column_name_list
FROM oceanbase.__all_table t,
oceanbase.__all_column c
WHERE c.table_id = t.table_id
AND t.table_id > 20000
AND t.table_id < 25000
AND t.table_name LIKE 'GV$%'
GROUP BY t.table_name) t2
on t1.table_name = substr(t2.table_name,2) and t1.column_name_list != t2.column_name_list) T;
select /*+no_rewrite*/ t1.table_name,t2.table_name from
(SELECT t.table_name,
group_concat(c.column_name) as column_name_list
FROM oceanbase.__all_table t,
oceanbase.__all_column c
WHERE c.table_id = t.table_id
AND t.table_id > 20000
AND t.table_id < 25000
AND t.table_id != 21342
AND t.object_status = 1
AND t.table_name LIKE 'V$%'
GROUP BY t.table_name) t1
join
(SELECT t.table_name,
group_concat(c.column_name) as column_name_list
FROM oceanbase.__all_table t,
oceanbase.__all_column c
WHERE c.table_id = t.table_id
AND t.table_id > 20000
AND t.table_id < 25000
AND t.table_name LIKE 'GV$%'
GROUP BY t.table_name) t2
on t1.table_name = substr(t2.table_name,2) and t1.column_name_list != t2.column_name_list;

View File

@ -65,3 +65,54 @@ eval select /*+QUERY_TIMEOUT(60000000)*/ IF(count(*) >= 0, 1, 0) from $database_
inc $idx;
}
connection sys;
#It is expected to be an empty set, which means that all GV$ and V$ view column names are defined consistently.
--disable_warnings
select case cnt when 0 then NULL else 'UNEXPECTED ERROR: It is expected to be an empty set, which means that all GV$ and V$ view column names are defined consistently' end ERROR_INFO from (select /*+no_rewrite*/ count(*) cnt from
(SELECT t.table_name,
group_concat(c.column_name) as column_name_list
FROM oceanbase.__all_table t,
oceanbase.__all_column c
WHERE c.table_id = t.table_id
AND t.table_id > 20000
AND t.table_id < 25000
AND t.table_id != 21342
AND t.object_status = 1
AND t.table_name LIKE 'V$%'
GROUP BY t.table_name) t1
join
(SELECT t.table_name,
group_concat(c.column_name) as column_name_list
FROM oceanbase.__all_table t,
oceanbase.__all_column c
WHERE c.table_id = t.table_id
AND t.table_id > 20000
AND t.table_id < 25000
AND t.table_name LIKE 'GV$%'
GROUP BY t.table_name) t2
on t1.table_name = substr(t2.table_name,2) and t1.column_name_list != t2.column_name_list) T;
select /*+no_rewrite*/ t1.table_name,t2.table_name from
(SELECT t.table_name,
group_concat(c.column_name) as column_name_list
FROM oceanbase.__all_table t,
oceanbase.__all_column c
WHERE c.table_id = t.table_id
AND t.table_id > 20000
AND t.table_id < 25000
AND t.table_id != 21342
AND t.object_status = 1
AND t.table_name LIKE 'V$%'
GROUP BY t.table_name) t1
join
(SELECT t.table_name,
group_concat(c.column_name) as column_name_list
FROM oceanbase.__all_table t,
oceanbase.__all_column c
WHERE c.table_id = t.table_id
AND t.table_id > 20000
AND t.table_id < 25000
AND t.table_name LIKE 'GV$%'
GROUP BY t.table_name) t2
on t1.table_name = substr(t2.table_name,2) and t1.column_name_list != t2.column_name_list;