[CP] implement system view user_users in oracle mode

This commit is contained in:
yinyj17 2023-11-30 05:11:42 +00:00 committed by ob-robot
parent e57016f91a
commit 17ceeb8c92
5 changed files with 129 additions and 11 deletions

View File

@ -410,7 +410,7 @@ int ObInnerTableSchema::dba_users_schema(ObTableSchema &table_schema)
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 B.USER_NAME AS USERNAME, B.USER_ID AS USERID, B.PASSWD AS PASSWORD, CAST(CASE WHEN B.IS_LOCKED = 1 THEN 'LOCKED' ELSE 'OPEN' END as VARCHAR2(30)) AS ACCOUNT_STATUS, CAST(NULL as DATE) AS LOCK_DATE, CAST(NULL as DATE) AS EXPIRY_DATE, CAST(NULL as VARCHAR2(30)) AS DEFAULT_TABLESPACE, CAST(NULL as VARCHAR2(30)) AS TEMPORARY_TABLESPACE, CAST(B.GMT_CREATE AS DATE) AS CREATED, CAST(NULL as VARCHAR2(30)) AS INITIAL_RSRC_CONSUMER_GROUP, CAST(NULL as VARCHAR2(4000)) AS EXTERNAL_NAME FROM SYS.ALL_VIRTUAL_USER_REAL_AGENT B WHERE B.TYPE = 0 AND B.TENANT_ID = EFFECTIVE_TENANT_ID() )__"))) {
if (OB_FAIL(table_schema.set_view_definition(R"__( SELECT B.USER_NAME AS USERNAME, B.USER_ID AS USERID, B.PASSWD AS PASSWORD, CAST(CASE WHEN B.IS_LOCKED = 1 THEN 'LOCKED' ELSE 'OPEN' END as VARCHAR2(32)) AS ACCOUNT_STATUS, CAST(NULL as DATE) AS LOCK_DATE, CAST(NULL as DATE) AS EXPIRY_DATE, CAST(NULL as VARCHAR2(30)) AS DEFAULT_TABLESPACE, CAST(NULL as VARCHAR2(30)) AS TEMPORARY_TABLESPACE, CAST(NULL as VARCHAR2(30)) AS LOCAL_TEMP_TABLESPACE, CAST(B.GMT_CREATE AS DATE) AS CREATED, CAST(NVL(P.PROFILE_NAME, 'DEFAULT') AS VARCHAR2(128)) AS PROFILE, CAST(NULL as VARCHAR2(30)) AS INITIAL_RSRC_CONSUMER_GROUP, CAST(NULL as VARCHAR2(4000)) AS EXTERNAL_NAME, CAST(NULL as VARCHAR2(12)) AS PASSWORD_VERSIONS, CAST('N' as VARCHAR2(1)) AS EDITIONS_ENABLED, CAST('PASSWORD' as VARCHAR2(8)) AS AUTHENTICATION_TYPE, CAST('N' as VARCHAR2(1)) AS PROXY_ONLY_CONNECT, CAST('NO' as VARCHAR2(3)) AS COMMON, CAST(NULL as TIMESTAMP(9) WITH TIME ZONE) AS LAST_LOGIN, CAST('N' as VARCHAR2(1)) AS ORACLE_MAINTAINED, CAST('NO' as VARCHAR2(3)) AS INHERITED, CAST('USING_NLS_COMP' as VARCHAR2(100)) AS DEFAULT_COLLATION, CAST('NO' as VARCHAR2(3)) AS IMPLICIT, CAST('NO' as VARCHAR2(3)) AS ALL_SHARD, CAST(B.PASSWORD_LAST_CHANGED AS DATE) AS PASSWORD_CHANGE_DATE FROM SYS.ALL_VIRTUAL_USER_REAL_AGENT B LEFT JOIN SYS.ALL_VIRTUAL_TENANT_PROFILE_REAL_AGENT P ON B.TENANT_ID = P.TENANT_ID AND B.PROFILE_ID = P.PROFILE_ID WHERE B.TYPE = 0 AND B.TENANT_ID = EFFECTIVE_TENANT_ID() )__"))) {
LOG_ERROR("fail to set view_definition", K(ret));
}
}
@ -460,7 +460,7 @@ int ObInnerTableSchema::all_users_schema(ObTableSchema &table_schema)
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 B.USER_NAME AS USERNAME, B.USER_ID AS USERID, CAST(B.GMT_CREATE AS DATE) AS CREATED FROM SYS.ALL_VIRTUAL_USER_REAL_AGENT B WHERE B.TYPE = 0 AND B.TENANT_ID = EFFECTIVE_TENANT_ID() )__"))) {
if (OB_FAIL(table_schema.set_view_definition(R"__( SELECT B.USER_NAME AS USERNAME, B.USER_ID AS USERID, CAST(B.GMT_CREATE AS DATE) AS CREATED, CAST('NO' as VARCHAR2(3)) AS COMMON, CAST('N' as VARCHAR2(1)) AS ORACLE_MAINTAINED, CAST('NO' as VARCHAR2(3)) AS INHERITED, CAST('USING_NLS_COMP' as VARCHAR2(100)) AS DEFAULT_COLLATION, CAST('NO' as VARCHAR2(3)) AS IMPLICIT, CAST('NO' as VARCHAR2(3)) AS ALL_SHARD FROM SYS.ALL_VIRTUAL_USER_REAL_AGENT B WHERE B.TYPE = 0 AND B.TENANT_ID = EFFECTIVE_TENANT_ID() )__"))) {
LOG_ERROR("fail to set view_definition", K(ret));
}
}

