refine view defination related to all_virtaul_core_column_table

This commit is contained in:
obdev
2024-02-21 07:18:54 +00:00
committed by ob-robot
parent 90b48170df
commit 26ff5053cd
5 changed files with 467 additions and 507 deletions

File diff suppressed because one or more lines are too long

View File

@ -160,7 +160,7 @@ int ObInnerTableSchema::dba_tab_col_statistics_schema(ObTableSchema &table_schem
table_schema.set_collation_type(ObCharset::get_default_collation(ObCharset::get_default_charset()));
if (OB_SUCC(ret)) {
if (OB_FAIL(table_schema.set_view_definition(R"__(SELECT cast(db.database_name as CHAR(128)) as OWNER, cast(t.table_name as CHAR(128)) as TABLE_NAME, cast(c.column_name as CHAR(128)) as COLUMN_NAME, cast(stat.distinct_cnt as NUMBER) as NUM_DISTINCT, cast(stat.min_value as CHAR(128)) as LOW_VALUE, cast(stat.max_value as CHAR(128)) as HIGH_VALUE, cast(stat.density as NUMBER) as DENSITY, cast(stat.null_cnt as NUMBER) as NUM_NULLS, cast(stat.bucket_cnt as NUMBER) as NUM_BUCKETS, cast(stat.last_analyzed as DATETIME(6)) as LAST_ANALYZED, cast(stat.sample_size as NUMBER) as SAMPLE_SIZE, CAST((CASE stat.GLOBAL_STATS WHEN 0 THEN 'NO' WHEN 1 THEN 'YES' ELSE NULL END) AS CHAR(3)) AS GLOBAL_STATS, CAST((CASE stat.USER_STATS WHEN 0 THEN 'NO' WHEN 1 THEN 'YES' ELSE NULL END) AS CHAR(3)) AS USER_STATS, cast(NULL as CHAR(80)) as NOTES, cast(stat.avg_len as NUMBER) as AVG_COL_LEN, cast((case when stat.histogram_type = 1 then 'FREQUENCY' when stat.histogram_type = 3 then 'TOP-FREQUENCY' when stat.histogram_type = 4 then 'HYBRID' else NULL end) as CHAR(15)) as HISTOGRAM, cast(NULL as CHAR(7)) SCOPE FROM (SELECT CAST(0 AS SIGNED) AS TENANT_ID, DATABASE_ID, TABLE_ID, TABLE_NAME FROM oceanbase.__all_virtual_core_all_table WHERE TENANT_ID = EFFECTIVE_TENANT_ID() UNION ALL SELECT TENANT_ID, database_id, table_id, table_name FROM oceanbase.__all_table where table_type in (0,2,3,6,14) and table_mode >> 12 & 15 in (0,1)) t JOIN oceanbase.__all_database db ON db.tenant_id = t.tenant_id AND db.database_id = t.database_id and t.tenant_id = 0 JOIN (SELECT CAST(0 AS SIGNED) AS TENANT_ID, TABLE_ID, COLUMN_ID, COLUMN_NAME, IS_HIDDEN FROM oceanbase.__all_virtual_core_column_table WHERE TENANT_ID = EFFECTIVE_TENANT_ID() UNION ALL SELECT TENANT_ID, TABLE_ID, COLUMN_ID, COLUMN_NAME, IS_HIDDEN FROM oceanbase.__all_column) c ON c.tenant_id = t.tenant_id AND c.table_id = t.table_id left join oceanbase.__all_column_stat stat ON c.table_id = stat.table_id AND c.column_id = stat.column_id AND stat.object_type = 1 WHERE c.is_hidden = 0 )__"))) {
if (OB_FAIL(table_schema.set_view_definition(R"__(SELECT cast(db.database_name as CHAR(128)) as OWNER, cast(tc.table_name as CHAR(128)) as TABLE_NAME, cast(tc.column_name as CHAR(128)) as COLUMN_NAME, cast(stat.distinct_cnt as NUMBER) as NUM_DISTINCT, cast(stat.min_value as CHAR(128)) as LOW_VALUE, cast(stat.max_value as CHAR(128)) as HIGH_VALUE, cast(stat.density as NUMBER) as DENSITY, cast(stat.null_cnt as NUMBER) as NUM_NULLS, cast(stat.bucket_cnt as NUMBER) as NUM_BUCKETS, cast(stat.last_analyzed as DATETIME(6)) as LAST_ANALYZED, cast(stat.sample_size as NUMBER) as SAMPLE_SIZE, CAST((CASE stat.GLOBAL_STATS WHEN 0 THEN 'NO' WHEN 1 THEN 'YES' ELSE NULL END) AS CHAR(3)) AS GLOBAL_STATS, CAST((CASE stat.USER_STATS WHEN 0 THEN 'NO' WHEN 1 THEN 'YES' ELSE NULL END) AS CHAR(3)) AS USER_STATS, cast(NULL as CHAR(80)) as NOTES, cast(stat.avg_len as NUMBER) as AVG_COL_LEN, cast((case when stat.histogram_type = 1 then 'FREQUENCY' when stat.histogram_type = 3 then 'TOP-FREQUENCY' when stat.histogram_type = 4 then 'HYBRID' else NULL end) as CHAR(15)) as HISTOGRAM, cast(NULL as CHAR(7)) SCOPE FROM (SELECT CAST(0 AS SIGNED) AS TENANT_ID, t.DATABASE_ID, t.TABLE_ID, t.TABLE_NAME, c.COLUMN_ID, c.COLUMN_NAME, c.IS_HIDDEN FROM oceanbase.__all_virtual_core_all_table t, oceanbase.__all_virtual_core_column_table c WHERE t.TENANT_ID = EFFECTIVE_TENANT_ID() and c.TENANT_ID = EFFECTIVE_TENANT_ID() and c.tenant_id = t.tenant_id AND c.table_id = t.table_id UNION ALL SELECT t.TENANT_ID, t.database_id, t.table_id, t.table_name, c.COLUMN_ID, c.COLUMN_NAME, c.IS_HIDDEN FROM oceanbase.__all_table t, oceanbase.__all_column c where t.table_type in (0,2,3,6,14) and t.table_mode >> 12 & 15 in (0,1) and c.tenant_id = t.tenant_id and c.table_id = t.table_id) tc JOIN oceanbase.__all_database db ON db.tenant_id = tc.tenant_id AND db.database_id = tc.database_id and tc.tenant_id = 0 left join oceanbase.__all_column_stat stat ON tc.table_id = stat.table_id AND tc.column_id = stat.column_id AND stat.object_type = 1 WHERE tc.is_hidden = 0 )__"))) {
LOG_ERROR("fail to set view_definition", K(ret));
}
}

File diff suppressed because one or more lines are too long

View File

@ -1060,7 +1060,7 @@ int ObInnerTableSchema::all_tab_col_statistics_ora_schema(ObTableSchema &table_s
table_schema.set_collation_type(ObCharset::get_default_collation(ObCharset::get_default_charset()));
if (OB_SUCC(ret)) {
if (OB_FAIL(table_schema.set_view_definition(R"__(select cast(db.database_name as VARCHAR2(128)) as OWNER, cast(t.table_name as VARCHAR2(128)) as TABLE_NAME, cast(c.column_name as VARCHAR2(128)) as COLUMN_NAME, cast(stat.distinct_cnt as NUMBER) as NUM_DISTINCT, cast(stat.min_value as varchar(128)) as LOW_VALUE, cast(stat.max_value as varchar(128)) as HIGH_VALUE, cast(stat.density as NUMBER) as DENSITY, cast(stat.null_cnt as NUMBER) as NUM_NULLS, cast(stat.bucket_cnt as NUMBER) as NUM_BUCKETS, cast(stat.last_analyzed as DATE) as LAST_ANALYZED, cast(stat.sample_size as NUMBER) as SAMPLE_SIZE, CAST(decode(stat.GLOBAL_STATS, 0, 'NO', 1, 'YES', NULL) AS VARCHAR2(3)) AS GLOBAL_STATS, CAST(decode(stat.USER_STATS, 0, 'NO', 1, 'YES', NULL) AS VARCHAR2(3)) AS USER_STATS, cast(NULL as VARCHAR2(80)) as NOTES, cast(stat.avg_len as NUMBER) as AVG_COL_LEN, cast((case when stat.histogram_type = 1 then 'FREQUENCY' when stat.histogram_type = 3 then 'TOP-FREQUENCY' when stat.histogram_type = 4 then 'HYBRID' else NULL end) as VARCHAR2(15)) as HISTOGRAM, cast(NULL as VARCHAR2(7)) SCOPE FROM (SELECT TENANT_ID, DATABASE_ID, TABLE_ID, TABLE_NAME FROM SYS.ALL_VIRTUAL_CORE_ALL_TABLE UNION ALL SELECT TENANT_ID, DATABASE_ID, TABLE_ID, TABLE_NAME FROM SYS.ALL_VIRTUAL_TABLE_REAL_AGENT WHERE table_type in (0,2,3,8,9,14) AND bitand((TABLE_MODE / 4096), 15) IN (0,1)) t JOIN SYS.ALL_VIRTUAL_DATABASE_REAL_AGENT db ON db.tenant_id = t.tenant_id AND db.database_id = t.database_id AND (t.database_id = userenv('SCHEMAID') OR user_can_access_obj(1, t.table_id, t.database_id) = 1) AND T.TENANT_ID = EFFECTIVE_TENANT_ID() AND DB.TENANT_ID = EFFECTIVE_TENANT_ID() JOIN (SELECT TENANT_ID, TABLE_ID, COLUMN_ID, COLUMN_NAME, IS_HIDDEN FROM SYS.ALL_VIRTUAL_CORE_COLUMN_TABLE UNION ALL SELECT TENANT_ID, TABLE_ID, COLUMN_ID, COLUMN_NAME, IS_HIDDEN FROM SYS.ALL_VIRTUAL_COLUMN_REAL_AGENT WHERE TENANT_ID = EFFECTIVE_TENANT_ID()) c ON c.tenant_id = t.tenant_id AND c.table_id = t.table_id LEFT JOIN SYS.ALL_VIRTUAL_COLUMN_STAT_REAL_AGENT stat ON c.table_id = stat.table_id AND c.column_id = stat.column_id AND stat.object_type = 1 WHERE c.is_hidden = 0; )__"))) {
if (OB_FAIL(table_schema.set_view_definition(R"__(select cast(db.database_name as VARCHAR2(128)) as OWNER, cast(TC.table_name as VARCHAR2(128)) as TABLE_NAME, cast(TC.column_name as VARCHAR2(128)) as COLUMN_NAME, cast(stat.distinct_cnt as NUMBER) as NUM_DISTINCT, cast(stat.min_value as varchar(128)) as LOW_VALUE, cast(stat.max_value as varchar(128)) as HIGH_VALUE, cast(stat.density as NUMBER) as DENSITY, cast(stat.null_cnt as NUMBER) as NUM_NULLS, cast(stat.bucket_cnt as NUMBER) as NUM_BUCKETS, cast(stat.last_analyzed as DATE) as LAST_ANALYZED, cast(stat.sample_size as NUMBER) as SAMPLE_SIZE, CAST(decode(stat.GLOBAL_STATS, 0, 'NO', 1, 'YES', NULL) AS VARCHAR2(3)) AS GLOBAL_STATS, CAST(decode(stat.USER_STATS, 0, 'NO', 1, 'YES', NULL) AS VARCHAR2(3)) AS USER_STATS, cast(NULL as VARCHAR2(80)) as NOTES, cast(stat.avg_len as NUMBER) as AVG_COL_LEN, cast((case when stat.histogram_type = 1 then 'FREQUENCY' when stat.histogram_type = 3 then 'TOP-FREQUENCY' when stat.histogram_type = 4 then 'HYBRID' else NULL end) as VARCHAR2(15)) as HISTOGRAM, cast(NULL as VARCHAR2(7)) SCOPE FROM (SELECT T.TENANT_ID, T.DATABASE_ID, T.TABLE_ID, T.TABLE_NAME, C.COLUMN_ID, C.COLUMN_NAME, C.IS_HIDDEN FROM SYS.ALL_VIRTUAL_CORE_ALL_TABLE T, SYS.ALL_VIRTUAL_CORE_COLUMN_TABLE C WHERE C.tenant_id = T.tenant_id AND C.table_id = T.table_id AND T.TENANT_ID = EFFECTIVE_TENANT_ID() UNION ALL SELECT T.TENANT_ID, T.DATABASE_ID, T.TABLE_ID, T.TABLE_NAME, C.COLUMN_ID, C.COLUMN_NAME, C.IS_HIDDEN FROM SYS.ALL_VIRTUAL_TABLE_REAL_AGENT T, SYS.ALL_VIRTUAL_COLUMN_REAL_AGENT C WHERE table_type in (0,2,3,8,9,14) AND bitand((TABLE_MODE / 4096), 15) IN (0,1) AND C.TENANT_ID = EFFECTIVE_TENANT_ID() AND T.TENANT_ID = EFFECTIVE_TENANT_ID() AND C.tenant_id = T.tenant_id AND C.table_id = T.table_id) TC JOIN SYS.ALL_VIRTUAL_DATABASE_REAL_AGENT db ON db.tenant_id = TC.tenant_id AND db.database_id = TC.database_id AND (TC.database_id = userenv('SCHEMAID') OR user_can_access_obj(1, TC.table_id, TC.database_id) = 1) AND DB.TENANT_ID = EFFECTIVE_TENANT_ID() LEFT JOIN SYS.ALL_VIRTUAL_COLUMN_STAT_REAL_AGENT stat ON TC.table_id = stat.table_id AND TC.column_id = stat.column_id AND stat.object_type = 1 WHERE TC.is_hidden = 0; )__"))) {
LOG_ERROR("fail to set view_definition", K(ret));
}
}
@ -1110,7 +1110,7 @@ int ObInnerTableSchema::dba_tab_col_statistics_ora_schema(ObTableSchema &table_s
table_schema.set_collation_type(ObCharset::get_default_collation(ObCharset::get_default_charset()));
if (OB_SUCC(ret)) {
if (OB_FAIL(table_schema.set_view_definition(R"__(select cast(db.database_name as VARCHAR2(128)) as OWNER, cast(t.table_name as VARCHAR2(128)) as TABLE_NAME, cast(c.column_name as VARCHAR2(128)) as COLUMN_NAME, cast(stat.distinct_cnt as NUMBER) as NUM_DISTINCT, cast(stat.min_value as varchar(128)) as LOW_VALUE, cast(stat.max_value as varchar(128)) as HIGH_VALUE, cast(stat.density as NUMBER) as DENSITY, cast(stat.null_cnt as NUMBER) as NUM_NULLS, cast(stat.bucket_cnt as NUMBER) as NUM_BUCKETS, cast(stat.last_analyzed as DATE) as LAST_ANALYZED, cast(stat.sample_size as NUMBER) as SAMPLE_SIZE, CAST(decode(stat.GLOBAL_STATS, 0, 'NO', 1, 'YES', NULL) AS VARCHAR2(3)) AS GLOBAL_STATS, CAST(decode(stat.USER_STATS, 0, 'NO', 1, 'YES', NULL) AS VARCHAR2(3)) AS USER_STATS, cast(NULL as VARCHAR2(80)) as NOTES, cast(stat.avg_len as NUMBER) as AVG_COL_LEN, cast((case when stat.histogram_type = 1 then 'FREQUENCY' when stat.histogram_type = 3 then 'TOP-FREQUENCY' when stat.histogram_type = 4 then 'HYBRID' else NULL end) as VARCHAR2(15)) as HISTOGRAM, cast(NULL as VARCHAR2(7)) SCOPE FROM (SELECT TENANT_ID, DATABASE_ID, TABLE_ID, TABLE_NAME FROM SYS.ALL_VIRTUAL_CORE_ALL_TABLE UNION ALL SELECT TENANT_ID, DATABASE_ID, TABLE_ID, TABLE_NAME FROM SYS.ALL_VIRTUAL_TABLE_REAL_AGENT WHERE table_type in (0,2,3,8,9,14) AND bitand((TABLE_MODE / 4096), 15) IN (0,1)) t JOIN SYS.ALL_VIRTUAL_DATABASE_REAL_AGENT db ON db.tenant_id = t.tenant_id AND db.database_id = t.database_id AND t.TENANT_ID = EFFECTIVE_TENANT_ID() AND DB.TENANT_ID = EFFECTIVE_TENANT_ID() JOIN (SELECT TENANT_ID, TABLE_ID, COLUMN_ID, COLUMN_NAME, IS_HIDDEN FROM SYS.ALL_VIRTUAL_CORE_COLUMN_TABLE UNION ALL SELECT TENANT_ID, TABLE_ID, COLUMN_ID, COLUMN_NAME, IS_HIDDEN FROM SYS.ALL_VIRTUAL_COLUMN_REAL_AGENT WHERE TENANT_ID = EFFECTIVE_TENANT_ID()) c ON c.tenant_id = t.tenant_id AND c.table_id = t.table_id LEFT JOIN SYS.ALL_VIRTUAL_COLUMN_STAT_REAL_AGENT stat ON c.table_id = stat.table_id AND c.column_id = stat.column_id AND stat.object_type = 1 WHERE c.is_hidden = 0; )__"))) {
if (OB_FAIL(table_schema.set_view_definition(R"__(select cast(db.database_name as VARCHAR2(128)) as OWNER, cast(TC.table_name as VARCHAR2(128)) as TABLE_NAME, cast(TC.column_name as VARCHAR2(128)) as COLUMN_NAME, cast(stat.distinct_cnt as NUMBER) as NUM_DISTINCT, cast(stat.min_value as varchar(128)) as LOW_VALUE, cast(stat.max_value as varchar(128)) as HIGH_VALUE, cast(stat.density as NUMBER) as DENSITY, cast(stat.null_cnt as NUMBER) as NUM_NULLS, cast(stat.bucket_cnt as NUMBER) as NUM_BUCKETS, cast(stat.last_analyzed as DATE) as LAST_ANALYZED, cast(stat.sample_size as NUMBER) as SAMPLE_SIZE, CAST(decode(stat.GLOBAL_STATS, 0, 'NO', 1, 'YES', NULL) AS VARCHAR2(3)) AS GLOBAL_STATS, CAST(decode(stat.USER_STATS, 0, 'NO', 1, 'YES', NULL) AS VARCHAR2(3)) AS USER_STATS, cast(NULL as VARCHAR2(80)) as NOTES, cast(stat.avg_len as NUMBER) as AVG_COL_LEN, cast((case when stat.histogram_type = 1 then 'FREQUENCY' when stat.histogram_type = 3 then 'TOP-FREQUENCY' when stat.histogram_type = 4 then 'HYBRID' else NULL end) as VARCHAR2(15)) as HISTOGRAM, cast(NULL as VARCHAR2(7)) SCOPE FROM (SELECT T.TENANT_ID, T.DATABASE_ID, T.TABLE_ID, T.TABLE_NAME, C.COLUMN_ID, C.COLUMN_NAME, C.IS_HIDDEN FROM SYS.ALL_VIRTUAL_CORE_ALL_TABLE T, SYS.ALL_VIRTUAL_CORE_COLUMN_TABLE C WHERE C.tenant_id = T.tenant_id AND C.table_id = T.table_id AND T.TENANT_ID = EFFECTIVE_TENANT_ID() UNION ALL SELECT T.TENANT_ID, T.DATABASE_ID, T.TABLE_ID, T.TABLE_NAME, C.COLUMN_ID, C.COLUMN_NAME, C.IS_HIDDEN FROM SYS.ALL_VIRTUAL_TABLE_REAL_AGENT T, SYS.ALL_VIRTUAL_COLUMN_REAL_AGENT C WHERE table_type in (0,2,3,8,9,14) AND bitand((TABLE_MODE / 4096), 15) IN (0,1) AND C.TENANT_ID = EFFECTIVE_TENANT_ID() AND T.TENANT_ID = EFFECTIVE_TENANT_ID() AND C.tenant_id = T.tenant_id AND C.table_id = T.table_id) TC JOIN SYS.ALL_VIRTUAL_DATABASE_REAL_AGENT db ON db.tenant_id = TC.tenant_id AND db.database_id = TC.database_id AND DB.TENANT_ID = EFFECTIVE_TENANT_ID() LEFT JOIN SYS.ALL_VIRTUAL_COLUMN_STAT_REAL_AGENT stat ON TC.table_id = stat.table_id AND TC.column_id = stat.column_id AND stat.object_type = 1 WHERE TC.is_hidden = 0; )__"))) {
LOG_ERROR("fail to set view_definition", K(ret));
}
}

File diff suppressed because it is too large Load Diff