[CP] [to #52031940] fix(pl): decode collection element in USER_COLL_TYPES
This commit is contained in:
		@ -160,7 +160,7 @@ int ObInnerTableSchema::user_coll_types_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 /*+ USE_MERGE(T, C, D, T1, D1) */       T.TYPE_NAME AS TYPE_NAME,       CAST(         CASE C.UPPER_BOUND         WHEN 0 THEN 'COLLECTION'         ELSE 'TABLE' END AS VARCHAR2(10)) AS COLL_TYPE,       C.UPPER_BOUND AS UPPER_BOUND,       CAST(NULL AS VARCHAR2(7)) AS ELEM_TYPE_MOD,       CAST(         CASE BITAND(C.PROPERTIES, 15)         WHEN 3 THEN NULL         ELSE d1.DATABASE_NAME END AS VARCHAR2(128)) AS ELEM_TYPE_OWNER,       CAST(         CASE BITAND(C.PROPERTIES, 15)         WHEN 3           THEN DECODE (C.ELEM_TYPE_ID,             0,  'NULL',             1,  'NUMBER',             2,  'NUMBER',             3,  'NUMBER',             4,  'NUMBER',             5,  'NUMBER',             6,  'NUMBER',             7,  'NUMBER',             8,  'NUMBER',             9,  'NUMBER',             10, 'NUMBER',             11, 'BINARY_FLOAT',             12, 'BINARY_DOUBLE',             13, 'NUMBER',             14, 'NUMBER',             15, 'NUMBER',             16, 'NUMBER',             17, 'DATE',             18, 'TIMESTAMP',             19, 'DATE',             20, 'TIME',             21, 'YEAR',             22, 'VARCHAR2',             23, 'CHAR',             24, 'HEX_STRING',             25, 'EXT',             26, 'UNKNOWN',             27, 'TINYTEXT',             28, 'TEXT',             29, 'MEDIUMTEXT',             30,  DECODE(C.COLL_TYPE, 63, 'BLOB', 'CLOB'),             31, 'BIT',             32, 'ENUM',             33, 'SET',             34, 'ENUM_INNER',             35, 'SET_INNER',             36, CONCAT('TIMESTAMP(', CONCAT(C.SCALE, ') WITH TIME ZONE')),             37, CONCAT('TIMESTAMP(', CONCAT(C.SCALE, ') WITH LOCAL TIME ZONE')),             38, CONCAT('TIMESTAMP(', CONCAT(C.SCALE, ')')),             39, 'RAW',             40, CONCAT('INTERVAL YEAR(', CONCAT(C.SCALE, ') TO MONTH')),             41, CONCAT('INTERVAL DAY(', CONCAT(TRUNC(C.SCALE / 10), CONCAT(') TO SECOND(', CONCAT(MOD(C.SCALE, 10), ')')))),             42, 'FLOAT',             43, 'NVARCHAR2',             44, 'NCHAR',             45, CONCAT('UROWID(', CONCAT(C.LENGTH, ')')),             46, '',             'NOT_SUPPORT')         ELSE t1.TYPE_NAME END AS VARCHAR2(324)) AS ELEM_TYPE_NAME,       C.LENGTH AS LENGTH,       C.NUMBER_PRECISION AS NUMBER_PRECISION,       C.SCALE AS SCALE,       CAST('CHAR_CS' AS CHAR(7)) AS CHARACTER_SET_NAME,       CAST('YES' AS CHAR(7)) AS ELEM_STORAGE,       CAST('B' AS CHAR(7)) AS NULLS_STORED     FROM       SYS.ALL_VIRTUAL_TYPE_REAL_AGENT T JOIN SYS.ALL_VIRTUAL_COLL_TYPE_REAL_AGENT C         ON T.TYPE_ID = C.COLL_TYPE_ID         AND T.TENANT_ID = EFFECTIVE_TENANT_ID()         AND C.TENANT_ID = EFFECTIVE_TENANT_ID()       JOIN SYS.ALL_VIRTUAL_DATABASE_REAL_AGENT D         ON T.TENANT_ID = SYS_CONTEXT('USERENV', 'CON_ID')            AND T.DATABASE_ID = D.DATABASE_ID            AND D.TENANT_ID = EFFECTIVE_TENANT_ID()            AND D.DATABASE_ID = USERENV('SCHEMAID')       LEFT JOIN SYS.ALL_VIRTUAL_TYPE_REAL_AGENT T1         ON T1.TYPE_ID = C.ELEM_TYPE_ID         AND T1.TENANT_ID = EFFECTIVE_TENANT_ID()       LEFT JOIN SYS.ALL_VIRTUAL_DATABASE_REAL_AGENT D1         ON T1.DATABASE_ID = D1.DATABASE_ID         AND D1.TENANT_ID = EFFECTIVE_TENANT_ID() )__"))) {
 | 
			
		||||
    if (OB_FAIL(table_schema.set_view_definition(R"__(     SELECT /*+ USE_MERGE(T, C, D, T1, D1) */       T.TYPE_NAME AS TYPE_NAME,       CAST(         CASE C.UPPER_BOUND         WHEN 0 THEN 'COLLECTION'         ELSE 'TABLE' END AS VARCHAR2(10)) AS COLL_TYPE,       C.UPPER_BOUND AS UPPER_BOUND,       CAST(NULL AS VARCHAR2(7)) AS ELEM_TYPE_MOD,       CAST(         CASE BITAND(C.PROPERTIES, 15)         WHEN 3 THEN NULL         ELSE d1.DATABASE_NAME END AS VARCHAR2(128)) AS ELEM_TYPE_OWNER,       CAST(         CASE BITAND(C.PROPERTIES, 15)         WHEN 3           THEN DECODE (C.ELEM_TYPE_ID,             0,  'NULL',             1,  'NUMBER',             2,  'NUMBER',             3,  'NUMBER',             4,  'NUMBER',             5,  'NUMBER',             6,  'NUMBER',             7,  'NUMBER',             8,  'NUMBER',             9,  'NUMBER',             10, 'NUMBER',             11, 'BINARY_FLOAT',             12, 'BINARY_DOUBLE',             13, 'NUMBER',             14, 'NUMBER',             15, 'NUMBER',             16, 'NUMBER',             17, 'DATE',             18, 'TIMESTAMP',             19, 'DATE',             20, 'TIME',             21, 'YEAR',             22, 'VARCHAR2',             23, 'CHAR',             24, 'HEX_STRING',             25, 'EXT',             26, 'UNKNOWN',             27, 'TINYTEXT',             28, 'TEXT',             29, 'MEDIUMTEXT',             30,  DECODE(C.COLL_TYPE, 63, 'BLOB', 'CLOB'),             31, 'BIT',             32, 'ENUM',             33, 'SET',             34, 'ENUM_INNER',             35, 'SET_INNER',             36, CONCAT('TIMESTAMP(', CONCAT(C.SCALE, ') WITH TIME ZONE')),             37, CONCAT('TIMESTAMP(', CONCAT(C.SCALE, ') WITH LOCAL TIME ZONE')),             38, CONCAT('TIMESTAMP(', CONCAT(C.SCALE, ')')),             39, 'RAW',             40, CONCAT('INTERVAL YEAR(', CONCAT(C.SCALE, ') TO MONTH')),             41, CONCAT('INTERVAL DAY(', CONCAT(TRUNC(C.SCALE / 10), CONCAT(') TO SECOND(', CONCAT(MOD(C.SCALE, 10), ')')))),             42, 'FLOAT',             43, 'NVARCHAR2',             44, 'NCHAR',             45, CONCAT('UROWID(', CONCAT(C.LENGTH, ')')),             46, DECODE(C.COLL_TYPE, 63, 'BLOB', 'CLOB'),             47, 'JSON',             48, 'SDO_GEOMETRY',             'NOT_SUPPORT')         ELSE t1.TYPE_NAME END AS VARCHAR2(324)) AS ELEM_TYPE_NAME,       C.LENGTH AS LENGTH,       C.NUMBER_PRECISION AS NUMBER_PRECISION,       C.SCALE AS SCALE,       CAST('CHAR_CS' AS CHAR(7)) AS CHARACTER_SET_NAME,       CAST('YES' AS CHAR(7)) AS ELEM_STORAGE,       CAST('B' AS CHAR(7)) AS NULLS_STORED     FROM       SYS.ALL_VIRTUAL_TYPE_REAL_AGENT T JOIN SYS.ALL_VIRTUAL_COLL_TYPE_REAL_AGENT C         ON T.TYPE_ID = C.COLL_TYPE_ID         AND T.TENANT_ID = EFFECTIVE_TENANT_ID()         AND C.TENANT_ID = EFFECTIVE_TENANT_ID()       JOIN SYS.ALL_VIRTUAL_DATABASE_REAL_AGENT D         ON T.TENANT_ID = SYS_CONTEXT('USERENV', 'CON_ID')            AND T.DATABASE_ID = D.DATABASE_ID            AND D.TENANT_ID = EFFECTIVE_TENANT_ID()            AND D.DATABASE_ID = USERENV('SCHEMAID')       LEFT JOIN SYS.ALL_VIRTUAL_TYPE_REAL_AGENT T1         ON T1.TYPE_ID = C.ELEM_TYPE_ID         AND T1.TENANT_ID = EFFECTIVE_TENANT_ID()       LEFT JOIN SYS.ALL_VIRTUAL_DATABASE_REAL_AGENT D1         ON T1.DATABASE_ID = D1.DATABASE_ID         AND D1.TENANT_ID = EFFECTIVE_TENANT_ID() )__"))) {
 | 
			
		||||
      LOG_ERROR("fail to set view_definition", K(ret));
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
@ -36250,7 +36250,9 @@ def_table_schema(
 | 
			
		||||
            43, 'NVARCHAR2',
 | 
			
		||||
            44, 'NCHAR',
 | 
			
		||||
            45, CONCAT('UROWID(', CONCAT(C.LENGTH, ')')),
 | 
			
		||||
            46, '',
 | 
			
		||||
            46, DECODE(C.COLL_TYPE, 63, 'BLOB', 'CLOB'),
 | 
			
		||||
            47, 'JSON',
 | 
			
		||||
            48, 'SDO_GEOMETRY',
 | 
			
		||||
            'NOT_SUPPORT')
 | 
			
		||||
        ELSE t1.TYPE_NAME END AS VARCHAR2(324)) AS ELEM_TYPE_NAME,
 | 
			
		||||
      C.LENGTH AS LENGTH,
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user