View File

@ -625,6 +625,56 @@ int ObInnerTableSchema::dba_ob_import_table_task_history_ora_schema(ObTableSchem
return ret;
}
int ObInnerTableSchema::user_users_schema(ObTableSchema &table_schema)
{
int ret = OB_SUCCESS;
uint64_t column_id = OB_APP_MIN_COLUMN_ID - 1;
//generated fields:
table_schema.set_tenant_id(OB_SYS_TENANT_ID);
table_schema.set_tablegroup_id(OB_INVALID_ID);
table_schema.set_database_id(OB_ORA_SYS_DATABASE_ID);
table_schema.set_table_id(OB_USER_USERS_TID);
table_schema.set_rowkey_split_pos(0);
table_schema.set_is_use_bloomfilter(false);
table_schema.set_progressive_merge_num(0);
table_schema.set_rowkey_column_num(0);
table_schema.set_load_type(TABLE_LOAD_TYPE_IN_DISK);
table_schema.set_table_type(SYSTEM_VIEW);
table_schema.set_index_type(INDEX_TYPE_IS_NOT);
table_schema.set_def_type(TABLE_DEF_TYPE_INTERNAL);
if (OB_SUCC(ret)) {
if (OB_FAIL(table_schema.set_table_name(OB_USER_USERS_TNAME))) {
LOG_ERROR("fail to set table_name", K(ret));
}
}
if (OB_SUCC(ret)) {
if (OB_FAIL(table_schema.set_compress_func_name(OB_DEFAULT_COMPRESS_FUNC_NAME))) {
LOG_ERROR("fail to set compress_func_name", K(ret));
}
}
table_schema.set_part_level(PARTITION_LEVEL_ZERO);
table_schema.set_charset_type(ObCharset::get_default_charset());
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 B.USER_NAME AS USERNAME, B.USER_ID AS USERID, CAST(CASE WHEN B.IS_LOCKED = 1 THEN 'LOCKED' ELSE 'OPEN' END as VARCHAR2(32)) AS ACCOUNT_STATUS, CAST(NULL as DATE) AS LOCK_DATE, CAST(NULL as DATE) AS EXPIRY_DATE, CAST(NULL as VARCHAR2(30)) AS DEFAULT_TABLESPACE, CAST(NULL as VARCHAR2(30)) AS TEMPORARY_TABLESPACE, CAST(NULL as VARCHAR2(30)) AS LOCAL_TEMP_TABLESPACE, CAST(B.GMT_CREATE AS DATE) AS CREATED, CAST(NULL as VARCHAR2(30)) AS INITIAL_RSRC_CONSUMER_GROUP, CAST(NULL as VARCHAR2(4000)) AS EXTERNAL_NAME, CAST('N' as VARCHAR2(1)) AS PROXY_ONLY_CONNECT, CAST('NO' as VARCHAR2(3)) AS COMMON, CAST('N' as VARCHAR2(1)) AS ORACLE_MAINTAINED, CAST('NO' as VARCHAR2(3)) AS INHERITED, CAST('USING_NLS_COMP' as VARCHAR2(100)) AS DEFAULT_COLLATION, CAST('NO' as VARCHAR2(3)) AS IMPLICIT, CAST('NO' as VARCHAR2(3)) AS ALL_SHARD, CAST(B.PASSWORD_LAST_CHANGED AS DATE) AS PASSWORD_CHANGE_DATE FROM SYS.ALL_VIRTUAL_USER_REAL_AGENT B WHERE B.TYPE = 0 AND B.USER_NAME = SYS_CONTEXT('USERENV','CURRENT_USER') AND B.TENANT_ID = EFFECTIVE_TENANT_ID() )__"))) {
LOG_ERROR("fail to set view_definition", K(ret));
}
}
table_schema.set_index_using_type(USING_BTREE);
table_schema.set_row_store_type(ENCODING_ROW_STORE);
table_schema.set_store_format(OB_STORE_FORMAT_DYNAMIC_MYSQL);
table_schema.set_progressive_merge_round(1);
table_schema.set_storage_format_version(3);
table_schema.set_tablet_id(0);
table_schema.set_max_used_column_id(column_id);
return ret;
}
} // end namespace share
} // end namespace oceanbase

