From a94e4d31ced65dd4072c60be972296675ed16e59 Mon Sep 17 00:00:00 2001 From: cqliang1995 Date: Tue, 16 May 2023 13:11:21 +0000 Subject: [PATCH] fix DBA_DB_LINKS and ALL_DB_LINKS error, and fix mysqltest. --- .../ob_inner_table_schema.21401_21450.cpp | 2 +- .../ob_inner_table_schema.25201_25250.cpp | 4 +-- .../inner_table/ob_inner_table_schema_def.py | 34 ++++++++----------- 3 files changed, 18 insertions(+), 22 deletions(-) diff --git a/src/share/inner_table/ob_inner_table_schema.21401_21450.cpp b/src/share/inner_table/ob_inner_table_schema.21401_21450.cpp index 0544fb0a9a..8907001df3 100644 --- a/src/share/inner_table/ob_inner_table_schema.21401_21450.cpp +++ b/src/share/inner_table/ob_inner_table_schema.21401_21450.cpp @@ -710,7 +710,7 @@ int ObInnerTableSchema::dba_db_links_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 convert(B.USER_NAME, char(128)) AS OWNER, convert(A.DBLINK_NAME, char(128)) AS DB_LINK, convert(A.USER_NAME, char(128)) AS USERNAME, convert('', char(128)) AS CREDENTIAL_NAME, convert('', char(128)) AS CREDENTIAL_OWNER, convert(CONCAT_WS(':', A.HOST_IP,convert(A.HOST_PORT, char)), char(2000)) AS HOST, convert(A.GMT_CREATE, datetime) AS CREATED, convert('', char(3)) AS HIDDEN, convert('', char(3)) AS SHARD_INTERNAL, convert('YES', char(3)) AS VALID, convert('', char(3)) AS INTRA_CDB, convert(A.TENANT_NAME, char(128)) AS TENANT_NAME, convert(A.DATABASE_NAME, char(128)) AS DATABASE_NAME, convert(A.REVERSE_TENANT_NAME, char(128)) AS REVERSE_TENANT_NAME, convert(A.CLUSTER_NAME, char(128)) AS CLUSTER_NAME, convert(A.REVERSE_CLUSTER_NAME, char(128)) AS REVERSE_CLUSTER_NAME, convert(A.REVERSE_HOST_IP, char(2000)) AS REVERSE_HOST, A.REVERSE_HOST_PORT AS REVERSE_PORT FROM OCEANBASE.__ALL_DBLINK A, OCEANBASE.__ALL_USER B WHERE A.OWNER_ID = B.USER_ID )__"))) { + if (OB_FAIL(table_schema.set_view_definition(R"__( SELECT convert('PUBLIC', char(128)) AS OWNER, convert(A.DBLINK_NAME, char(128)) AS DB_LINK, convert(A.USER_NAME, char(128)) AS USERNAME, convert('', char(128)) AS CREDENTIAL_NAME, convert('', char(128)) AS CREDENTIAL_OWNER, convert(CONCAT_WS(':', A.HOST_IP,convert(A.HOST_PORT, char)), char(2000)) AS HOST, convert(A.GMT_CREATE, datetime) AS CREATED, convert('', char(3)) AS HIDDEN, convert('', char(3)) AS SHARD_INTERNAL, convert('YES', char(3)) AS VALID, convert('', char(3)) AS INTRA_CDB, convert(A.TENANT_NAME, char(128)) AS TENANT_NAME, convert(A.DATABASE_NAME, char(128)) AS DATABASE_NAME, convert(A.REVERSE_TENANT_NAME, char(128)) AS REVERSE_TENANT_NAME, convert(A.CLUSTER_NAME, char(128)) AS CLUSTER_NAME, convert(A.REVERSE_CLUSTER_NAME, char(128)) AS REVERSE_CLUSTER_NAME, convert(A.REVERSE_HOST_IP, char(2000)) AS REVERSE_HOST, A.REVERSE_HOST_PORT AS REVERSE_PORT FROM OCEANBASE.__ALL_DBLINK A; )__"))) { LOG_ERROR("fail to set view_definition", K(ret)); } } diff --git a/src/share/inner_table/ob_inner_table_schema.25201_25250.cpp b/src/share/inner_table/ob_inner_table_schema.25201_25250.cpp index ae78292569..fae3188ea7 100644 --- a/src/share/inner_table/ob_inner_table_schema.25201_25250.cpp +++ b/src/share/inner_table/ob_inner_table_schema.25201_25250.cpp @@ -1160,7 +1160,7 @@ int ObInnerTableSchema::all_db_links_ora_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 OWNER, A.DBLINK_NAME AS DB_LINK, A.USER_NAME AS USERNAME, CAST('' AS VARCHAR2(128)) AS CREDENTIAL_NAME, CAST('' AS VARCHAR2(128)) AS CREDENTIAL_OWNER, CAST(CASE DRIVER_PROTO WHEN 1 THEN A.CONN_STRING ELSE (A.HOST_IP || ':' || TO_CHAR(A.HOST_PORT)) END AS VARCHAR2(2000))AS HOST, CAST(A.GMT_CREATE AS DATE) AS CREATED, CAST('' AS VARCHAR2(3)) AS HIDDEN, CAST('' AS VARCHAR2(3)) AS SHARD_INTERNAL, CAST('YES' AS VARCHAR2(3)) AS VALID, CAST('' AS VARCHAR2(3)) AS INTRA_CDB, A.TENANT_NAME AS TENANT_NAME, A.REVERSE_TENANT_NAME AS REVERSE_TENANT_NAME, A.CLUSTER_NAME AS CLUSTER_NAME, A.REVERSE_CLUSTER_NAME AS REVERSE_CLUSTER_NAME, A.REVERSE_HOST_IP AS REVERSE_HOST, A.REVERSE_HOST_PORT AS REVERSE_PORT, A.REVERSE_USER_NAME AS REVERSE_USERNAME FROM SYS.ALL_VIRTUAL_DBLINK_REAL_AGENT A, SYS.ALL_VIRTUAL_USER_REAL_AGENT B, SYS.ALL_VIRTUAL_DATABASE_REAL_AGENT DB WHERE A.TENANT_ID = EFFECTIVE_TENANT_ID() AND A.OWNER_ID = B.USER_ID AND B.USER_NAME = DB.DATABASE_NAME AND (DB.DATABASE_ID = USERENV('SCHEMAID') OR USER_CAN_ACCESS_OBJ(1, A.DBLINK_ID, DB.DATABASE_ID) = 1) )__"))) { + if (OB_FAIL(table_schema.set_view_definition(R"__( SELECT CAST('PUBLIC' AS VARCHAR2(128)) AS OWNER, CAST(A.DBLINK_NAME AS VARCHAR2(128)) AS DB_LINK, CAST(A.USER_NAME AS VARCHAR2(128)) AS USERNAME, CAST('' AS VARCHAR2(128)) AS CREDENTIAL_NAME, CAST('' AS VARCHAR2(128)) AS CREDENTIAL_OWNER, CAST(CASE DRIVER_PROTO WHEN 1 THEN A.CONN_STRING ELSE (A.HOST_IP || ':' || TO_CHAR(A.HOST_PORT)) END AS VARCHAR2(2000))AS HOST, CAST(A.GMT_CREATE AS DATE) AS CREATED, CAST('' AS VARCHAR2(3)) AS HIDDEN, CAST('' AS VARCHAR2(3)) AS SHARD_INTERNAL, CAST('YES' AS VARCHAR2(3)) AS VALID, CAST('' AS VARCHAR2(3)) AS INTRA_CDB, A.TENANT_NAME AS TENANT_NAME, A.REVERSE_TENANT_NAME AS REVERSE_TENANT_NAME, A.CLUSTER_NAME AS CLUSTER_NAME, A.REVERSE_CLUSTER_NAME AS REVERSE_CLUSTER_NAME, A.REVERSE_HOST_IP AS REVERSE_HOST, A.REVERSE_HOST_PORT AS REVERSE_PORT, A.REVERSE_USER_NAME AS REVERSE_USERNAME FROM SYS.ALL_VIRTUAL_DBLINK_REAL_AGENT A WHERE A.TENANT_ID = EFFECTIVE_TENANT_ID() AND EXISTS (SELECT 1 from SYS.ALL_VIRTUAL_DATABASE_REAL_AGENT DB WHERE DB.DATABASE_ID = USERENV('SCHEMAID') OR USER_CAN_ACCESS_OBJ(1, A.DBLINK_ID, DB.DATABASE_ID) = 1) )__"))) { LOG_ERROR("fail to set view_definition", K(ret)); } } @@ -1210,7 +1210,7 @@ int ObInnerTableSchema::dba_db_links_ora_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 OWNER, A.DBLINK_NAME AS DB_LINK, A.USER_NAME AS USERNAME, CAST('' AS VARCHAR2(128)) AS CREDENTIAL_NAME, CAST('' AS VARCHAR2(128)) AS CREDENTIAL_OWNER, CAST(CASE DRIVER_PROTO WHEN 1 THEN A.CONN_STRING ELSE (A.HOST_IP || ':' || TO_CHAR(A.HOST_PORT)) END AS VARCHAR2(2000))AS HOST, CAST(A.GMT_CREATE AS DATE) AS CREATED, CAST('' AS VARCHAR2(3)) AS HIDDEN, CAST('' AS VARCHAR2(3)) AS SHARD_INTERNAL, CAST('YES' AS VARCHAR2(3)) AS VALID, CAST('' AS VARCHAR2(3)) AS INTRA_CDB, A.TENANT_NAME AS TENANT_NAME, A.REVERSE_TENANT_NAME AS REVERSE_TENANT_NAME, A.CLUSTER_NAME AS CLUSTER_NAME, A.REVERSE_CLUSTER_NAME AS REVERSE_CLUSTER_NAME, A.REVERSE_HOST_IP AS REVERSE_HOST, A.REVERSE_HOST_PORT AS REVERSE_PORT, A.REVERSE_USER_NAME AS REVERSE_USERNAME FROM SYS.ALL_VIRTUAL_DBLINK_REAL_AGENT A, SYS.ALL_VIRTUAL_USER_REAL_AGENT B WHERE A.TENANT_ID = EFFECTIVE_TENANT_ID() AND A.OWNER_ID = B.USER_ID; )__"))) { + if (OB_FAIL(table_schema.set_view_definition(R"__( SELECT CAST('PUBLIC' AS VARCHAR2(128)) AS OWNER, CAST(A.DBLINK_NAME AS VARCHAR2(128)) AS DB_LINK, CAST(A.USER_NAME AS VARCHAR2(128)) AS USERNAME, CAST('' AS VARCHAR2(128)) AS CREDENTIAL_NAME, CAST('' AS VARCHAR2(128)) AS CREDENTIAL_OWNER, CAST(CASE DRIVER_PROTO WHEN 1 THEN A.CONN_STRING ELSE (A.HOST_IP || ':' || TO_CHAR(A.HOST_PORT)) END AS VARCHAR2(2000))AS HOST, CAST(A.GMT_CREATE AS DATE) AS CREATED, CAST('' AS VARCHAR2(3)) AS HIDDEN, CAST('' AS VARCHAR2(3)) AS SHARD_INTERNAL, CAST('YES' AS VARCHAR2(3)) AS VALID, CAST('' AS VARCHAR2(3)) AS INTRA_CDB, A.TENANT_NAME AS TENANT_NAME, A.REVERSE_TENANT_NAME AS REVERSE_TENANT_NAME, A.CLUSTER_NAME AS CLUSTER_NAME, A.REVERSE_CLUSTER_NAME AS REVERSE_CLUSTER_NAME, A.REVERSE_HOST_IP AS REVERSE_HOST, A.REVERSE_HOST_PORT AS REVERSE_PORT, A.REVERSE_USER_NAME AS REVERSE_USERNAME FROM SYS.ALL_VIRTUAL_DBLINK_REAL_AGENT A WHERE A.TENANT_ID = EFFECTIVE_TENANT_ID(); )__"))) { LOG_ERROR("fail to set view_definition", K(ret)); } } diff --git a/src/share/inner_table/ob_inner_table_schema_def.py b/src/share/inner_table/ob_inner_table_schema_def.py index 884ce1842e..b52e2faa89 100644 --- a/src/share/inner_table/ob_inner_table_schema_def.py +++ b/src/share/inner_table/ob_inner_table_schema_def.py @@ -27185,7 +27185,7 @@ def_table_schema( rowkey_columns = [], view_definition = """ SELECT - convert(B.USER_NAME, char(128)) AS OWNER, + convert('PUBLIC', char(128)) AS OWNER, convert(A.DBLINK_NAME, char(128)) AS DB_LINK, convert(A.USER_NAME, char(128)) AS USERNAME, convert('', char(128)) AS CREDENTIAL_NAME, @@ -27203,9 +27203,7 @@ def_table_schema( convert(A.REVERSE_CLUSTER_NAME, char(128)) AS REVERSE_CLUSTER_NAME, convert(A.REVERSE_HOST_IP, char(2000)) AS REVERSE_HOST, A.REVERSE_HOST_PORT AS REVERSE_PORT - FROM OCEANBASE.__ALL_DBLINK A, - OCEANBASE.__ALL_USER B - WHERE A.OWNER_ID = B.USER_ID + FROM OCEANBASE.__ALL_DBLINK A; """.replace("\n", " "), normal_columns = [ ], @@ -44505,9 +44503,9 @@ def_table_schema( in_tenant_space = True, view_definition = """ SELECT - B.USER_NAME AS OWNER, - A.DBLINK_NAME AS DB_LINK, - A.USER_NAME AS USERNAME, + CAST('PUBLIC' AS VARCHAR2(128)) AS OWNER, + CAST(A.DBLINK_NAME AS VARCHAR2(128)) AS DB_LINK, + CAST(A.USER_NAME AS VARCHAR2(128)) AS USERNAME, CAST('' AS VARCHAR2(128)) AS CREDENTIAL_NAME, CAST('' AS VARCHAR2(128)) AS CREDENTIAL_OWNER, CAST(CASE DRIVER_PROTO WHEN 1 THEN A.CONN_STRING ELSE (A.HOST_IP || ':' || TO_CHAR(A.HOST_PORT)) END AS VARCHAR2(2000))AS HOST, @@ -44523,12 +44521,11 @@ def_table_schema( A.REVERSE_HOST_IP AS REVERSE_HOST, A.REVERSE_HOST_PORT AS REVERSE_PORT, A.REVERSE_USER_NAME AS REVERSE_USERNAME - FROM SYS.ALL_VIRTUAL_DBLINK_REAL_AGENT A, - SYS.ALL_VIRTUAL_USER_REAL_AGENT B, - SYS.ALL_VIRTUAL_DATABASE_REAL_AGENT DB - WHERE A.TENANT_ID = EFFECTIVE_TENANT_ID() AND - A.OWNER_ID = B.USER_ID AND B.USER_NAME = DB.DATABASE_NAME AND - (DB.DATABASE_ID = USERENV('SCHEMAID') OR USER_CAN_ACCESS_OBJ(1, A.DBLINK_ID, DB.DATABASE_ID) = 1) + FROM SYS.ALL_VIRTUAL_DBLINK_REAL_AGENT A + WHERE A.TENANT_ID = EFFECTIVE_TENANT_ID() AND EXISTS (SELECT 1 from + SYS.ALL_VIRTUAL_DATABASE_REAL_AGENT DB + WHERE DB.DATABASE_ID = USERENV('SCHEMAID') + OR USER_CAN_ACCESS_OBJ(1, A.DBLINK_ID, DB.DATABASE_ID) = 1) """.replace("\n", " ") ) @@ -44545,9 +44542,9 @@ def_table_schema( in_tenant_space = True, view_definition = """ SELECT - B.USER_NAME AS OWNER, - A.DBLINK_NAME AS DB_LINK, - A.USER_NAME AS USERNAME, + CAST('PUBLIC' AS VARCHAR2(128)) AS OWNER, + CAST(A.DBLINK_NAME AS VARCHAR2(128)) AS DB_LINK, + CAST(A.USER_NAME AS VARCHAR2(128)) AS USERNAME, CAST('' AS VARCHAR2(128)) AS CREDENTIAL_NAME, CAST('' AS VARCHAR2(128)) AS CREDENTIAL_OWNER, CAST(CASE DRIVER_PROTO WHEN 1 THEN A.CONN_STRING ELSE (A.HOST_IP || ':' || TO_CHAR(A.HOST_PORT)) END AS VARCHAR2(2000))AS HOST, @@ -44563,9 +44560,8 @@ def_table_schema( A.REVERSE_HOST_IP AS REVERSE_HOST, A.REVERSE_HOST_PORT AS REVERSE_PORT, A.REVERSE_USER_NAME AS REVERSE_USERNAME - FROM SYS.ALL_VIRTUAL_DBLINK_REAL_AGENT A, - SYS.ALL_VIRTUAL_USER_REAL_AGENT B - WHERE A.TENANT_ID = EFFECTIVE_TENANT_ID() AND A.OWNER_ID = B.USER_ID; + FROM SYS.ALL_VIRTUAL_DBLINK_REAL_AGENT A + WHERE A.TENANT_ID = EFFECTIVE_TENANT_ID(); """.replace("\n", " ") )