注册

do_getTables获取的表不全,不知道是少了哪个权限

DM_383174 2023/05/08 891 11

为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】:8
【操作系统】:kylin
【CPU】:x86_64
【问题描述】*:
通过mybatis-plus代码生成器获取所有的表名,发现获取不到自己自定义模式内的表,通过代码跟踪,跟踪到了达梦JDBC驱动内的这个方法

dm.jdbc.driver.DmdbDatabaseMetaData

public DmdbResultSet do_getTables(String var1, String var2, String var3, String[] var4) {
    if (StringUtil.equals(var2, "")) {
        DBError.ECJDBC_SCHNAME_EMPTYSTRING.throwException(new String[0]);
    }

    if (StringUtil.equals(var3, "")) {
        return null;
    } else {
        String var5 = var2 == null ? "%" : StringUtil.processSingleQuoteOfName(var2);
        String var6 = var3 == null ? "%" : StringUtil.processSingleQuoteOfName(var3);
        StringBuilder var7 = new StringBuilder("");
        var7.append("SELECT /*+ MAX_OPT_N_TABLES(5) */ NULL AS TABLE_CAT,SCHEMAS.NAME AS TABLE_SCHEM,TABS.NAME AS TABLE_NAME, CASE TABS.SUBTYPE$ WHEN 'UTAB' THEN 'TABLE' WHEN 'VIEW' THEN 'VIEW' WHEN 'STAB' THEN 'SYSTEM TABLE' WHEN 'SYNOM' THEN 'SYNONYM' END AS TABLE_TYPE, (SELECT COMMENT$ FROM SYSTABLECOMMENTS WHERE SCHNAME = SCHEMAS.NAME AND TVNAME = TABS.NAME) AS REMARKS, NULL AS TYPE_CAT, NULL AS TYPE_SCHEM, NULL AS TYPE_NAME, NULL AS SELF_REFERENCING_COL_NAME, NULL AS REF_GENERATION ");
        var7.append(" FROM");
        var7.append(this.schemaClause(var5, "SCHEMAS,"));
        var7.append(this.tableClause(var6, var4, "TABS"));
        var7.append(" WHERE TABS.SCHID = SCHEMAS.ID ");
        if (this.hw) {
            var7.append(" AND (SF_CHECK_PRIV_OPT(UID(), CURRENT_USERTYPE(), TABS.ID, -1, -1, TABS.ID) = 1) ");
        }

        var7.append(" ORDER BY TABLE_TYPE ASC,TABLE_SCHEM ASC,TABLE_NAME ASC;");
        return DriverUtil.executeQuery(this.connection, var7.toString());
    }
}

调试后,发现执行了以下SQL,结果集内没有自己自定义的模式和表

SELECT /*+ MAX_OPT_N_TABLES(5) */ NULL AS TABLE_CAT,
SCHEMAS.NAME AS TABLE_SCHEM,
TABS.NAME AS TABLE_NAME, 
CASE TABS.SUBTYPE$ WHEN 'UTAB' THEN 'TABLE' WHEN 'VIEW' THEN 'VIEW' WHEN 'STAB' THEN 'SYSTEM TABLE' WHEN 'SYNOM' THEN 'SYNONYM' END AS TABLE_TYPE, 
(SELECT COMMENT$ FROM SYSTABLECOMMENTS WHERE SCHNAME = SCHEMAS.NAME AND TVNAME = TABS.NAME) AS REMARKS, 
NULL AS TYPE_CAT, 
NULL AS TYPE_SCHEM, 
NULL AS TYPE_NAME, 
NULL AS SELF_REFERENCING_COL_NAME,
 NULL AS REF_GENERATION  FROM(SELECT ID, PID, NAME 
 
 FROM SYS.SYSOBJECTS 
 
 WHERE TYPE$ = 'SCH')SCHEMAS,(SELECT ID, SCHID, SUBTYPE$, NAME FROM SYS.SYSOBJECTS WHERE TYPE$ = 'SCHOBJ' AND((SUBTYPE$='UTAB' AND CAST((INFO3 & 0x00FF & 0x003F) AS INT) not in ( 9, 27, 29, 25, 12,7, 21, 23, 18, 5) )OR SUBTYPE$='VIEW' ))TABS WHERE TABS.SCHID = SCHEMAS.ID  AND (SF_CHECK_PRIV_OPT(UID(), CURRENT_USERTYPE(), TABS.ID, -1, -1, TABS.ID) = 1) 
 ORDER BY TABLE_TYPE ASC,TABLE_SCHEM ASC,TABLE_NAME ASC;
 

结果集里面没有自己自定义的模式和模式下的表,请问这个是因为当前用户少了哪个权限导致的

谢谢

回答 0
暂无回答
扫一扫
联系客服