View File

@ -1828,6 +1828,7 @@ public:
static int dba_ob_import_table_job_history_ora_schema(share::schema::ObTableSchema &table_schema);
static int dba_ob_import_table_tasks_ora_schema(share::schema::ObTableSchema &table_schema);
static int dba_ob_import_table_task_history_ora_schema(share::schema::ObTableSchema &table_schema);
static int user_users_schema(share::schema::ObTableSchema &table_schema);
static int gv_ob_sql_audit_ora_schema(share::schema::ObTableSchema &table_schema);
static int v_ob_sql_audit_ora_schema(share::schema::ObTableSchema &table_schema);
static int gv_instance_schema(share::schema::ObTableSchema &table_schema);
@ -4360,6 +4361,7 @@ const schema_create_func sys_view_schema_creators [] = {
ObInnerTableSchema::dba_ob_import_table_job_history_ora_schema,
ObInnerTableSchema::dba_ob_import_table_tasks_ora_schema,
ObInnerTableSchema::dba_ob_import_table_task_history_ora_schema,
ObInnerTableSchema::user_users_schema,
ObInnerTableSchema::gv_ob_sql_audit_ora_schema,
ObInnerTableSchema::v_ob_sql_audit_ora_schema,
ObInnerTableSchema::gv_instance_schema,
@ -5856,6 +5858,7 @@ const uint64_t tenant_space_tables [] = {
OB_DBA_OB_IMPORT_TABLE_JOB_HISTORY_ORA_TID,
OB_DBA_OB_IMPORT_TABLE_TASKS_ORA_TID,
OB_DBA_OB_IMPORT_TABLE_TASK_HISTORY_ORA_TID,
OB_USER_USERS_TID,
OB_GV_OB_SQL_AUDIT_ORA_TID,
OB_V_OB_SQL_AUDIT_ORA_TID,
OB_GV_INSTANCE_TID,
@ -8180,6 +8183,7 @@ const char* const tenant_space_table_names [] = {
OB_DBA_OB_IMPORT_TABLE_JOB_HISTORY_ORA_TNAME,
OB_DBA_OB_IMPORT_TABLE_TASKS_ORA_TNAME,
OB_DBA_OB_IMPORT_TABLE_TASK_HISTORY_ORA_TNAME,
OB_USER_USERS_TNAME,
OB_GV_OB_SQL_AUDIT_ORA_TNAME,
OB_V_OB_SQL_AUDIT_ORA_TNAME,
OB_GV_INSTANCE_TNAME,
@ -11624,10 +11628,10 @@ static inline int get_sys_table_lob_aux_schema(const uint64_t tid,
const int64_t OB_CORE_TABLE_COUNT = 4;
const int64_t OB_SYS_TABLE_COUNT = 261;
const int64_t OB_VIRTUAL_TABLE_COUNT = 742;
const int64_t OB_SYS_VIEW_COUNT = 788;
const int64_t OB_SYS_TENANT_TABLE_COUNT = 1796;
const int64_t OB_SYS_VIEW_COUNT = 789;
const int64_t OB_SYS_TENANT_TABLE_COUNT = 1797;
const int64_t OB_CORE_SCHEMA_VERSION = 1;
const int64_t OB_BOOTSTRAP_SCHEMA_VERSION = 1799;
const int64_t OB_BOOTSTRAP_SCHEMA_VERSION = 1800;
} // end namespace share
} // end namespace oceanbase

View File

@ -1564,6 +1564,7 @@ const uint64_t OB_DBA_OB_IMPORT_TABLE_JOBS_ORA_TID = 25264; // "DBA_OB_IMPORT_TA
const uint64_t OB_DBA_OB_IMPORT_TABLE_JOB_HISTORY_ORA_TID = 25265; // "DBA_OB_IMPORT_TABLE_JOB_HISTORY_ORA"
const uint64_t OB_DBA_OB_IMPORT_TABLE_TASKS_ORA_TID = 25266; // "DBA_OB_IMPORT_TABLE_TASKS_ORA"
const uint64_t OB_DBA_OB_IMPORT_TABLE_TASK_HISTORY_ORA_TID = 25267; // "DBA_OB_IMPORT_TABLE_TASK_HISTORY_ORA"
const uint64_t OB_USER_USERS_TID = 25278; // "USER_USERS"
const uint64_t OB_GV_OB_SQL_AUDIT_ORA_TID = 28002; // "GV$OB_SQL_AUDIT_ORA"
const uint64_t OB_V_OB_SQL_AUDIT_ORA_TID = 28003; // "V$OB_SQL_AUDIT_ORA"
const uint64_t OB_GV_INSTANCE_TID = 28004; // "GV$INSTANCE"
@ -3986,6 +3987,7 @@ const char *const OB_DBA_OB_IMPORT_TABLE_JOBS_ORA_TNAME = "DBA_OB_IMPORT_TABLE_J
const char *const OB_DBA_OB_IMPORT_TABLE_JOB_HISTORY_ORA_TNAME = "DBA_OB_IMPORT_TABLE_JOB_HISTORY";
const char *const OB_DBA_OB_IMPORT_TABLE_TASKS_ORA_TNAME = "DBA_OB_IMPORT_TABLE_TASKS";
const char *const OB_DBA_OB_IMPORT_TABLE_TASK_HISTORY_ORA_TNAME = "DBA_OB_IMPORT_TABLE_TASK_HISTORY";
const char *const OB_USER_USERS_TNAME = "USER_USERS";
const char *const OB_GV_OB_SQL_AUDIT_ORA_TNAME = "GV$OB_SQL_AUDIT";
const char *const OB_V_OB_SQL_AUDIT_ORA_TNAME = "V$OB_SQL_AUDIT";
const char *const OB_GV_INSTANCE_TNAME = "GV$INSTANCE";

View File

@ -31900,7 +31900,7 @@ def_table_schema(
)
def_table_schema(
owner = 'xinqi.zlm',
owner = 'sean.yyj',
table_name = 'DBA_USERS',
database_id = 'OB_ORA_SYS_DATABASE_ID',
table_id = '25008',
@ -31914,16 +31914,32 @@ def_table_schema(
B.USER_NAME AS USERNAME,
B.USER_ID AS USERID,
B.PASSWD AS PASSWORD,
CAST(CASE WHEN B.IS_LOCKED = 1 THEN 'LOCKED' ELSE 'OPEN' END as VARCHAR2(30)) AS ACCOUNT_STATUS,
CAST(CASE WHEN B.IS_LOCKED = 1 THEN 'LOCKED' ELSE 'OPEN' END as VARCHAR2(32)) AS ACCOUNT_STATUS,
CAST(NULL as DATE) AS LOCK_DATE,
CAST(NULL as DATE) AS EXPIRY_DATE,
CAST(NULL as VARCHAR2(30)) AS DEFAULT_TABLESPACE,
CAST(NULL as VARCHAR2(30)) AS TEMPORARY_TABLESPACE,
CAST(NULL as VARCHAR2(30)) AS LOCAL_TEMP_TABLESPACE,
CAST(B.GMT_CREATE AS DATE) AS CREATED,
CAST(NVL(P.PROFILE_NAME, 'DEFAULT') AS VARCHAR2(128)) AS PROFILE,
CAST(NULL as VARCHAR2(30)) AS INITIAL_RSRC_CONSUMER_GROUP,
CAST(NULL as VARCHAR2(4000)) AS EXTERNAL_NAME
CAST(NULL as VARCHAR2(4000)) AS EXTERNAL_NAME,
CAST(NULL as VARCHAR2(12)) AS PASSWORD_VERSIONS,
CAST('N' as VARCHAR2(1)) AS EDITIONS_ENABLED,
CAST('PASSWORD' as VARCHAR2(8)) AS AUTHENTICATION_TYPE,
CAST('N' as VARCHAR2(1)) AS PROXY_ONLY_CONNECT,
CAST('NO' as VARCHAR2(3)) AS COMMON,
CAST(NULL as TIMESTAMP(9) WITH TIME ZONE) AS LAST_LOGIN,
CAST('N' as VARCHAR2(1)) AS ORACLE_MAINTAINED,
CAST('NO' as VARCHAR2(3)) AS INHERITED,
CAST('USING_NLS_COMP' as VARCHAR2(100)) AS DEFAULT_COLLATION,
CAST('NO' as VARCHAR2(3)) AS IMPLICIT,
CAST('NO' as VARCHAR2(3)) AS ALL_SHARD,
CAST(B.PASSWORD_LAST_CHANGED AS DATE) AS PASSWORD_CHANGE_DATE
FROM
SYS.ALL_VIRTUAL_USER_REAL_AGENT B
LEFT JOIN SYS.ALL_VIRTUAL_TENANT_PROFILE_REAL_AGENT P
ON B.TENANT_ID = P.TENANT_ID AND B.PROFILE_ID = P.PROFILE_ID
WHERE
B.TYPE = 0
AND B.TENANT_ID = EFFECTIVE_TENANT_ID()
@ -31931,7 +31947,7 @@ def_table_schema(
)
def_table_schema(
owner = 'xinqi.zlm',
owner = 'sean.yyj',
table_name = 'ALL_USERS',
database_id = 'OB_ORA_SYS_DATABASE_ID',
table_id = '25009',
@ -31944,7 +31960,13 @@ def_table_schema(
SELECT
B.USER_NAME AS USERNAME,
B.USER_ID AS USERID,
CAST(B.GMT_CREATE AS DATE) AS CREATED
CAST(B.GMT_CREATE AS DATE) AS CREATED,
CAST('NO' as VARCHAR2(3)) AS COMMON,
CAST('N' as VARCHAR2(1)) AS ORACLE_MAINTAINED,
CAST('NO' as VARCHAR2(3)) AS INHERITED,
CAST('USING_NLS_COMP' as VARCHAR2(100)) AS DEFAULT_COLLATION,
CAST('NO' as VARCHAR2(3)) AS IMPLICIT,
CAST('NO' as VARCHAR2(3)) AS ALL_SHARD
FROM
SYS.ALL_VIRTUAL_USER_REAL_AGENT B
WHERE
@ -48757,7 +48779,47 @@ def_table_schema(
# 25275: DBA_OB_TRANSFER_PARTITION_TASKS
# 25276: DBA_OB_TRANSFER_PARTITION_TASK_HISTORY
# 25277: DBA_WR_SQLTEXT
# 25278: USER_USERS
def_table_schema(
owner = 'sean.yyj',
table_name = 'USER_USERS',
database_id = 'OB_ORA_SYS_DATABASE_ID',
table_id = '25278',
table_type = 'SYSTEM_VIEW',
rowkey_columns = [],
normal_columns = [],
gm_columns = [],
in_tenant_space = True,
view_definition = """
SELECT
B.USER_NAME AS USERNAME,
B.USER_ID AS USERID,
CAST(CASE WHEN B.IS_LOCKED = 1 THEN 'LOCKED' ELSE 'OPEN' END as VARCHAR2(32)) AS ACCOUNT_STATUS,
CAST(NULL as DATE) AS LOCK_DATE,
CAST(NULL as DATE) AS EXPIRY_DATE,
CAST(NULL as VARCHAR2(30)) AS DEFAULT_TABLESPACE,
CAST(NULL as VARCHAR2(30)) AS TEMPORARY_TABLESPACE,
CAST(NULL as VARCHAR2(30)) AS LOCAL_TEMP_TABLESPACE,
CAST(B.GMT_CREATE AS DATE) AS CREATED,
CAST(NULL as VARCHAR2(30)) AS INITIAL_RSRC_CONSUMER_GROUP,
CAST(NULL as VARCHAR2(4000)) AS EXTERNAL_NAME,
CAST('N' as VARCHAR2(1)) AS PROXY_ONLY_CONNECT,
CAST('NO' as VARCHAR2(3)) AS COMMON,
CAST('N' as VARCHAR2(1)) AS ORACLE_MAINTAINED,
CAST('NO' as VARCHAR2(3)) AS INHERITED,
CAST('USING_NLS_COMP' as VARCHAR2(100)) AS DEFAULT_COLLATION,
CAST('NO' as VARCHAR2(3)) AS IMPLICIT,
CAST('NO' as VARCHAR2(3)) AS ALL_SHARD,
CAST(B.PASSWORD_LAST_CHANGED AS DATE) AS PASSWORD_CHANGE_DATE
FROM
SYS.ALL_VIRTUAL_USER_REAL_AGENT B
WHERE
B.TYPE = 0
AND B.USER_NAME = SYS_CONTEXT('USERENV','CURRENT_USER')
AND B.TENANT_ID = EFFECTIVE_TENANT_ID()
""".replace("\n", " ")
)
# 余留位置
#### End Data Dictionary View