MINI MINI MANI MO

Path : /opt/oracle/product/18c/dbhomeXE/rdbms/admin/
File Upload :
Current File : //opt/oracle/product/18c/dbhomeXE/rdbms/admin/catmettypes.sql

Rem Copyright (c) 1987, 2017, Oracle and/or its affiliates. 
Rem All rights reserved.
Rem NAME
Rem    CATMETTYPES.SQL - Object types of the Oracle dictionary for
Rem                      Metadata API.
Rem  FUNCTION
Rem     Creates an object types of the Oracle dictionary for use by the
Rem     DataPump Metadata API.
Rem  NOTES
Rem     Must be run when connected to SYS or INTERNAL.
Rem     IMPORTANT! Keep the files catnomtt.sql and catnomta.sql in synch with
Rem     this file. These are invoked by catnodp.sql during downgrade.
Rem
Rem     All types must have EXECUTE granted to PUBLIC.
Rem     All top-level views used by the mdAPI to actually fetch full object
Rem     metadata (eg, KU$_TABLE_VIEW) must have SELECT granted to PUBLIC, but
Rem     must have CURRENT_USERID checking security clause.
Rem     All views subordinate to the top level views (eg, KU$_SCHEMAOBJ_VIEW)
Rem     must have SELECT granted to SELECT_CATALOG_ROLE.
Rem
Rem
Rem BEGIN SQL_FILE_METADATA
Rem SQL_SOURCE_FILE: rdbms/admin/catmettypes.sql
Rem SQL_SHIPPED_FILE: rdbms/admin/catmettypes.sql
Rem SQL_PHASE: CATMETTYPES
Rem SQL_STARTUP_MODE: NORMAL
Rem SQL_IGNORABLE_ERRORS: NONE
Rem SQL_CALLING_FILE: rdbms/admin/catpdeps.sql
Rem END SQL_FILE_METADATA
Rem
Rem  MODIFIED      MM/DD/YY
Rem     jjanosik   09/14/17 - Bug 26721864: Get memoptimize info into
Rem                           constraint
Rem     sdavidso   08/29/17 - bug25453685 move chunk - domain index
Rem     jjanosik   07/24/17 - Bug 26303869: add info to nested tables
Rem     bwright    07/17/17 - Bug 25651930: Fix ku_XmlColSet_t synonym def
Rem     tbhukya    07/17/17 - Bug 22104291: Add ext_location
Rem     jjanosik   06/22/17 - Bug 24719359: Add support for RADM Policy
Rem                           Expressions
Rem     jjanosik   05/05/17 - Bug 25239237: Update tablespace comments
Rem     jjanosik   04/19/17 - Bug 25364071: get encalg and intalg for nested
Rem                           tables
Rem     tbhukya    04/10/17 - Bug 25556006: Partitioned Databound 
Rem                           Collation support
Rem     bwright    03/31/17 - Bug 25808867: Add FORCE, NOT PERSISTABLE to type
Rem                           definitions
Rem     mjangir    03/27/17 - 23181020: ORA-01427 in ku$_xspolicy_view
Rem     qinwu      01/19/17 - proj 70151: support db capture and replay auth
Rem     sdavidso   01/19/17 - bug25225293 make procact_instance work with CBO
Rem     sfeinste   01/05/17 - Proj 70791: add dyn_all_cache to
Rem                           ku$_analytic_view_t
Rem     mjangir    12/22/16 - bug 25297023: add unique id for ku$ views
Rem     jjanosik   10/03/16 - Bug 24661809: translate extensibility callout
Rem                           packages to tags
Rem     rapayne    08/09/16 - bug 24435630: Fetch IM clause for ILM policies.
Rem                           note: this is a fwd merge from 12.2.0.1
Rem     almurphy   09/13/16 - add REFERENCES DISTINCT to ANALYTIC VIEW
Rem     sdavidso   08/30/16 - bug-24386897 list partition limit fo 4000 chars
Rem     jjanosik   08/18/16 - bug 23625494 - split flags in ku$_tab_tsubpart_t
Rem     mjangir    06/28/16 - bug 19450444: support regexp data redaction
Rem     drosash    05/11/16 - Bug 23245222: change RIM for LEAF
Rem     sdavidso   05/01/16 - bug23179975 app table data exported twice.
Rem     mjangir    04/04/16 - bug 22763372: resolve ORA-01427
Rem     sdavidso   02/20/16 - bug22151959 fix xlm schema-element name
Rem     youyang    02/15/16 - bug22672722:dv support for index functions
Rem     mstasiew   02/04/16 - Bug 22658620: hcs partitioned/missing tables
Rem     beiyu      01/19/16 - Bug 21365797: add owner_in_ddl col to HCS types
Rem     beiyu      12/21/15 - Bug 20619944: add level_type column
Rem     sdavidso   12/10/15 - bug22264616 more move chunk subpart
Rem     sogugupt   11/26/15 - Remove ku$_find_hidden_cons_t
Rem     smesropi   11/24/15 - Bug 21910928: Modify all_member_name to be clob
Rem     rapayne    11/16/15 - bug 22165030: imc distribute for subpartition
Rem                           templates.
Rem     tbhukya    11/10/15 - Bug 21747321: Add tfstatus in ku$_file_t
Rem     smesropi   11/08/15 - Bug 21171628: Rename HCS views
Rem     tbhukya    11/04/15 - Bug 22125304: Add org_col_name 
Rem     sdavidso   11/03/15 - bug21869037 chunk move w/subpartitions
Rem     jibyun     11/01/15 - support DIAGNOSTIC auth for Database Vault
Rem     jjanosik   09/28/15 - bug 21798129: Support Local Temp Tablespace in
Rem                           user type
Rem     mstasiew   09/25/15 - Bug 21867527: hier cube measure cache
Rem     mstasiew   08/27/15 - Bug 21384694: hier hier attr classifications
Rem     tbhukya    08/17/15 - Bug 21555645: Partitioned mapping io table
Rem     rapayne    08/01/15 - Bug 21147617: expand IM related queries to include
Rem                           new FOR SERVICE syntax for DISTRIBUTE clause.
Rem     yanchuan   07/27/15 - Bug 21299533: support for Database Vault
Rem                           Authorization
Rem     sdavidso   07/21/15 - bug-20756759: lobs, indexes, droppped tables
Rem                         added new 12.2 columns for ku$_schemaobj_t
Rem     sogugupt   07/11/15 - bug 21312469: add missing coulmns in ilm_policy_t 
Rem     sdavidso   07/01/15 - bug20864693: read only partition support
Rem     tbhukya    06/24/15 - Bug 21276592: Partitioned cluster
Rem     mjangir    06/21/15 - bug 18506065: check guard col in
Rem                           ku$_10_2_strmcol_t
Rem     mstasiew   06/03/15 - Bug 20845805: hierarchy cube improvements
Rem     sanbhara   06/01/15 - Bug 21158282 - adding ku$_dummy_comm_rule_alts_t.
Rem     tbhukya    05/26/15 - Bug 21143649: Long identifier fix
Rem     rapayne    05/20/15 - External table enhancements for partition
Rem                           locations.
Rem     mstasiew   05/16/15 - Bug 20845789 hierarchy dimension get_ddl fixes
Rem     tbhukya    05/06/15 - Bug 21038781: DBC support for MV
Rem     bwright    03/24/15 - Bug 20771546: Support for scalable sequence
Rem     tbhukya    03/24/15 - Bug 20746362: Correct the attributes length 
Rem                           and support long identifier in several types
Rem     rmacnico   03/15/15 - Proj 47506: CELLCACHE
Rem     tbhukya    02/25/15 - Proj 47173: Data bound collation
Rem     tbhukya    03/12/15 - Bug 20682834: Long identifiers support
Rem     tbhukya    03/10/15 - Bug 20651426: Long identifier in ku$_objgrant_t 
Rem     sdavidso   03/07/15 - Parallel metadata export
Rem     bwright    02/23/15 - Bug 20307940: Long identifiers for cube tables
Rem     bwright    02/11/15 - Proj 49143: Add auto-list (sub)partitioning and
Rem                           range interval subpartitioning w/ transition
Rem     sdavidso   02/08/15 - proj 56220-2 - partition transportable
Rem     rapayne    02/01/15 - proj 47411: local temporary tablespaces.
Rem     beiyu      01/09/15 - Proj 47091: add types for new HCS objects
Rem     htseng     01/08/15 - increase owner_name to 128 in ku$_xmlschema_t  
Rem     rapayne    10/20/14 - bug 20164836: support for RAS schema level priv
Rem                           grants.
Rem     rapayne    10/20/14 - support for RAS schema level priv grants.
Rem     kaizhuan   11/11/14 - Project 46812: support for Database Vault policy
Rem     bwright    11/05/14 - Support 'audit policy by granted roles'
Rem     tbhukya    08/26/14 - Bug 19688579: Add org_property2 and new spares
Rem     tbhukya    08/27/14 - Bug 18117024: Add flags, storage, clus_tab 
Rem                           to ku$_qtab_storage_t
Rem     jibyun     08/06/14 - Project 46812: support for Database Vault policy
Rem     sdavidso   05/23/14 - backport bug18760457 from MAIN
Rem     sdavidso   05/15/14 - bug18760457: missing SUBPARTITION BY clause
Rem     lbarton    04/30/14 - bug 18449519: multiple valid time periods
Rem     sdavidso   02/10/14 - bug14821907: find tablespaces: table
Rem                           transportable
Rem     lbarton    06/05/13 - project 35786: longer identifiers
Rem     surman     12/29/13 - 13922626: Update SQL metadata
Rem     dvekaria   12/20/13 - Bug17494709: Add encryptionalg to ku$_tablespace_t
Rem     mjangir    12/19/13 - bug 17500493: AQ storage_clause with lob column
Rem     rapayne    11/24/13 - Bug 15916457: add objgrant_t to ku$_pfhtable_t
Rem     sdavidso   11/03/13 - bug17718297 - IMC selective column
Rem     bwright    10/18/13 - Bug 17627666: Add COL_SORTKEY for consistent
Rem                           column ordering with stream and exttbl metadata
Rem     rapayne    09/22/13 - Bug 17321518: RAS policy support.
Rem     minx       09/20/13 - Bug 17478619: Add description to xs$instset_rule
Rem     bwright    08/14/13 - Bug 17312600: Remove hard tabs from DP src code
Rem     gclaborn   07/31/13 - 17247965: Add version support for import callouts
Rem     dvekaria   07/18/13 - Bug 15962071: Modify ku$_prim_column_t to hold
Rem                           DEFAULT_VAL expression as varchar or clob.
Rem     pradeshm   07/15/13 - Proj#46908: new columns in RAS principal table
Rem     lbarton    06/27/13 - bug 16800820: valid-time temporal
Rem     lbarton    04/24/13 - bug 16716831: functional index expression as
Rem                           varchar or clob
Rem     sdavidso   04/06/13 - proj42352: DP In-memory columnar
Rem     lbarton    04/04/13 - bug 11769638: property in exttab_t
Rem     bwright    03/07/13 - Bug14075699: Add PROPERTY2 to STRMTABLE_T
Rem     rapayne    10/03/12 - lrg 7256879: modify Triton views to use new
Rem                           Oracle Supplied bit.
Rem     lbarton    10/02/12 - bug 10350062: ILM compression and storage tiering
Rem     traney     09/26/12 - move unusable from index to column
Rem     traney     08/02/12 - 14407652: support editions enhancements
Rem     lbarton    07/26/12 - bug 13454387: long varchar
Rem     ssonawan   07/12/12 - bug 13843068: modify ku$_psw_hist_item_t.password
Rem                           column to varchar2(4000)
Rem     rapayne    06/12/12 - lrg 6886730: guard/nullable column support 
Rem     rapayne    03/31/12 - Proj 39632: support for create library extensions
Rem     traney     03/29/12 - bug 13715632: add agent to library$
Rem     surman     03/27/12 - 13615447: Add SQL patching tags
Rem     snadhika   03/12/12 - Bug 13240543, Session privilege check
Rem     lbarton    02/14/12 - project 37414: ILM support
Rem     taahmed    02/07/12 - remove defacl from xs$seccls
Rem     rapayne    01/30/12 - bug 13646476: add policy_schema to xsolap_policy_t
Rem     ssonawan   01/13/12 - bug 13582041: Remove handler from aud_policy$
Rem     lbarton    01/26/12 - gravipat_bug-12667763: view property2
Rem     sdavidso   01/19/12 - bug 13568859: add obj flag def (comments)
Rem     sdavidso   11/30/11 - long indentifiers for procedural objects
Rem     rapayne    11/20/11 - Project 36780: Invisible column support. Add
Rem                           property2 to simple_col_t definition.
Rem     ebatbout   11/09/11 - Project 36951: On_User_Grant support
Rem     ebatbout   11/23/11 - Proj. 36950 Code Based Roles
Rem     lbarton    10/27/11 - 36954_dpump_tabcluster_zonemap
Rem     rapayne    10/24/11 - minor changes to XS objects types to support 
Rem                           modify/remap.
Rem     ebatbout   10/14/11 - 12781157: Unpacked Opaque type support (Anydata)
Rem     lbarton    10/13/11 - bug 13092452: hygiene
Rem     dgagne     09/20/11 - add new stats types
Rem     dgagne     09/08/11 - add histgram changes to stats types
Rem     sdavidso   09/07/11 - get TABLE_DATA for options tables
Rem     rapayne    08/01/11 - Project 36780: Identity Column support.
Rem     jerrede    09/07/11 - Created for Parallel Upgrade Project #23496
Rem
Rem     mjangir    08/22/11 - bug 12687642: bug 10649822: do not use RBO for
Rem                           ku$_trigger_view
Rem     sdavidso   08/10/11 - FORCE_UNIQUE transform support
Rem     rapayne    07/25/11 - Project 32274: add schema based support for XDS
Rem                           objs.
Rem     lbarton    07/22/11 - bug 12780993: speed up estimate=stats
Rem     aramappa   07/18/11 - Project 31942: Add DBMS_RLS.OLS type to
Rem                           ku$_rls_policy_view
Rem     lbarton    07/13/11 - 32948_lob_storage
Rem     lbarton    07/12/11 - 32135_table_compression_clause
Rem     ebatbout   06/23/11 - proj 32404: Add physical part number (phypart#)
Rem                           to type/view, ku$_tab_part_t/ku$_tab_part_view.
Rem     sdavidso   06/17/11 - Parse item for hierarchy enabled xmltype
Rem     ebatbout   06/09/11 - bug 9796431: Call rtn, get_strm_minver, to
Rem                           determine stream metadata minor version for
Rem                           view, ku$_strmtable_view.
Rem     dahlim     06/07/11 - proj 32006: Import/Export support for RADM
Rem                           masking policies and fixed point table.
Rem     sdavidso   05/25/11 - proj_31238_bl3 fix nested table store as iot
Rem     rapayne    05/25/11 - add unsupported_index parse item.
Rem     mjangir    05/25/11 - bug 12384373: bad performance due to call of
Rem                           long2clob for non virtual cols in index export.
Rem     sdavidso   05/19/11 - bug 12545084 export acloid/userid for HET
Rem     lbarton    05/11/11 - bug 10186633: virtual column
Rem     rapayne    05/05/11 - proj 30924: add DISABLE_ARCHIVE_LOGGING transform
Rem                           parameter.
Rem     mjangir    04/23/11 - bug 10649822: do not use RBO for
Rem                           ku$_table_objnum_view
Rem     ebatbout   04/22/11 - Bug 9223960: Take into account that type,
Rem                           ku$_source_t, has new field, post_atname_off.
Rem     aamirish   04/20/11 - Proj 35490: Import/Export support for Attribute
Rem                           Associations of RLS Policies.
Rem     lbarton    04/18/11 - bug 10186633: virtual column
Rem     lbarton    04/13/11 - bug 12346384: no relational operator exporting
Rem                           view as table
Rem     tbhukya    04/12/11 - Bug 11828367: Get nls_length_semantics value
Rem     slynn      04/11/11 - Project 25215: Sequence Enhancements.
Rem     sdavidso   04/04/11 - Merge full transportable from 11.2.0.3
Rem     dgagne     03/30/11 - add datapump_paths_version
Rem     dgagne     03/23/11 - add parse items
Rem     sdavidso   03/23/11 - extract BHIBOUNDVAL for partitioned tables
Rem     lbarton    03/07/11 - bug 10363497: performance of nested tables
Rem     rapayne    03/01/11 - bug 11780551: add STREAMSXML transform params.
Rem     gclaborn   03/01/11 - Move user mapping view to catdpb.sql
Rem     lbarton    02/28/11 - get_vat_xml
Rem     sdavidso   02/22/11 - add marker -> ddl transform (test)
Rem     lbarton    02/21/11 - bug 9650574:  ROLE_GRANTs of
Rem                           DATAPUMP_EXP(IMP)_FULL_DATABASE should not
Rem                           be exported to 10g.
Rem     gclaborn   02/17/11 - Our post-import sys. callout should run last
Rem     sdavidso   02/16/11 - new flags for impcalloutreg
Rem     gclaborn   02/14/11 - Change comments on our registrations;
Rem                           remove unused views
Rem     gclaborn   02/07/11 - Register system callout impcalloutreg$
Rem     mjangir    02/01/11 - bug 8467379: Export object auditing on pl/sql
Rem                           packages
Rem     ebatbout   01/26/11 - Bug 11063664: if col# is zero, then return
Rem                           null for base_col_name field in ku$_strmcol_view
Rem     sdavidso   01/20/11 - merge project 37216 bl1
Rem     ebatbout   01/19/11 - bug 9119809: For views of partitioned tables,
Rem                           call dbms_metadata_util.has_tstz_cols routine
Rem                           to determine the value for the field, tstz_cols.
Rem     gclaborn   01/11/11 - Register our user mapping view in impcalloutreg$
Rem     gclaborn   12/14/10 - add tgt_type to impcalloutreg$
Rem     gclaborn   10/01/10 - Add type and views for import callouts

@@?/rdbms/admin/sqlsessstart.sql

-- Types used by the mdAPI interface:
-------------------------------------
-- SET_PARSE_ITEM specifies that an attribute of an object be parsed from
-- the output and returned separately by FETCH_XML, FETCH_DDL or CONVERT.
-- Since multiple items can be parsed, they are returned in a nested table,
-- ku$_parsed_items.

CREATE OR REPLACE TYPE sys.ku$_parsed_item FORCE AS OBJECT
        (       item            VARCHAR2(30),   -- item to be parsed
                value           VARCHAR2(4000), -- item's value
                object_row      NUMBER          -- object row of item
        )
NOT PERSISTABLE
/
GRANT EXECUTE ON sys.ku$_parsed_item TO PUBLIC;
CREATE OR REPLACE PUBLIC SYNONYM ku$_parsed_item FOR sys.ku$_parsed_item;

CREATE OR REPLACE TYPE sys.ku$_parsed_items FORCE
IS TABLE OF (sys.ku$_parsed_item) NOT PERSISTABLE;
/
GRANT EXECUTE ON sys.ku$_parsed_items TO PUBLIC;
CREATE OR REPLACE PUBLIC SYNONYM ku$_parsed_items FOR sys.ku$_parsed_items;

-- The FETCH_DDL function returns creation DDL for an object.
-- Some database objects require multiple creation DDL statements, e.g.,
-- full types and packages (a header and a body) and tables (create plus alters
-- for constraints). ku$_ddl contains a single DDL statement.
-- ku$_ddls contains all the DDL statements returned by a call to FETCH_DDL.
-- Most object types will have only one row.
-- Each row of ku$_ddls itself contains a ku$_parsed_items nested table
-- for parsed items for that DDL statement.

CREATE OR REPLACE TYPE sys.ku$_ddl FORCE AS OBJECT
        (       ddltext         CLOB,                   -- The DDL text
                parsedItems     sys.ku$_parsed_items    -- the parsed items
        )
NOT PERSISTABLE
/
GRANT EXECUTE ON sys.ku$_ddl TO PUBLIC;
CREATE OR REPLACE PUBLIC SYNONYM ku$_ddl FOR sys.ku$_ddl;

CREATE OR REPLACE TYPE sys.ku$_ddls FORCE IS TABLE OF (sys.ku$_ddl)
NOT PERSISTABLE;
/
GRANT EXECUTE ON sys.ku$_ddls TO PUBLIC;
CREATE OR REPLACE PUBLIC SYNONYM ku$_ddls FOR sys.ku$_ddls;

CREATE OR REPLACE TYPE sys.ku$_multi_ddl FORCE AS OBJECT
        (       object_row      NUMBER,         -- object row of object
                ddls            sys.ku$_ddls    -- 1-N DDLs for the object
        )
NOT PERSISTABLE
/
GRANT EXECUTE ON sys.ku$_multi_ddl TO PUBLIC;
CREATE OR REPLACE PUBLIC SYNONYM ku$_multi_ddl FOR sys.ku$_ddl;

CREATE OR REPLACE TYPE sys.ku$_multi_ddls FORCE IS TABLE OF (sys.ku$_multi_ddl)
NOT PERSISTABLE;
/
GRANT EXECUTE ON sys.ku$_multi_ddls TO PUBLIC;
CREATE OR REPLACE PUBLIC SYNONYM ku$_multi_ddls FOR sys.ku$_multi_ddls;


-- types used by the OPENW/CONVERT/PUT interface

CREATE OR REPLACE TYPE sys.ku$_ErrorLine FORCE AS OBJECT 
        (       errorNumber     NUMBER,
                errorText       VARCHAR2(2000) )
NOT PERSISTABLE
/
GRANT EXECUTE ON sys.ku$_ErrorLine TO PUBLIC;
CREATE OR REPLACE PUBLIC SYNONYM ku$_ErrorLine FOR sys.ku$_ErrorLine;
CREATE OR REPLACE TYPE sys.ku$_ErrorLines FORCE AS TABLE OF (sys.ku$_ErrorLine)
NOT PERSISTABLE
/
GRANT EXECUTE ON sys.ku$_ErrorLines TO PUBLIC;
CREATE OR REPLACE PUBLIC SYNONYM ku$_ErrorLines FOR sys.ku$_ErrorLines;
-- Submit result will have the DDL text, error msgs and parsed items so it's
-- easy to see which object had a problem.
CREATE OR REPLACE TYPE sys.ku$_SubmitResult FORCE AS OBJECT
        (       ddl             sys.ku$_ddl,
                errorLines      sys.ku$_ErrorLines )
NOT PERSISTABLE
/
GRANT EXECUTE ON sys.ku$_SubmitResult TO PUBLIC;
CREATE OR REPLACE PUBLIC SYNONYM ku$_SubmitResult FOR sys.ku$_SubmitResult;
CREATE OR REPLACE TYPE sys.ku$_SubmitResults FORCE
AS TABLE OF (sys.ku$_SubmitResult)
NOT PERSISTABLE
/
GRANT EXECUTE ON sys.ku$_SubmitResults TO PUBLIC;
CREATE OR REPLACE PUBLIC SYNONYM ku$_SubmitResults FOR sys.ku$_SubmitResults;

-- ku$_vcnt (vcnt = VarChar2 Nested Table) is used to hold
--  large amounts of text data.
-- It is used for the PLSQL code returned by GET_DOMIDX_METADATA
-- and for LONG values whose length > 4000
-- ku$_vcntbig is the same except each element is 32k. Used in network fetches

CREATE OR REPLACE TYPE sys.ku$_vcnt FORCE AS TABLE OF (VARCHAR2(4000))
NOT PERSISTABLE
/
GRANT EXECUTE ON sys.ku$_vcnt TO PUBLIC;
CREATE OR REPLACE PUBLIC SYNONYM ku$_vcnt FOR sys.ku$_vcnt;

CREATE OR REPLACE TYPE ku$_ObjNum FORCE IS object(obj_num NUMBER)
NOT PERSISTABLE;
/
GRANT EXECUTE ON sys.ku$_ObjNum TO PUBLIC;
CREATE OR REPLACE TYPE ku$_ObjNumSet FORCE IS TABLE OF (ku$_ObjNum)
NOT PERSISTABLE;
/
GRANT EXECUTE ON sys.ku$_ObjNumSet TO PUBLIC;
CREATE OR REPLACE PUBLIC SYNONYM ku$_ObjNumSet FOR sys.ku$_ObjNumSet;

CREATE OR REPLACE TYPE ku$_ObjNumNam force as
 object (obj_num NUMBER,name VARCHAR2(128)) not persistable;
/
GRANT EXECUTE ON sys.ku$_ObjNumNam TO PUBLIC;
CREATE OR REPLACE PUBLIC SYNONYM ku$_ObjNumNam FOR sys.ku$_ObjNumNam;

CREATE OR REPLACE TYPE ku$_ObjNumNamSet FORCE IS TABLE OF  (ku$_ObjNumNam)
NOT PERSISTABLE;
/
GRANT EXECUTE ON sys.ku$_ObjNumNamSet TO PUBLIC;
CREATE OR REPLACE PUBLIC SYNONYM ku$_ObjNumNamSet FOR sys.ku$_ObjNumNamSet;

CREATE OR REPLACE TYPE ku$_ObjNumPair FORCE AS OBJECT (
  num1          NUMBER,
  num2          NUMBER
)
NOT PERSISTABLE
/
GRANT EXECUTE ON sys.ku$_ObjNumPair TO PUBLIC;
CREATE OR REPLACE PUBLIC SYNONYM ku$_ObjNumPair FOR sys.ku$_ObjNumPair;
CREATE OR REPLACE TYPE ku$_ObjNumPairList FORCE IS TABLE OF (ku$_ObjNumPair)
NOT PERSISTABLE
/
GRANT EXECUTE ON sys.ku$_ObjNumPairList TO PUBLIC;
CREATE OR REPLACE PUBLIC SYNONYM ku$_ObjNumPairList
 FOR sys.ku$_ObjNumPairList;

-- UDTs for procedural objects/actions
-- sys.ku$_procobj_loc:
--  newblock    -  0 = line_of_code continues the current block
--                -2 = append line_of_code to previous line
--                 1 = end previous PL/SQL block, start a new block
--  line_of_code-  A line of PL/SQL code
-- sys.ku$_procobj_locs:
--  a nested table of the above
-- sys.ku$_procobj_line (name retained for historical reasons):
--  locs        -  a sys.ku$_procobj_locs object containing some lines of
--                  PLSQL code; these constitute a single anonymous PLSQL
--                  block; a COMMIT will be inserted at the end
--  grantor     -  non-null: the user to connect to before executing
--                  the PLSQL block
-- sys.ku$_procobj_lines:
--  a nested table of the above

CREATE OR REPLACE TYPE sys.ku$_procobj_loc FORCE AS OBJECT
        (       newblock        NUMBER,
                line_of_code    VARCHAR2(32767) )
NOT PERSISTABLE
/
GRANT EXECUTE ON sys.ku$_procobj_loc TO PUBLIC;
CREATE OR REPLACE PUBLIC SYNONYM ku$_procobj_loc FOR sys.ku$_procobj_loc;

CREATE OR REPLACE TYPE sys.ku$_procobj_locs FORCE
AS TABLE OF (sys.ku$_procobj_loc)
NOT PERSISTABLE
/
GRANT EXECUTE ON sys.ku$_procobj_locs TO PUBLIC;
CREATE OR REPLACE PUBLIC SYNONYM ku$_procobj_locs FOR sys.ku$_procobj_locs;

CREATE OR REPLACE TYPE sys.ku$_procobj_line FORCE AS OBJECT
        (       grantor         VARCHAR2(128),
                locs            sys.ku$_procobj_locs )
NOT PERSISTABLE
/
GRANT EXECUTE ON sys.ku$_procobj_line TO PUBLIC;
CREATE OR REPLACE PUBLIC SYNONYM ku$_procobj_line FOR sys.ku$_procobj_line;

CREATE OR REPLACE TYPE sys.ku$_procobj_lines FORCE
AS TABLE OF (sys.ku$_procobj_line)
NOT PERSISTABLE
/
GRANT EXECUTE ON sys.ku$_procobj_lines TO PUBLIC;
CREATE OR REPLACE PUBLIC SYNONYM ku$_procobj_lines FOR sys.ku$_procobj_lines;

CREATE OR REPLACE TYPE sys.ku$_procobj_lines_tab FORCE
AS TABLE OF (sys.ku$_procobj_lines)
NOT PERSISTABLE
/
GRANT EXECUTE ON sys.ku$_procobj_lines_tab TO PUBLIC;
CREATE OR REPLACE PUBLIC SYNONYM ku$_procobj_lines_tab
   FOR sys.ku$_procobj_lines_tab;

-- UDTs for Java

CREATE OR REPLACE TYPE sys.ku$_chunk_t FORCE AS OBJECT
(
  text  varchar2(4000),
  length        number
)
NOT PERSISTABLE
/
GRANT EXECUTE ON sys.ku$_chunk_t TO PUBLIC;
CREATE OR REPLACE PUBLIC SYNONYM ku$_chunk_t FOR sys.ku$_chunk_t;

CREATE OR REPLACE TYPE sys.ku$_chunk_list_t FORCE IS TABLE OF (sys.ku$_chunk_t)
NOT PERSISTABLE
/ 
GRANT EXECUTE ON sys.ku$_chunk_list_t TO PUBLIC;
CREATE OR REPLACE PUBLIC SYNONYM ku$_chunk_list_t FOR sys.ku$_chunk_list_t;

CREATE OR REPLACE TYPE sys.ku$_java_t FORCE AS OBJECT
(
  type_num              number,
  flags                 number,
  properties            number,
  raw_chunk_count       number,
  total_raw_byte_count  number, 
  text_chunk_count      number,
  total_text_byte_count number,
  raw_chunk             sys.ku$_chunk_list_t,
  text_chunk            sys.ku$_chunk_list_t
)
NOT PERSISTABLE
/
GRANT EXECUTE ON sys.ku$_java_t TO PUBLIC;
CREATE OR REPLACE PUBLIC SYNONYM ku$_java_t FOR sys.ku$_java_t;

-- UDTs for pre/post-table action code

CREATE OR REPLACE TYPE sys.ku$_taction_t FORCE AS OBJECT
(
  text  varchar2(32000)
)
NOT PERSISTABLE
/
GRANT EXECUTE ON sys.ku$_taction_t TO PUBLIC;
CREATE OR REPLACE PUBLIC SYNONYM ku$_taction_t FOR sys.ku$_taction_t;

CREATE OR REPLACE TYPE sys.ku$_taction_list_t FORCE
IS TABLE OF (sys.ku$_taction_t)
NOT PERSISTABLE
/ 
GRANT EXECUTE ON sys.ku$_taction_list_t TO PUBLIC;
CREATE OR REPLACE PUBLIC SYNONYM ku$_taction_list_t FOR sys.ku$_taction_list_t;

-- Types used internally by mdAPI
---------------------------------
-- Schema object audit settings are stored in tab$, etc. as a 38-byte
-- field named audit$ where each byte corresponds to a different access
-- type. This encoding is difficult for xsl to decode and process, 
-- so the function GET_AUDIT in this package unpacks the field into
-- a nested table of ku$_audobj_t objects, each of which has the setting
-- for one access type.

CREATE OR REPLACE TYPE sys.ku$_audobj_t FORCE AS OBJECT
(
  name          VARCHAR2(31),   -- operation to be audited, e.g., ALTER
  value         CHAR(1),        -- 'S' = by session
                                -- 'A' = by access
                                -- '-' = no auditing
  type          CHAR(1)         -- 'S' = when successful
                                -- 'F' = when not successful
)
NOT PERSISTABLE
/
GRANT EXECUTE ON sys.ku$_audobj_t TO PUBLIC;
CREATE OR REPLACE PUBLIC SYNONYM ku$_audobj_t FOR sys.ku$_audobj_t;

CREATE OR REPLACE TYPE sys.ku$_audit_list_t FORCE IS TABLE OF (sys.ku$_audobj_t)
NOT PERSISTABLE
/
GRANT EXECUTE ON sys.ku$_audit_list_t TO public;
CREATE OR REPLACE PUBLIC SYNONYM ku$_audit_list_t FOR sys.ku$_audit_list_t;

-- For storing default auditing options 

CREATE OR REPLACE TYPE sys.ku$_auddef_t FORCE AS OBJECT
(
  name          VARCHAR2(31),   -- operation to be audited, e.g., ALTER
  value         CHAR(1),        -- 'S' = by session
                                -- 'A' = by access
                                -- '-' = no auditing
  type          CHAR(1)         -- 'S' = when successful
                                -- 'F' = when not successful
)
NOT PERSISTABLE
/
GRANT EXECUTE ON sys.ku$_auddef_t TO PUBLIC;
CREATE OR REPLACE PUBLIC SYNONYM ku$_auddef_t FOR sys.ku$_auddef_t;

CREATE OR REPLACE TYPE sys.ku$_audit_default_list_t FORCE
IS TABLE OF (sys.ku$_auddef_t)
NOT PERSISTABLE
/
GRANT EXECUTE ON sys.ku$_audit_default_list_t TO public;
CREATE OR REPLACE PUBLIC SYNONYM ku$_audit_default_list_t FOR sys.ku$_audit_default_list_t;

-- ADT for list of columns for OR storage of xmltype
CREATE OR REPLACE TYPE ku$_XmlColSet_t FORCE IS TABLE OF (NUMBER)
NOT PERSISTABLE
/
GRANT EXECUTE ON sys.ku$_XmlColSet_t TO PUBLIC;
CREATE OR REPLACE PUBLIC SYNONYM ku$_XmlColSet_t FOR sys.ku$_XmlColSet_t;

-- ADT for list of type names for Anydata column stored unpacked
CREATE OR REPLACE TYPE sys.ku$_Unpacked_AnyData_t FORCE
IS TABLE OF (varchar2(2000)) NOT PERSISTABLE;
/
GRANT EXECUTE ON sys.ku$_Unpacked_AnyData_t TO PUBLIC;
CREATE OR REPLACE PUBLIC SYNONYM ku$_Unpacked_AnyData_t FOR sys.ku$_Unpacked_AnyData_t;

-- UDTs for lines of source
CREATE OR REPLACE TYPE sys.ku$_source_t FORCE AS OBJECT
(
  obj_num       number,                                     /* object number */
  line          number,                                       /* line number */
  --
  -- The next 2 attributes are used by XSL scripts to edit the source line.
  -- E.g., in a type definition, the line might be 'type foobar as object' --
  -- 'foobar' is the object name.  Since the xsl script has already
  -- generated CREATE OR REPLACE TYPE FOOBAR, it uses 'post_name_off'
  -- to extract the useful part of the line.  If the source were
  -- create type /* this is a comment
  --  that continues on the next line */
  --  foobar
  -- which is rare but legal, the xsl script knows from 'pre_name' which
  -- lines are prior to the name and can safely be discarded.
  -- See bug 2844111 and rdbms/xml/xsl/kusource.xsl.
  pre_name      number,    /* 1 = this line is prior to line containing name */
  post_name_off number,   /* 1-based offset of 1st non-space char after name */
  post_keyw     number,   /* the offset of post keyword */
  pre_name_len  number,   /* length between keyword and name */
  --
  -- The next attribute is needed for appending the SQL terminator.
  -- If the last line ends in a newline, we simply add the "/";
  -- otherwise, we must insert a newline before the "/".
  -- This attribute is NULL for all but the last line; for the last
  -- line it is "Y" if the line ends in a newline, "N" otherwise.
  trailing_nl   char(1),
  -- The next field is part of the fix for bug #9223960.  Since the alter
  -- type statement will execute separately from the create type statement,
  -- the 'alter type name' part of the statement is replaced with the following
  -- 'alter type schema.typename' followed by the rest of the statement.
  post_atname_off number,        /* 1st non-space char after alter type name */
  -- Improve fix for bug #9223960 (bug #17952171) requires two more fields:
  atname_off    number,           /* offset of 1st char of alter type 'name' */
  new_version   number,   /* 1: if 1st line from new version of type, else 0 */
  source        varchar2(4000)                                /* source line */
)
NOT PERSISTABLE
/
GRANT EXECUTE ON sys.ku$_source_t TO PUBLIC
/
CREATE OR REPLACE PUBLIC SYNONYM ku$_source_t FOR sys.ku$_source_t;
CREATE OR REPLACE TYPE ku$_source_list_t FORCE AS TABLE OF (sys.ku$_source_t)
NOT PERSISTABLE;
/
GRANT EXECUTE ON ku$_source_list_t TO PUBLIC
/
CREATE OR REPLACE PUBLIC SYNONYM ku$_source_list_t FOR sys.ku$_source_list_t;


-------------------------------------------------------------------------------
--                              SCHEMA OBJECTS
-------------------------------------------------------------------------------

-- UDT for schema objects.  Based on obj$
create or replace type ku$_schemaobj_t force as object
(
  obj_num       number,                                     /* object number */
  dataobj_num   number,                          /* data layer object number */
  owner_num     number,                                 /* owner user number */
  owner_name    varchar2(128),                                 /* owner name */
  name          varchar2(128),                                /* object name */
  namespace     number,                               /* namespace of object */
  subname       varchar2(128),                    /* subordinate to the name */
  type_num      number,                                       /* object type */
  type_name     varchar2(128),                           /* object type name */
  ctime         varchar2(19),                        /* object creation time */
  mtime         varchar2(19),                       /* DDL modification time */
  stime         varchar2(19),           /* specification timestamp (version) */
  status        number,                                  /* status of object */
  remoteowner   varchar2(128),          /* remote owner name (remote object) */
  linkname      varchar2(128),                  /* link name (remote object) */
  flags         number,                                             /* flags */
    /* flag definitions from kqd.h */
    /* KQDOBFDOM  0x01                                                      */
    /* KQDOBTMP   0x02                                  object is temporary */
    /* KQDOBFGEN  0x04                           object is system generated */
    /* KQDOBFUNB  0x08              object is unbound (has invokers rights) */
    /* KQDOBSCO   0x10                                   secondary object - */
                                   /* currently only used for domain indexes */
    /* KQDOBIMT   0x20                                 in-memory temp table */
    /* KQDOBFPKJ  0x40                          permanently kept java class */
    /* KQDOBRBO   0x80                                Object in Recycle Bin */
    /* KQDOBSYP   0x100                            synonym has VPD policies */
    /* KQDOBGRP   0x200                              synonym has VPD groups */
    /* KQDOBCVX   0x400                             synonym has VPD context */
    /* KQDOBCRD   0x800                           object is cursor duration */
/* NOTE: Flags 0x1000 - 0xf000 are reserved for object invalidation reasons */
    /* KQDOBFITE  0x1000               object's dependency type has evolved */
    /* KQDOBDFV   0x2000                            Disable fast validation */

                                    /*Using these two flags for misc purposes*/
    /* KQDOBNTP   0x4000                  object is a nested table parition */
    /* KQDOBOBERR 0x8000                           object has objerror$ row */

    /* KQDOBF_MD_LINK  0x10000    Metadata Link or a Metadata-Linked Object */
    /* KQDOBF_OBJ_LINK 0x20000        Object Link or a Object-Linked Object */
    /* KQDOBF_COMMON_OBJECT (KQDOBF_MD_LINK | KQDOBF_OBJ_LINK)

    /* KQDOBLID   0x40000                     object uses a long identifier */
    /* KQDOBFASTTABUPG 0x80000               allow fast alter table upgrade */
    /* KQDOBNE    0x100000            object marked not editionable by user */
    /* KQDOSIVK   0x200000                special invoker rights: see kkxrca */
    /* KQDOBORCL  0x400000                      is an Oracle-supplied object */
    /* KQDONFD    0x800000                    no fine-grained dep for object */
  oid           raw(16),        /* OID for typed table, typed view, and type */
  spare1        number,
  spare2        number,
  spare3        number,                              /* 11.2 original owner# */
  spare4        varchar2(1000),
  spare5        varchar2(1000),
  spare6        varchar2(19),
  owner_name2   varchar2(128),                   /* 11.2 original owner_name */
/* columns added in 12.1 */
  signature     raw(16),
  spare7        number,
  spare8        number,
  spare9        number,
/* columns added in 12.2 */
  dflcollname   varchar2(128),            /* unit-level default collation id */
  spare10       number,
  spare11       number,
  spare12       varchar2(1000),
  spare13       varchar2(1000),
  spare14       timestamp
)
not persistable
/

-------------------------------------------------------------------------------
--                              STORAGE
-------------------------------------------------------------------------------

-- ADT for storage characteristics
create or replace type ku$_storage_t force as object
(
  file_num      number,                        /* segment header file number */
  block_num     number,                       /* segment header block number */
  type_num      number,                                      /* segment type */
  ts_num        number,                       /* tablespace for this segment */
  transportable number,       /* 1 if tablspace in transportable set, else 0 */
  blocks        number,                /* blocks allocated to segment so far */
                                           /* zero for bitmapped tablespaces */
  extents       number,               /* extents allocated to segment so far */
  iniexts       number,                               /* initial extent size */
  minexts       number,                         /* minimum number of extents */
  maxexts       number,                         /* maximum number of extents */
  extsize       number,                          /* current next extent size */
                                           /* zero for bitmapped tablespaces */
  extpct        number,                             /* percent size increase */
  user_num      number,                        /* user who owns this segment */
  lists         number,                        /* freelists for this segment */
  groups        number,                  /* freelist groups for this segment */
  bitmapranges  number,                          /* ranges per bit map entry */
  cachehint     number,                                 /* hints for caching */
  scanhint      number,                                /* hints for scanning */
  hwmincr       number,                      /* Amount by which HWM is moved */
  flags         number,                                     /* Segment flags */
  /* These flags are defined in ktscts.h. Significant flags are        */
                   /* #define KTSSEGM_FLAG_COMPRESSED 0x0800    (2048) */
                   /* #define KTSSEGM_FLAG_OLTP  0x1000000  (16777216) */
                   /* #define KTSSEGM_FLAG_ARCH1 0x2000000  (33554432) */
                   /* #define KTSSEGM_FLAG_ARCH2 0x4000000  (67108864) */
                   /* #define KTSSEGM_FLAG_ARCH3 0x8000000 (134217728) */
  flags2        number,                                     /* various flags */
  spare2        number
)
not persistable
/

-- UDT for deferred storage characteristics
-- (from dcore.bsq)
create or replace type ku$_deferred_stg_t force as object
(
  obj_num       number,                            /* object number */
  pctfree_stg   number,                                  /* PCTFREE */
  pctused_stg   number,                                  /* PCTUSED */
  size_stg      number,                                     /* SIZE */
  initial_stg   number,                                  /* INITIAL */
  next_stg      number,                                     /* NEXT */
  minext_stg    number,                               /* MINEXTENTS */
  maxext_stg    number,                               /* MAXEXTENTS */
  maxsiz_stg    number,                                  /* MAXSIZE */
  lobret_stg    number,                             /* LOBRETENTION */
  mintim_stg    number,                                  /* MIN tim */
  pctinc_stg    number,                              /* PCTINCREASE */
  initra_stg    number,                                 /* INITRANS */
  maxtra_stg    number,                                 /* MAXTRANS */
  optimal_stg   number,                                  /* OPTIMAL */
  maxins_stg    number,                             /* MAXINSTANCES */
  frlins_stg    number,                           /* LISTS/instance */
  flags_stg     number,                                    /* flags */
  bfp_stg       number,                              /* BUFFER_POOL */
  enc_stg       number,                               /* encryption */
  cmpflag_stg   number,                         /* compression type */
  cmplvl_stg    number,                        /* compression level */
  imcflag_stg   number,            /* in-memory columnar (IMC) flag */
  ccflag_stg    number,                 /* columnar cache (CC) flag */
  flags2_stg    number                          /* additional flags */
)
not persistable
/

-------------------------------------------------------------------------------
--                              FILESPEC
-------------------------------------------------------------------------------

-- ADT for filespec

create or replace type ku$_file_t force as object
(
  name          varchar2(923),   /* raw fname:limited to 923 bytes (max OID) */
  fname         varchar2(2050),  /* fixed filename with sgl. ' escaped as '' */
  fsize         number,                            /* size of file in blocks */
  resize        number,                          /* resize of file in blocks */
  maxextend     number,                                 /* maximum file size */
  inc           number,                                 /* increment ammount */
  ts_num        number,                                 /* tablespace number */
  tfstatus      number,                                 /* Temp file status  */
  is_omf        number                   /* 1 if file is an OMF, 0 otherwise */
)
not persistable
/


create or replace type ku$_file_list_t
 force as table of (ku$_file_t)
not persistable
/

-------------------------------------------------------------------------------
--                              TABLESPACE
-------------------------------------------------------------------------------

-- ADT for tablespaces
create or replace type ku$_tablespace_t force as object
(
  vers_major    char(1),                              /* UDT major version # */
  vers_minor    char(2),                              /* UDT minor version # */
  ts_num        number,                      /* tablespace identifier number */
  name          varchar2(128),                         /* name of tablespace */
  owner_num     number,                               /* owner of tablespace */
  status        number,                                            /* status */
                      /* 1 = ONLINE, 2 = OFFLINE, 3 = INVALID, 4 = READ ONLY */
  contents      number,                      /* TEMPORARY = 1 / PERMANENT = 0*/
  undofile_num  number,  /* undo_off segment file number (status is OFFLINE) */
  undoblock_num number,               /* undo_off segment header file number */
  blocksize     number,                            /* size of block in bytes */
  inc_num       number,                      /* incarnation number of extent */
  scnwrp        number,     /* clean offline scn - zero if not offline clean */
  scnbas        number,              /* scnbas - scn base, scnwrp - scn wrap */
  dflminext     number,                 /* default minimum number of extents */
  dflmaxext     number,                 /* default maximum number of extents */
  dflinit       number,                       /* default initial extent size */
  dflincr       number,                          /* default next extent size */
  dflminlen     number,                       /* default minimum extent size */
  dflextpct     number,              /* default percent extent size increase */
  dflogging     number,                         /* default logging attribute */
  affstrength   number,                                 /* Affinity strength */
  bitmapped     number,      /* If not bitmapped, 0 else unit size in blocks */
  plugged       number,                                        /* If plugged */
  directallowed number,    /* Operation which invalidate standby are allowed */
  flags         number,                       /* various flags -  see ktt3.h */
                                     /* 0x01 = system managed allocation     */
                                     /* 0x02 = uniform allocation            */
                                /* if above 2 bits not set then user managed */
                                     /* 0x04 = migrated tablespace           */
                                     /* 0x08 = tablespace being migrated     */
                                     /* 0x10 = undo tablespace               */
                                     /* 0x20 = auto segment space management */
                       /* if above bit not set then freelist segment managed */
                                     /* 0x40 (64) = COMPRESS                 */
                                     /* 0x80 = ROW MOVEMENT                  */
                                     /* 0x100 = SFT                          */
                                     /* 0x200 = undo retention guarantee     */
                                    /* 0x400 = tablespace belongs to a group */
                                  /* 0x800 = this actually describes a group */
                                   /* 0x1000 = tablespace has MAXSIZE set */
                                   /* 0x2000 = enc property initialized */
                                   /* 0x4000 = encrypted tablespace */
            /* 0x8000 = has its own key and not using the default DB enc key */
                                  /* 0x10000 = OLTP Compression */
                                  /* 0x20000 (131072) = ARCH1_COMPRESSION */
                                  /* 0x40000 (262144) = ARCH2_COMPRESSION */
                                  /* 0x80000 (524288) = ARCH3_COMPRESSION */
  flags2        number,                                    /*  flags <63:32> */
                   /* 0x800000000000 = 140737488355328 (32768) LOCAL_ON_LEAF */
                    /* 0x1000000000000= 281474976710656 (65536) LOCAL_ON_ALL */
                                                              /* from ktt3.h */
                                       /* Lost write protection status flags */
  /* #define KTT_LOST_ENABLED  ((ub8)0x20000000 00000000) lost write enabled */
  /* #define KTT_LOST_SUSPEND  ((ub8)0x40000000 00000000) lost write suspend */
  /* #define KTT_LOST_DISABLED ((ub8)0x0)                lost write disabled */
  svcname       varchar(1000),            /* service name for IMC DISTRIBUTE */
  svcflags      number,                  /* service flags for IMC DISTRIBUTE */
  pitrscnwrp    number,                      /* scn wrap when ts was created */
  pitrscnbas    number,                      /* scn base when ts was created */
  ownerinstance varchar(128),                         /* Owner instance name */
  backupowner   varchar(128),                  /* Backup owner instance name */
  groupname     varchar(128),                                  /* Group name */
  spare1        number,                                  /* plug-in SCN wrap */
  spare2        number,                                  /* plug-in SCN base */
  spare3        varchar2(1000),
  spare4        varchar2(19),
  filespec      ku$_file_list_t,
  encryptionalg varchar2(128)                        /* encryption algorithm */
)
not persistable
/

--
-------------------------------------------------------------------------------
--                      SQL COMPILER SWITCHES 
-------------------------------------------------------------------------------
--
create or replace type ku$_switch_compiler_t force as object
(
  obj_num       number,                                     /* object number */
  optlevel      VARCHAR2(4000),
  codetype      VARCHAR2(4000),
  debug         VARCHAR2(4000),
  ccflags       VARCHAR2(4000),
  plscope       VARCHAR2(4000),
  nlsemnt       VARCHAR2(4000)
)
not persistable
/

-------------------------------------------------------------------------------
--                              TYPE
-------------------------------------------------------------------------------
-- 
-- from type$ (dobj.bsq)
create or replace type ku$_simple_type_t force as object
(
  toid          raw(16),                                             /* toid */
  version_num   number,                                /* internal version # */
  version       varchar2(128),                        /* UDT minor version # */
  type_num      number,                      /* type encoding (see sqldef.h) */
  properties    number,                                   /* type properties */
  attribute_num number,                              /* number of attributes */
  local_attrs   number,                        /* number of local attributes */
  method_num    number,                                 /* number of methods */
  hidmethod_num number,                         /* number of hiddend methods */
  typeid        raw(16), /* short typeid value (for non final and sub types) */
  roottoid      raw(16),          /* TOID of root type (null if not subtype) */
  hashcode      raw(17),                                 /* Version hashcode */
  schema_obj    ku$_schemaobj_t,                            /* schema object */
  type_name     varchar2(128)                                   /* type name */
)
not persistable
/

-- from collection$ (dobj.bsq)
create or replace type ku$_collection_t force as object
(
  toid          raw(16),                                             /* TOID */
  version       number,                      /* internal type version number */
  coll_toid     raw(16),            /* collection TOID (TABLE, VARRAY, etc.) */
  coll_version  number,         /* collection type's internal version number */
  elem_toid     raw(16),                                   /* element's TOID */
  elem_version  number,          /* element's type's internal version number */
  synobj        number,                              /* obj# of type synonym */
  properties    number,                             /* element's properties: */
  /* 0x4000 =   16384 = is a PONTER element */
  /* 0x8000 =   32768 = is a REF element */
  /* 0x10000 =  65536  = no NULL is stored with each element */
  /* 0x20000 =  131072 = number/float elements stored in min. fixed size */
  /* 0x40000 =  262144 = number/float elements stored in varying size    */
  charsetid     number,                                  /* character set id */
  charsetform   number,                                /* character set form */
  /* 1 = implicit: for CHAR, VARCHAR2, CLOB w/o a specified set */
  /* 2 = nchar: for NCHAR, NCHAR VARYING, NCLOB */
  /* 3 = explicit: for CHAR, etc. with "CHARACTER SET ..." clause */
  /* 4 = flexible: for PL/SQL "flexible" parameters */
  length        number,                  /* fixed character string length or */
                                  /* maximum varying character string length */
  precision     number,       /* fixed- or floating-point numeric precision */
  scale         number,                         /* fixed-point numeric scale */
  upper_bound   number,     /* fixed array size or varying array upper bound */
  spare1        number,                      /* fractional seconds precision */
  spare2        number,                  /* interval leading field precision */
  spare3        number,
  coll_type     ku$_simple_type_t,           /* type info for the collection */
  typemd        ku$_simple_type_t        /* type info for collection element */
)
not persistable
/

-- type info for Method arguments
--    from argument$ (dplsql.bsq)
create or replace type ku$_argument_t force as object
(
  obj_num        number,                                    /* object number */
  procedure_val  varchar2(128),      /* procedure name (if within a package) */
  overload_num   number,
                /* 0 - not overloaded, n - unique id of overloaded procedure */
  procedure_num  number,                       /* procedure or method number */
  position_num   number,           /* argument position (0 for return value) */
  sequence_num   number,
  level_num      number,
  argument       varchar2(128),     /* argument name (null for return value) */
  type_num       number,                                    /* argument type */
  charsetid      number,                                 /* character set id */
  charsetform    number,                               /* character set form */
  /* 1 = implicit: for CHAR, VARCHAR2, CLOB w/o a specified set */
  /* 2 = nchar: for NCHAR, NCHAR VARYING, NCLOB */
  /* 3 = explicit: for CHAR, etc. with "CHARACTER SET ..." clause */
  /* 4 = flexible: for PL/SQL "flexible" parameters */
  default_num    number,   /* null - no default value, 1 - has default value */
  in_out         number,                   /* null - IN, 1 - OUT, 2 - IN/OUT */
  properties     number,                           /* argument's properties: */
  /* 0x0100 =     256 = IN parameter (pass by value, default) */
  /* 0x0200 =     512 = OUT parameter */
  /* 0x0400 =    1024 = pass by reference parameter */
  /* 0x0800 =    2048 = required parameter (no default) */
  /* 0x4000 =   16384 = is a PONTER parameter */
  /* 0x8000 =   32768 = is a REF parameter */
  length         number,                                      /* data length */
  precision_num  number,                                /* numeric precision */
  scale          number,                                    /* numeric scale */
  radix          number,                                    /* numeric radix */
  deflength      number,             /* default value expression text length */
  default_val    varchar2(4000),            /* default value expression text */
--  default$       long,                    /* default value expression text */
  type_owner     varchar2(128),         /* owner name component of type name */
  type_name      varchar2(128),                                 /* type name */
  type_subname   varchar2(128),            /* subname component of type name */
  type_linkname  varchar2(128),            /* db link component of type name */
  pls_type       varchar2(128)                           /* pl/sql type name */
)
not persistable
/
create or replace type ku$_argument_list_t
 force as table of (ku$_argument_t)
not persistable
/

-- type info for Procedures
--     from method$ (dplsql.bsq)
create or replace type ku$_procinfo_t force as object
(
  obj_num       number,
  procedure_num number,
  objerload_num number,
  procedurename varchar2(128),                             /* procedure name */
  properties    number,                              /* procedure properties */
                /* 0x00001 =     1 = HIDDEN (internally generated) procedure */
                /* 0x00002 =     2 = C implementation (in spec)              */
                /* 0x00004 =     4 = Java implementation (in spec)           */
                /* 0x00008 =     8 = Aggregate function                      */
                /* 0x00010 =    16 = Pipelined function                      */
                /* 0x00020 =    32 = Parallel enabled                        */
                /* 0x00040 =    64 = Retrun Self as result (SQLJ)            */
                /* 0x00080 =   128 = Constructor function (SQLJ)             */
                /* 0x00100 =   256 = deterministic                           */
                /* 0x00200 =   512 = Pipelined func; interface impl          */
                /* 0x00400 =  1024 = Function with invokers rights           */
                /* 0x00800 =  2048 = Func with partitioned argument(s)       */
                /* 0x01000 =  4096 = Func with clustered argument(s)         */
                /* 0x02000 =  8192 = Func with ordered i/p argument(s)       */
                /* 0x04000 =  16384 = Partitioned arg: Hash partitioning     */
                /* 0x08000 = 32768 = Partitioned arg: Range partitioning     */
                /* 0x10000 = 65536 = Partitioned using any partitioning      */
  /* The following field is relevant only for aggregate and pipelined        */
  /*  functions that are implemented using an implementation type            */
  itypeobj_num  number,                 /* implementation type object number */
  spare1        number,
  spare2        number,
  spare3        number,
  spare4        number
)
not persistable
/

-- from dplsql.bsql
create or replace type ku$_procjava_t force as object
( obj_num       number,                 /* spec/body object number */
  procedure_num number,                  /* procedure# or position */
  ownername     varchar2(128),           /* class owner name */
  ownerlength   number,              /* length of class owner name */
  usersignature varchar2(4000),              /* User signature for java */
  usersiglen    number,                /* Length of user signature for java */
  classname     varchar2(4000),           /* method class name */
  classlength   number,             /* length of method class name */
  methodname    varchar2(4000),            /* java method name */
  methodlength  number,              /* length of java method name */
  flags         varchar2(4000),              /* internal flags */
  flagslength   number,                /* length of internal flags */
  cookiesize    number)                                      /* cookie size */
not persistable
/

create or replace type ku$_procc_t force as object
( obj_num        number,                 /* spec/body object number */
  procedure_num   number,                  /* procedure# or position */
  entrypoint_num number)                 /* entrypoint table entry# */
not persistable
/

create or replace type ku$_procplsql_t force as object
( obj_num          number,                 /* spec/body object number */
  procedure_num    number,                  /* procedure# or position */
  entrypoint_num   number)                 /* entrypoint table entry# */
not persistable
/

-- type info for Methods
--     from method$ (dobj.bsq)
create or replace type ku$_method_t force as object
(
  toid           raw(16),                                            /* TOID */
  version_num    number,                     /* internal type version number */
  method_num     number,                        /* method number or position */
  name           varchar2(128),                               /* method name */
  properties     number,                             /* method's properties: */
  /* 0x00001 =      1 = PRIVATE method */
  /* 0x00002 =      2 = PUBLIC method (default) */
  /* 0x00004 =      4 = INLINE method */
  /* 0x00008 =      8 = VIRTUAL method => NOT FINAL */
  /* 0x00010 =     16 = CONSTANT method */
  /* 0x00020 =     32 = contructor method */
  /* 0x00040 =     64 = destructor method */
  /* 0x00080 =    128 = operator method */
  /* 0x00100 =    256 = selfish method */
  /* 0x00200 =    512 = MAP method */
  /* 0x00800 =   2048 = ORDER method */
  /* 0x01000 =   4096 = Read No Data State method (default) */
  /* 0x02000 =   8192 = Write No Data State method */
  /* 0x04000 =  16384 = Read No Process State method */
  /* 0x08000 =  32768 = Write No Process State method */
  /* 0x10000 =  65536 = Not Instantiable method */
  /* 0x20000 = 131072 = Overriding method */
  /* 0x40000 = 262144 = Returns SELF as result */
  parameters_num number,                             /* number of parameters */
  results        number,                                /* number of results */
  xflags         number,                          /* Flags not stored in TDO */
  /* 0x01 - Inherited method */
  spare1         number,                                         /* reserved */
  spare2         number,                                         /* reserved */
  spare3         number,                                         /* reserved */
  externVarName  varchar2(4000),  /*"M_VCSZ" external variable name for SQLJ */
  argument_list  ku$_argument_list_t,            /* argument list for method */
  procedureinfo  ku$_procinfo_t,                           /* procedure info */
  procjava       ku$_procjava_t,                       /*java procedure info */
  procplsql      ku$_procplsql_t,                     /*plsql procedure info */
  procc          ku$_procc_t,                             /*C procedure info */
  obj_num        number
)
not persistable
/
create or replace type ku$_method_list_t
 force as table of (ku$_method_t)
not persistable
/


-- Type attribute info:
--      from attribute$
create or replace type ku$_type_attr_t force as object
(
  toid          raw(16),                                             /* TOID */
  version_num   number,                      /* internal type version number */
  name          varchar2(128),                             /* attribute name */
  attribute_num number,                       /* attribute identifier number */
  attr_vers_num number,        /* attribute's type's internal version number */
  attr_toid     raw(16),                                 /* attribute's TOID */
  synobj_num    number,                              /* obj# of type synonym */
  properties    number,                           /* attribute's properties: */
  /* 0x4000 =   16384 = is a PONTER attribute */
  /* 0x8000 =   32768 = is a REF attribute */
  charsetid     number,                                  /* character set id */
  charsetform   number,                                /* character set form */
  length        number,                  /* fixed character string length or */
                                  /* maximum varying character string length */
  precision_num number,        /* fixed- or floating-point numeric precision */
  scale         number,                         /* fixed-point numeric scale */
  externname    varchar2(4000),        /* field in java class for SQLJ types */
  xflags        number,                           /* flags not stored in TDO */
  /* 0x01 - inherited attribute */
  spare1        number,                      /* fractional seconds precision */
  spare2        number,                  /* interval leading field precision */
  spare3        number,                                          /* reserved */
  spare4        number,                                          /* reserved */
  spare5        number,                                          /* reserved */
  setter        number,                        /* Setter function no. (SQLJ) */
  getter        number,                        /* Getter function no. (SQLJ) */
  typemd        ku$_simple_type_t                           /* schema object */
)
not persistable
/


create or replace type ku$_type_attr_list_t
 force as table of (ku$_type_attr_t)
not persistable
/

-- udt for types
-- Note: ku$_source_list_t is defined in dbmsmetu.sql
create or replace type ku$_type_t force as object
(
  vers_major    char(1),                              /* UDT major version # */
  vers_minor    char(2),                              /* UDT minor version # */
  obj_num       number,                                     /* object number */
  schema_obj    ku$_schemaobj_t,                            /* schema object */
  oid           raw(16),                                             /* toid */
  typeid        raw(16), /* short typeid value (for non final and sub types) */
  version       number,                      /* internal type version number */
  hashcode      raw(17),                                 /* Version hashcode */
  type_num      number,                      /* type encoding (see sqldef.h) */
  properties    number,                                   /* type properties */
  attribute_num number,                              /* number of attributes */
  method_num    number,                                 /* number of methods */
  hidmethod_num number,                         /* number of hiddend methods */
  externtype    number,                                     /* external type */
                                                    /* 1 = SQLData SQLJ type */
                                                /* 2 = CustomDatum SQLJ type */
                                               /* 3 = serializable SQLJ type */
                                      /* 4 = internal serializable SQLJ type */
                                                    /* 5 = ORAData SQLJ type */
  externname    varchar(4000),   /* (M_VCSZ)java class implementing the type */
  source_lines  ku$_source_list_t,                           /* source lines */
  compiler_info ku$_switch_compiler_t,
  supertype_obj ku$_schemaobj_t,                    /* supertype object info */
  collection    ku$_collection_t,                        /* collection$ data */
  attr_list     ku$_type_attr_list_t,                      /* attribute list */
  method_list   ku$_method_list_t
)
not persistable
/



create or replace type ku$_type_body_t force as object
(
  vers_major    char(1),                              /* UDT major version # */
  vers_minor    char(2),                              /* UDT minor version # */
  obj_num       number,                                     /* object number */
  schema_obj    ku$_schemaobj_t,                            /* schema object */
  source_lines  ku$_source_list_t,                           /* source lines */
  compiler_info ku$_switch_compiler_t
)
not persistable
/

create or replace type ku$_full_type_t force as object
(
  vers_major    char(1),                              /* UDT major version # */
  vers_minor    char(2),                              /* UDT minor version # */
  obj_num       number,                                     /* object number */
  schema_obj    ku$_schemaobj_t,                            /* schema object */
  type_t        ku$_type_t,                                   /* type object */
  type_body_t   ku$_type_body_t                          /* type body object */
)
not persistable
/

-- type and view used by export
-- includes base_obj_num (obj# of the type_spec) so that the base_obj_num
-- can be used as a filter

create or replace type ku$_exp_type_body_t force as object
(
  vers_major    char(1),                              /* UDT major version # */
  vers_minor    char(2),                              /* UDT minor version # */
  base_obj_num  number,                                /* base object number */
  obj_num       number,                                     /* object number */
  schema_obj    ku$_schemaobj_t,                            /* schema object */
  source_lines  ku$_source_list_t,                          /* source lines */
  compiler_info ku$_switch_compiler_t
)
not persistable
/

-------------------------------------------------------------------------------
--                              SIMPLE COLUMNS
-------------------------------------------------------------------------------

-- UDT for simple column info. This is the foundation for a number of different
-- column variants and is sufficient for simple column name lists.

create or replace type ku$_simple_col_t force as object
(
  obj_num       number,                      /* object number of base object */
  col_num       number,                          /* column number as created */
  intcol_num    number,                            /* internal column number */
  segcol_num    number,                          /* column number in segment */
  property      number,                     /* column properties (bit flags) */
  property2     number,                /* more column properties (bit flags) */
                   /* the column property bits are defined in qcdl.h        */
                   /* with names beginning "KQLDCOP_" and "KQLDCOP2_"       */
                   /* e.g., KQLDCOP_ATT, KQLDCOP2_ILM   */
  name          varchar2(128),                             /* name of column */
  attrname      varchar2(4000),/* name of type attr. column: null if != type */
  type_num      number,                               /* data type of column */
  deflength     number,    /* virtual column text length (for func. indexes) */
  default_val   varchar2(4000),            /* virtual column expression text */
  default_valc  clob,                      /* virtual column expression text */
  col_expr      sys.xmltype,           /* parsed functional index expression */
  org_colname   varchar2(128)        /* Original partitioned column name for 
                                                           partitioned table */
)
not persistable
/
create or replace type ku$_simple_col_list_t
 force as table of (ku$_simple_col_t)
not persistable
/

-------------------------------------------------------------------------------
--                              INDEX COLUMNS
-------------------------------------------------------------------------------

-- ADT for index columns
create or replace type ku$_index_col_t force as object
(
  obj_num       number,                               /* index object number */
  bo_num        number,                                /* base object number */
  intcol_num    number,                            /* internal column number */
  col           ku$_simple_col_t,                                  /* column */
  pos_num       number,                 /* column position number as created */
  segcol_num    number,                          /* column number in segment */
  segcollen     number,                      /* length of the segment column */
  offset        number,                                  /* offset of column */
  flags         number,                                             /* flags */
  spare2        number,
  spare3        number,
  spare4        varchar2(1000),
  spare5        varchar2(1000),
  spare6        varchar2(19),
  oid_or_setid  number,   /* !0 = hidden unique constraint on OID column (1) */
                                  /* or nested tbl column's SETID column (2) */
  org_col_name  varchar2(128) /* original col name for collation Virtual col */
)
not persistable
/

create or replace type ku$_index_col_list_t force as table of (ku$_index_col_t)
not persistable;
/

-------------------------------------------------------------------------------
--                              LOB COLUMNS
-------------------------------------------------------------------------------
-- UDT for lob/lobfrag index
create or replace type ku$_lobindex_t force as object
(
  obj_num       number,                                          /* object # */
  schema_obj    ku$_schemaobj_t,                            /* schema object */
  ts_name       varchar2(128),                                 /* tablespace */
  blocksize     number,                            /* size of block in bytes */
  storage       ku$_storage_t,                                    /* storage */
  deferred_stg  ku$_deferred_stg_t,                      /* deferred storage */
  dataobj_num   number,                          /* data layer object number */
  cols          number,                                 /* number of columns */
  pct_free      number,          /* minimum free space percentage in a block */
  initrans      number,                     /* initial number of transaction */
  maxtrans      number,                    /* maximum number of transactions */
  pct_thres     number,           /* iot overflow threshold, null if not iot */
  type_num      number,                       /* what kind of index is this? */
  flags         number,                                     /* mutable flags */
  property      number,             /* immutable flags for life of the index */
  blevel        number,                                       /* btree level */
  leafcnt       number,                                  /* # of leaf blocks */
  distkey       number,                                   /* # distinct keys */
  lblkkey       number,                          /* avg # of leaf blocks/key */
  dblkkey       number,                          /* avg # of data blocks/key */
  clufac        number,                                 /* clustering factor */
  analyzetime   varchar2(19),                /* timestamp when last analyzed */
  samplesize    number,                 /* number of rows sampled by Analyze */
  rowcnt        number,                       /* number of rows in the index */
  intcols       number,                        /* number of internal columns */
  degree        number,           /* # of parallel query slaves per instance */
  instances     number,             /* # of OPS instances for parallel query */
  trunccnt      number,                        /* re-used for iots 'inclcol' */
  numcolsdep    number,  /*spare1: number of columns depended on, >= intcols */
  numkeycols    number,       /*spare2 # of key columns in compressed prefix */
  spare3        number,
  spare4        varchar2(1000),     /* used for parameter str for domain idx */
  spare5        varchar2(1000),
  spare6        varchar2(19),
/* columns from ku$_lobfrag_index */
  base_obj_num  number,                                        /* base index */
  part_num      number,                                  /* partition number */
  inclcol       number                     /* iot include col#, null if !iot */
)
not persistable
/

-- ADT for LOB columns
create or replace type ku$_lob_t force as object
(
  obj_num       number,                                /* obj# of base table */
  col_num       number,                                     /* column number */
  intcol_num    number,                            /* internal column number */
  schema_obj    ku$_schemaobj_t,                        /* LOB schema object */
  storage       ku$_storage_t,                          /* LOB storage       */
  deferred_stg  ku$_deferred_stg_t,                      /* deferred storage */
  ts_name       varchar2(128),                            /* tablespace name */
  blocksize     number,                            /* size of block in bytes */
  ind_num       number,                                 /* LOB index obj #   */
  lobindex      ku$_lobindex_t,                          /* LOB index object */
  chunk         number,                    /* oracle blocks in one lob chunk */
  pctversion    number,                                      /* version pool */
  flags         number,                                             /* flags */
                                                 /* 0x0001 = NOCACHE LOGGING */
                                               /* 0x0002 = NOCACHE NOLOGGING */
                                             /* 0x0008 = CACHE READS LOGGING */
                                           /* 0x0010 = CACHE READS NOLOGGING */
  property      number,                    /* 0x00 = user defined lob column */
                                    /* 0x01 = kernel column(s) stored as lob */
                                     /* 0x02 = user lob column with row data */
                                            /* 0x04 = partitioned LOB column */
                                   /* 0x0008 = LOB In Global Temporary Table */
                                          /* 0x0010 = Session-specific table */
  retention     number,                              /* LOB Retention period */
  freepools     number,                             /* LOB segment FREEPOOLS */
  spare1        number,
  spare2        number,
  spare3        varchar2(255),
  /* attributes from lobfarg (partitioned) */
  parent_obj_num number,                             /* parent object number */
  part_obj_num  number,                           /* partition object number */
  base_obj_num  number,                                /* obj# of base table */
  part_num      number                                   /* partition number */
)
not persistable
/
create or replace type ku$_lobfrag_list_t force as table of (ku$_lob_t)
not persistable;
/
-- ADT for table level defaults for LOBs (from partlob$)
create or replace type ku$_partlob_t force as object
(
  obj_num       number,                                /* obj# of base table */
  intcol_num    number,                            /* internal column number */
  schema_obj    ku$_schemaobj_t,            /* LOB schema object (for lobj#) */
  defts_name    varchar2(128),                    /* default tablespace name */
  defblocksize  number,                    /* default size of block in bytes */
  defchunk      number,                    /* oracle blocks in one lob chunk */
  defpctversion number,                              /* default version pool */
  defflags      number,                                             /* flags */
                                                 /* 0x0001 = NOCACHE LOGGING */
                                               /* 0x0002 = NOCACHE NOLOGGING */
                                             /* 0x0008 = CACHE READS LOGGING */
                                           /* 0x0010 = CACHE READS NOLOGGING */
  defpro        number,                        /* default partition property */
                                             /* 0x02 = enable storage in row */
  definiexts    number,  /* default INITIAL extent size; NULL if unspecified */
  defextsize    number,     /* default NEXT extent size; NULL if unspecified */
  defminexts    number,           /* default MINEXTENTS; NULL if unspecified */
  defmaxexts    number,           /* default MAXEXTENTS; NULL if unspecified */
  defextpct     number,          /* default PCTINCREASE; NULL if unspecified */
  deflists      number,      /* default FREELISTS value; NULL if unspecified */
  defgroups     number,      /* default FREELIST GROUPS; NULL if unspecified */
  defbufpool    number,          /* default BUFFER_POOL; NULL if unspecified */
  spare1        number,
  spare2        number,
  spare3        number,
  defmaxsize    number,              /* default MAXSIZE; NULL if unspecified */
  defretention  number,            /* default RETENTION; NULL if unspecified */
  defmintime    number    /* default MIN retention time; NULL if unspecified */
)
not persistable
/

-- UDT for lobfrag index
-- ADT for actual partition- or subpartition-level LOB attributes
-- ADT for partition-level defaults in composite partitioned tables
-- (from lobcomppart$)
create or replace type ku$_lobcomppart_t force as object
(
  obj_num       number,                             /* obj# of LOB partition */
  part_obj_num  number,                     /* table partition object number */
  part_num      number,                                  /* partition number */
  intcol_num    number,                            /* internal column number */
  schema_obj    ku$_schemaobj_t,            /* LOB schema object (for lobj#) */
  defts_name    varchar2(128),                    /* default tablespace name */
  defblocksize  number,                    /* default size of block in bytes */
  defchunk      number,                    /* oracle blocks in one lob chunk */
  defpctversion number,                              /* default version pool */
  defflags      number,                                             /* flags */
                                                           /* 0x0000 = CACHE */
                                                 /* 0x0001 = NOCACHE LOGGING */
                                               /* 0x0002 = NOCACHE NOLOGGING */
                                             /* 0x0008 = CACHE READS LOGGING */
                                           /* 0x0010 = CACHE READS NOLOGGING */
  defpro        number,                        /* default partition property */
                                             /* 0x02 = enable storage in row */
  definiexts    number,  /* default INITIAL extent size; NULL if unspecified */
  defextsize    number,     /* default NEXT extent size; NULL if unspecified */
  defminexts    number,           /* default MINEXTENTS; NULL if unspecified */
  defmaxexts    number,           /* default MAXEXTENTS; NULL if unspecified */
  defextpct     number,          /* default PCTINCREASE; NULL if unspecified */
  deflists      number,      /* default FREELISTS value; NULL if unspecified */
  defgroups     number,      /* default FREELIST GROUPS; NULL if unspecified */
  defbufpool    number,          /* default BUFFER_POOL; NULL if unspecified */
  spare1        number,
  spare2        number,
  spare3        number,
  defmaxsize    number,              /* default MAXSIZE; NULL if unspecified */
  defretention  number,            /* default RETENTION; NULL if unspecified */
  defmintime    number    /* default MIN retention time; NULL if unspecified */
)
not persistable
/

create or replace type ku$_lobcomppart_list_t force
as table of (ku$_lobcomppart_t)
not persistable
/

Rem
Rem Lob information for template subpartition lob store as clause
Rem
create or replace type ku$_tlob_comppart_t force as object
(
  base_objnum    number,                           /* object number of table */
  colname        varchar2(128),
  intcol_num     number,                      /* column number of lob column */
  spart_pos      number,                            /* subpartition position */
  flags          number,          /* Type of lob column - 1 varray, 2 opaque */
  lob_spart_name varchar2(132),         /* segment name for lob subpartition */
  ts_name        varchar2(128),         /* tablespace name (if any) assigned */
  ts_num         number                      /* tablespace (if any) assigned */
)
not persistable
/

create or replace type ku$_tlob_comppart_list_t force
as table of (ku$_tlob_comppart_t)
not persistable
/


-------------------------------------------------------------------------------
-- for Checking sub-partition were created via 
--the tables's subpartition template clause.
-- using for function check_match_template 
-------------------------------------------------------------------------------
create or replace type ku$_temp_subpart_t force as object
(
  obj_num       number,                             /* obj# of subpartition */
  ts_num        number,
  pobj_num      number,     /* object# of partition containing subpartition */
  subpartno     number,
  bhiboundval   blob
)
not persistable
/
create or replace type ku$_temp_subpartdata_t force as object
(
  obj_num       number,
  spts  number,
  dspts number,
  pdefts number,
  tdefts number,
  udefts number,
  spbnd  blob, -- varchar2(4000),
  dspbnd blob  -- varchar2(4000)
)
not persistable
/
/

create or replace type ku$_temp_subpartlobfrg_t force as object
(
  obj_num     number,  /* parentobj num */
  ts_num      number,
  fragobj_num   number,
  frag_num        number,
  tabfragobj_num  number
)
not persistable
/
create or replace type ku$_temp_subpartlob_t force as object
(
  obj_num         number,
  lpdefts number,
  lfts    number,
  lcdefts number,
  lspdefts number,
  spts     number
)
not persistable
/

-------------------------------------------------------------------------------
--                              ILM POLICIES
-------------------------------------------------------------------------------
-- defined here because used in table (sub)partitions
-- based on dictionary tables ilmpolicy$ and ilmobj$

create or replace type ku$_ilm_policy_t force as object
(
  obj_num       number,                            /* object number of table */
  obj_typ       number,                 /* object type (see KQD.H for types) */
  obj_typ_orig  number,    /* object type on which policy originally defined */
                                                   /* or ts# of tablespace   */
  policy_num    number,                                     /* policy number */
  ilmobj_flag   number,         /* ilmobj$.flag                              */
                                /* 0x0001 - policy on object disabled        */
                                /* 0x0002 - inherited from schema (not used) */
                                /* 0x0003 - inherited from tablespace        */
                                /* also ilm$.flag if object is tablespace    */
                                /* 0x0001 - policy disabled                  */
                                /* 0x0002 - schema-level policy              */
                                /* 0x0008 - tablespace-level policy          */
                                /* 0x0010 - default policy                   */
  actionc       varchar2(100),                              /* action clause */
  ctype         number,         /* compression type: 2 = OLTP; 3 = row level */
  clevel        number,         /* compression level                         */
                                /*  1 = query low                            */
                                /*  2 = query high                           */
                                /*  3 = archive low                          */
                                /*  4 = archive high                         */
  cindex        number,         /* index compression level                   */
                                               /*  0x0001 prefix compression */
                                          /*  0x0002 OLTP compression high   */
                                          /*  0x0003 OLTP compression low    */
  cprefix       number,   /* Number of columns in case of prefix compression */
  clevlob       number,                             /* LOB compression level */
                                                               /* 0x0001 LOW */
                                                            /* 0x0002 MEDIUM */
                                                              /* 0x0003 HIGH */
  tier_tbs      varchar2(128),                      /* Tablespace to tier to */
  action        number,                            /* type of ILM action     */
                                                   /* 0x0001 Compression     */
                                                   /* 0x0002 Storage tiering */
  type          number,                            /* type code  ??????? */
  condition     number,                   /* condition policy is based on    */
                                          /* 0x0000 - last access time       */
                                          /* 0x0001 - low access             */
                                          /* 0x0002 - last modification time */
                                          /* 0x0003 - creation time          */
  days          number,                                    /* number of days */
  scope         number,                                 /* policy scope      */
                                                        /* 0x0001 -  segment */
                                                        /* 0x0002 -  group   */
                                                        /* 0x0003 -  row     */
  custfunc      varchar2(128),                           /* cust. func. name */
  flag          number,                                      /* policy flags */
                                                      /* 0x0001 -  READ-ONLY */
                                                         /* 0x0002 -  unused */
                                                         /* 0x0004 - inplace */
                                                         /* 0x0008 -  custom */
                                                           /* 0x0010 - GROUP */
                                               /* 0x0020 - Row level locking */
  flag2         number,                             /* flag2 - fields unused */
  spare1        number,                                             /* spare */
  spare2        number,                                             /* spare */
  spare3        number,                                             /* spare */
  spare4        varchar2(4000),                                     /* spare */
  spare5        varchar2(4000),                                     /* spare */
  spare6        timestamp,
  pol_subtype   number,
  actionc_clob  clob,
  tier_to       number
)
not persistable
/

create or replace type ku$_ilm_policy_list_t force 
as table of (ku$_ilm_policy_t)
not persistable
/

-- UDT for ALTER TABLESPACE for default ILM policie
create or replace type ku$_tbs_ilm_policy_t force as object
(
  ts_num        number,                      /* tablespace identifier number */
  name          varchar2(128),                         /* name of tablespace */
  ilm_policies  ku$_ilm_policy_list_t                /* default ilm policies */
)
not persistable
/

-------------------------------------------------------------------------------
--                              NESTED TABLE PARTITION
-------------------------------------------------------------------------------

-- UDT for table partition data for partitioned heap nested table
create or replace type ku$_hntp_t force as object
(
  obj_num       number,                              /* obj# of nested table */
  property      number,                                  /* table properties */
  storage       ku$_storage_t,                                    /* storage */
  deferred_stg  ku$_deferred_stg_t,                      /* deferred storage */
  ts_name       varchar2(128),                            /* tablespace name */
  blocksize     number,                            /* size of block in bytes */
  pct_free      number,                   /* min. free space %age in a block */
  pct_used      number,                   /* min. used space %age in a block */
  initrans      number,                     /* initial number of transaction */
  maxtrans      number,                     /* maximum number of transaction */
  flags         number                                              /* flags */
)
not persistable
/

-- UDT for nested table partition
create or replace type ku$_ntpart_t force as object
(
  obj_num       number,                                /* obj# of base table */
  part_num      number,                               /* part# of base table */
  intcol_num    number,              /* internal column number in base table */
  ntab_num      number,              /* object number of nested table object */
  schema_obj    ku$_schemaobj_t,           /* schema object for nested table */
  col           ku$_simple_col_t,                                  /* column */
  property      number,                           /* nested table properties */
  flags         number,                                /* nested table flags */
  hnt           ku$_hntp_t                      /* heap table partition data */
)
not persistable
/
create or replace type ku$_ntpart_list_t force as table of (ku$_ntpart_t)
not persistable
/

-- UDT for collection of nested table partitions of a parent table
create or replace type ku$_ntpart_parent_t force as object
(
  obj_num       number,                                /* obj# of base table */
  part_num      number,                     /* part# of base table partition */
  nts           ku$_ntpart_list_t                 /* nested table partitions */
)
not persistable
/

-- for external tables
-- Note: This must be defined before partition related stuff because in v12.2
--       external tables now support partition with locations.

create or replace type ku$_extloc_t force as object
(
  obj_num       number,                          /* base table object number */
  position      number,                               /* this location index */
  dir           varchar2(128),                  /* location directory object */
  name          varchar2(4000)                              /* location name */
)
not persistable
/

create or replace type ku$_extloc_list_t
 force as table of (ku$_extloc_t)
not persistable
/

create or replace type ku$_exttab_t force as object
(
  obj_num       number,                          /* base table object number */
  default_dir   varchar2(128),                          /* default directory */
  type          varchar2(128),                         /* access driver type */
  nr_locations  number,                               /* number of locations */
  reject_limit  number,                                      /* reject limit */
  par_type      number,             /* access parameter type: blob=1, clob=2 */
  param_clob    clob,                      /* access parameters in clob form */
  property      number,            /* 0x01 all cols, 0x02 referenced columns */
  location      ku$_extloc_list_t                      /* external locations */
)
not persistable
/
-------------------------------------------------------------------------------
--                              PARTITIONS
-------------------------------------------------------------------------------

-- ADT for index partitions and subpartitions.  Based on indpart$/indsubpart$
create or replace type ku$_ind_part_t force as object
(
  obj_num       number,                                 /* obj# of partition */
  schema_obj    ku$_schemaobj_t,                            /* schema object */
  ts_num        number,                                 /* tablespace number */
  ts_name       varchar2(128),                                 /* tablespace */
  blocksize     number,                            /* size of block in bytes */
  storage       ku$_storage_t,                    /* storage characteristics */
  deferred_stg  ku$_deferred_stg_t,                      /* deferred storage */
  dataobj_num   number,                          /* data layer object number */
-- only for partitions
  base_obj_num  number,                                        /* base index */
  part_num      number,                                  /* partition number */
  tab_part_name varchar2(128),                       /* table partition name */
  hiboundlen    number,                     /* len. of high bound val. expr. */
  hiboundval    varchar2(4000),                        /* text of high bound */
  hiboundvalc   clob,                             /* clob text of high bound */
  pct_thres     number,                 /* iot overflow thresh. null if !iot */
  inclcol       number,                    /* iot include col#, null if !iot */
  parameters    varchar2(1000),                       /* from indpart_param$ */
-- only for subpartitions
  pobj_num      number,                              /* parent object number */
  subpart_num   number,                               /* subpartition number */
  tab_subpart_name varchar2(128),                 /* table subpartition name */
--
  flags         number,                                             /* flags */
  pct_free      number,                   /* min. free space %age in a block */
  initrans      number,                         /* initial # of transactions */
  maxtrans      number,                            /* max. # of transactions */
  analyzetime   varchar2(19),                     /* timestamp last analyzed */
  samplesize    number,                                     /* for histogram */
  rowcnt        number,                                         /* # of rows */
  blevel        number,                                      /* B-tree level */
  leafcnt       number,                             /* number of leaf blocks */
  distkey       number,                                /* # of distinct keys */
  lblkkey       number,                      /* av. # of leaf blocks per key */
  dblkkey       number,                      /* av. # of data blocks per key */
  clufac        number,                                 /* clustering factor */
  spare1        number,
  spare2        number,
  spare3        number
)
not persistable
/


create or replace type ku$_ind_part_list_t force as table of (ku$_ind_part_t)
not persistable
/

-- ADT for PIOT partitions.  Based on indpart$
create or replace type ku$_piot_part_t force as object
(
  obj_num       number,                                 /* obj# of partition */
  schema_obj    ku$_schemaobj_t,                            /* schema object */
  ts_name       varchar2(128),                                 /* tablespace */
  blocksize     number,                            /* size of block in bytes */
  storage       ku$_storage_t,                    /* storage characteristics */
  deferred_stg  ku$_deferred_stg_t,                      /* deferred storage */
  dataobj_num   number,                          /* data layer object number */
  base_obj_num  number,                                        /* base index */
  part_num      number,                                  /* partition number */
  hiboundlen    number,                     /* len. of high bound val. expr. */
  hiboundval    varchar2(4000),                                 /* text of " */
  hiboundvalc   clob,                                           /* text of " */
  lobs          ku$_lobfrag_list_t,                                  /* lobs */
  flags         number,                                   /* (indpart) flags */
  tp_flags      number,                                     /* tabpart flags */
  pct_free      number,                   /* min. free space %age in a block */
  pct_thres     number,                 /* iot overflow thresh. null if !iot */
  initrans      number,                         /* initial # of transactions */
  maxtrans      number,                            /* max. # of transactions */
  analyzetime   varchar2(19),                     /* timestamp last analyzed */
  samplesize    number,                                     /* for histogram */
  rowcnt        number,                                         /* # of rows */
  blevel        number,                                      /* B-tree level */
  leafcnt       number,                             /* number of leaf blocks */
  distkey       number,                                /* # of distinct keys */
  lblkkey       number,                      /* av. # of leaf blocks per key */
  dblkkey       number,                      /* av. # of data blocks per key */
  clufac        number,                                 /* clustering factor */
  spare1        number,
  spare2        number,
  spare3        number,
  inclcol       number                     /* iot include col#, null if !iot */
)
not persistable
/


create or replace type ku$_piot_part_list_t force as table of (ku$_piot_part_t)
not persistable
/

-- ADT for table partitions.  Based on tabpart$
create or replace type ku$_tab_part_t force as object
(
  obj_num       number,                                     /* object number */
  schema_obj    ku$_schemaobj_t,                            /* schema object */
  ts_name       varchar2(128),                                 /* tablespace */
  blocksize     number,                            /* size of block in bytes */
  storage       ku$_storage_t,                    /* storage characteristics */
  deferred_stg  ku$_deferred_stg_t,                      /* deferred storage */
  dataobj_num   number,                          /* data layer object number */
  base_obj_num  number,                                 /* base table object */
  part_num      number,                                  /* partition number */
  hiboundlen    number,                   /* length of high bound value expr */
  hiboundval    varchar2(4000),             /* text of high bound value expr */
  hiboundvalc   clob,                                           /* text of " */
  lobs          ku$_lobfrag_list_t,                                  /* lobs */
  nt            ku$_ntpart_parent_t,              /* nested table partitions */
  ilm_policies  ku$_ilm_policy_list_t,               /* ilm policies, if any */
  pct_free      number,                   /* min. free space %age in a block */
  pct_used      number,                   /* min. used space %age in a block */
  initrans      number,                         /* initial # of transactions */
  maxtrans      number,                            /* max. # of transactions */
  flags         number,                                             /* flags */
  analyzetime   varchar2(19),                     /* timestamp last analyzed */
  samplesize    number,                          /* samplesize for histogram */
  rowcnt        number,                                    /* number of rows */
  blkcnt        number,                                  /* number of blocks */
  empcnt        number,                            /* number of empty blocks */
  avgspc        number,                      /* average available free space */
  chncnt        number,                            /* number of chained rows */
  avgrln        number,                                /* average row length */
  spare1        number,
  spare2        number,
  spare3        number,
  bhiboundval   blob,                                   /* binary hiboundval */
  phypart_num   number,                         /* physical partition number */
  ext_location  ku$_exttab_t,          /* locations for ext table partitions */
  svcname       varchar(1000),            /* service name for IMC DISTRIBUTE */
  svcflags      number                   /* service flags for IMC DISTRIBUTE */
)
not persistable
/

create or replace type ku$_tab_part_list_t force as table of (ku$_tab_part_t)
not persistable
/

-- ADT for table subpartitions.  Based on tabsubpart$.  These hang off
-- of their parents: table composite partitions.
create or replace type ku$_tab_subpart_t force as object
(
  obj_num       number,                              /* obj# of subpartition */
  schema_obj    ku$_schemaobj_t,                            /* schema object */
  ts_name       varchar2(128),                            /* tablespace name */
  blocksize     number,                            /* size of block in bytes */
  storage       ku$_storage_t,                    /* storage characteristics */
  deferred_stg  ku$_deferred_stg_t,                      /* deferred storage */
  dataobj_num   number,                                   /* data layer obj# */
  pobj_num      number,                          /* obj# of parent partition */
  subpart_num   number,                                     /* subpartition# */
  lobs          ku$_lobfrag_list_t,                                  /* lobs */
  ilm_policies  ku$_ilm_policy_list_t,               /* ilm policies, if any */
  flags         number,                                             /* flags */
  pct_free      number,                      /* min. free space % in a block */
  pct_used      number,                      /* min. used spare % in a block */
  initrans      number,                         /* initial # of transactions */
  maxtrans      number,                            /* max. # of transactions */
  analyzetime   varchar2(19),                /* timestamp when last analyzed */
  samplesize    number,                      /* # of rows sampled by analyze */
  rowcnt        number,                                    /* number of rows */
  blkcnt        number,                                  /* number of blocks */
  empcnt        number,                            /* number of empty blocks */
  avgspc        number,                      /* average available free space */
  chncnt        number,                            /* number of chained rows */
  avgrln        number,                                /* average row length */
  spare1        number,
  spare2        number,
  spare3        number,
  hiboundlen    number,                     /* len. of high bound val. expr. */
  hiboundval    varchar2(4000),                                 /* text of " */
  hiboundvalc   clob,                                      /* clob text of " */
  bhiboundval   blob,                                   /* binary hiboundval */
  phypart_num   number,                      /* physical subpartition number */
  svcname       varchar(1000),            /* service name for IMC DISTRIBUTE */
  svcflags      number,                  /* service flags for IMC DISTRIBUTE */
  ext_location  ku$_exttab_t           /* locations for ext table partitions */
)
not persistable
/


create or replace type ku$_tab_subpart_list_t force
as table of (ku$_tab_subpart_t)
not persistable
/

-- ADT for table template subpartitions.  Based on defsubpart$.  These hang off
-- of their parents: table template subpartitions.
create or replace type ku$_tab_tsubpart_t force as object
(
  base_objnum   number,                            /* Object number of table */
  spart_pos     number,                             /* subpartition position */
  spart_name    varchar2(132),                      /* name assigned by user */
  ts_name       varchar2(128),                            /* tablespace name */
  ts_num        number,                   /* Default tablespace NULL if none */
  flags         number,                             /* as defined in kkpac.h */
  flags2        number,                             /* as defined in kkpac.h */
  hiboundlen    number,              /* high bound text of this subpartition */
  hiboundval    varchar2(4000),                        /* length of the text */
  hiboundvalc   clob,                                      /* clob text of " */
  tlobs         ku$_tlob_comppart_list_t,                            /* lobs */
  bhiboundval   blob,                                   /* binary hiboundval */
  svcname       varchar(1000),            /* service name for IMC DISTRIBUTE */
  svcflags      number                   /* service flags for IMC DISTRIBUTE */
)
not persistable
/

create or replace type ku$_tab_tsubpart_list_t force
as table of (ku$_tab_tsubpart_t)
not persistable
/

-- ADT for table composite partitions.  Based on tabcompart$
create or replace type ku$_tab_compart_t force as object
(
  obj_num       number,                           /* obj# of comp. partition */
  schema_obj    ku$_schemaobj_t,                            /* schema object */
  dataobj_num   number,                          /* data layer object number */
  base_obj_num  number,                                     /* obj# of table */
  part_num      number,                                  /* partition number */
  hiboundlen    number,             /* length of high bound value expression */
  hiboundval    varchar2(4000),       /* text of high-bound value expression */
  hiboundvalc   clob,                                      /* clob text of " */
  ilm_policies  ku$_ilm_policy_list_t,               /* ilm policies, if any */
  subpartcnt    number,                           /* number of subpartitions */
  smatch_tpl    number,                  /* 1 = subpartitions match template */
  subparts      ku$_tab_subpart_list_t,                     /* subpartitions */
  lmatch_tpl    number,                           /* 1 = lobs match template */
  lobs          ku$_lobcomppart_list_t,                              /* lobs */
  flags         number,                                             /* flags */
  defts_name    varchar2(128),                         /* default TABLESPACE */
  defblocksize  number,          /* blocksize in bytes of default TABLESPACE */
  defpctfree    number,                                   /* default PCTFREE */
  defpctused    number,                                   /* default PCTUSED */
  definitrans   number,                                  /* default INITRANS */
  defmaxtrans   number,                                  /* default MAXTRANS */
  definiexts    number,  /* default INITIAL extent size; NULL if unspecified */
  defextsize    number,     /* default NEXT extent size; NULL if unspecified */
  defminexts    number,           /* default MINEXTENTS; NULL if unspecified */
  defmaxexts    number,           /* default MAXEXTENTS; NULL if unspecified */
  defextpct     number,          /* default PCTINCREASE; NULL if unspecified */
  deflists      number,      /* default FREELISTS value; NULL if unspecified */
  defgroups     number,      /* default FREELIST GROUPS; NULL if unspecified */
  deflogging    number,                        /* default LOGGING attribute  */
  defbufpool    number,                         /* default BUFFER_POOL value */
  analyzetime   varchar2(19),                /* timestamp when last analyzed */
  samplesize    number,                          /* samplesize for histogram */
  rowcnt        number,                                    /* number of rows */
  blkcnt        number,                                  /* number of blocks */
  empcnt        number,                            /* number of empty blocks */
  avgspc        number,                      /* average available free space */
  chncnt        number,                            /* number of chained rows */
  avgrln        number,                                /* average row length */
  spare1        number,
  spare2        number,                                  /* compression info */
  /* from dpart.bsq:                              */
  /* Only 2 bytes of spare2 are currently spoken for */
  /* byte 0   : compression attribute of the partition */
  /*            following bit patterns are possible: */
  /*            00000000 : Compression not specified */
  /*            00000001 : Compression enabled for direct load operations */
  /*            00000010 : Compression disabled      */
  /*            00000101 : Compression enabled for all operations */
  /*            00001001 : Archive Compression: level 1 */
  /*            00010001 : Archive Compression: level 2 */
  /*            00011001 : Archive Compression: level 3 */
  /*            00100001 : Archive Compression: level 4 */
  /*            00101001 : Archive Compression: level 5 */
  /*            00110001 : Archive Compression: level 6 */
  /*            00111001 : Archive Compression: level 7 */
  /*            All other bit patterns are incorrect. */
  /* byte 1   : segment creation attributes of the partition */
  /*            00000001 : Deferred segment creation is the default */
  /*            00000010 : Immediate segment creation is the default */
  /*            Other bits can be used as needed */
  spare3        number,
  defmaxsize    number,              /* default MAXSIZE; NULL if unspecified */
  bhiboundval   blob,
  svcname       varchar(1000),            /* service name for IMC DISTRIBUTE */
  svcflags      number,                  /* service flags for IMC DISTRIBUTE */
  ext_location  ku$_exttab_t           /* locations for ext table partitions */
)
not persistable
/

create or replace type ku$_tab_compart_list_t force
as table of (ku$_tab_compart_t)
not persistable
/

-- ADT for index composite partitions.  Based on indcompart$
create or replace type ku$_ind_compart_t force as object
(
  obj_num       number,                           /* obj# of comp. partition */
  schema_obj    ku$_schemaobj_t,                            /* schema object */
  dataobj_num   number,                          /* data layer object number */
  base_obj_num  number,                                     /* obj# of table */
  part_num      number,                                  /* partition number */
  hiboundlen    number,             /* length of high bound value expression */
  hiboundval    varchar2(4000),       /* text of high-bound value expression */
  hiboundvalc   clob,                                      /* clob text of " */
  subpartcnt    number,                           /* number of subpartitions */
  subparts      ku$_ind_part_list_t,                        /* subpartitions */
  flags         number,                                     /* for any flags */
  defts_name    varchar2(128),    /* default TABLESPACE; NULL if unspecified */
  defblocksize  number,          /* blocksize in bytes of default TABLESPACE */
  defpctfree    number,                                   /* default PCTFREE */
  definitrans   number,                                  /* default INITRANS */
  defmaxtrans   number,                                  /* default MAXTRANS */
  definiexts    number,  /* default INITIAL extent size; NULL if unspecified */
  defextsize    number,     /* default NEXT extent size; NULL if unspecified */
  defminexts    number,           /* default MINEXTENTS; NULL if unspecified */
  defmaxexts    number,           /* default MAXEXTENTS; NULL if unspecified */
  defextpct     number,          /* default PCTINCREASE; NULL if unspecified */
  deflists      number,      /* default FREELISTS value; NULL if unspecified */
  defgroups     number,         /* default FREELIST GROUPS (N/A for indexes) */
  deflogging    number,                         /* default LOGGING attribute */
  defbufpool    number,                         /* default BUFFER_POOL value */
  analyzetime   varchar2(19),                /* timestamp when last analyzed */
  samplesize    number,                          /* samplesize for histogram */
  rowcnt        number,                                    /* number of rows */
  blevel        number,                                      /* B-tree level */
  leafcnt       number,                             /* number of leaf blocks */
  distkey       number,                           /* number of distinct keys */
  lblkkey       number,             /* average number of leaf blocks per key */
  dblkkey       number,             /* average number of data blocks per key */
  clufac        number,                                 /* clustering factor */
  spare1        number,
  spare2        number,
  spare3        number,
  defmaxsize    number               /* default MAXSIZE; NULL if unspecified */
)
not persistable
/

create or replace type ku$_ind_compart_list_t force
as table of (ku$_ind_compart_t)
not persistable
/

-- ADT for partitioning columns.  Based on partcol$
create or replace type ku$_part_col_t force as object
(
  obj_num       number,                      /* object number of base object */
  intcol_num    number,                            /* internal column number */
  col           ku$_simple_col_t,       /* the column object */
  pos_num       number,                 /* position of col. in key */
  spare1        number                  /* spare column */
)
not persistable
/

create or replace type ku$_part_col_list_t force as table of (ku$_part_col_t)
not persistable
/

-- insert_tsn_list$: for the store-in clause for interval partitioned tables.
-- see dpart.bsq
create or replace type ku$_insert_ts_t force as object
(
  base_obj_num  number,           /* object number of base partitioned table */
  position_num  number,          /* position of tablespace specified by user */
  ts_num        number,                                 /* tablespace number */
  name          varchar2(128)                          /* name of tablespace */
)
not persistable
/
create or replace type ku$_insert_ts_list_t force as table of (ku$_insert_ts_t)
not persistable
/

-- ADT for partitioned objects; included in table/index-specific types.
-- Based on partobj$

create or replace type ku$_partobj_t force as object
(
  obj_num       number,                 /* obj# of partitioned tab. or index */
  parttype      number,                                 /* partitioning type */
             /* 1 = range, 2 = hash, 3 = system 4 = List, 5 = Ref;           */
             /* If range/list/hash, subparttype may be non-zero to indicate  */
             /* type of composite partitioning method.                       */
             /* see subparttype(spare1) for form of subpartitioning used.    */
  partcnt       number,                              /* number of partitions */
  partkeycols   number,                  /* # of columns in partitioning key */
  flags         number,                                             /* flags */
                                    /* 0x01 = local      index      */
                                    /* 0x02 = prefixed   index      */
                                    /* 0x04 = no-align   index      */
                                    /* 0x08 = domain     index      */
                                    /* 0x10 = compressed index      */
                                    /* 0x20 = table has ref ptn'ed children */
                                    /* 0x40 = table is interval partitioned */
                                    /* 0x80 = System managed domain index   */
                                   /* 0x100 = IOT Top index         */
                                   /* 0x200 = LOB column index      */
                                   /* 0x400 = Tracked Table IOT Top index  */
                                   /* 0x800 = Segment creation deferred */
                                  /* 0x1000 = Segment creation immediate */
                /* from kkpac.h:                                             */
                /* LOCAL_INDEX          0x0001 = local partitioned index     */
                /* PREFIXED_INDEX       0x0002 = prefixed index              */
                /* NOALIGN_INDEX        0x0004 = local system part. index    */
                /*                               (alignment means nothing    */
                /*                                because there are          */
                /*                                no part. columns)          */
                /* DOMAIN_INDEX         0x0008 = local domain index          */
                /* COMPRESSED_INDEX     0x0010 = index partitions            */
                /*                               compressed by default       */
  defts_name    varchar2(128),                    /* default tablespace name */
  defblocksize  number,          /* blocksize in bytes of default TABLESPACE */
  defpctfree    number,                                   /* default PCTFREE */
  defpctused    number,                 /* default PCTUSED (N/A for indexes) */
  defpctthres   number,             /* default PCTTHRESHOLD (N/A for tables) */
  definitrans   number,                                  /* default INITRANS */
  defmaxtrans   number,                                  /* default MAXTRANS */
  definiexts    number,                       /* default INITIAL extent size */
  defextsize    number,                          /* default NEXT extent size */
  defminexts    number,                                /* default MINEXTENTS */
  defmaxexts    number,                                /* default MAXEXTENTS */
  defextpct     number,                               /* default PCTINCREASE */
  deflists      number,                           /* default FREELISTS value */
  defgroups     number,         /* default FREELIST GROUPS (N/A for indexes) */
  deflogging    number,           /* default logging attribute of the object */
  defbufpool    number,                         /* default BUFFER_POOL value */
  spare2        number,                    /* subpartitioning info bytes 0-3 */
  /* from dpart.bsq:                              */
  /* 5 bytes of spare2 are currently spoken for */
  /* byte 0   : subparttype - non-zero implies Composite partitioning */
  /*            (1 - Range, 2 - Hash, 3 - System, 4 - List); */
  /* byte 1   : subpartkeycols; */
  /* bytes 2-3: defsubpartcnt */
  /* byte 4   : compression attribute of the partition */
  /*            following bit patterns are possible: */
  /*            00000000 : Compression not specified */
  /*            00000001 : Compression enabled for direct load operations */
  /*            00000010 : Compression disabled      */
  /*            00000101 : Compression enabled for all operations */
  /*            00001001 : Archive Compression: level 1 */
  /*            00010001 : Archive Compression: level 2 */
  /*            00011001 : Archive Compression: level 3 */
  /*            00100001 : Archive Compression: level 4 */
  /*            00101001 : Archive Compression: level 5 */
  /*            00110001 : Archive Compression: level 6 */
  /*            00111001 : Archive Compression: level 7 */
  /*            All other bit patterns are incorrect. */
  imc_flags     number,
  /* Bytes 5 and above from spare2 are now stored in imc_flags.             */
  /*  modular arithmetic used for decoding flags fail wiht large numbers,   */
  /*  due to using floating point.                                          */
  spare3        number,                                     /* spare column  */
  /* byte 1 of spare3 stores dtydef of interval (either DTYNUM, DTYIYM, or
   *  DTYIDS)
   */
  definclcol    number,                          /* default iot include col# */
  defparameters varchar2(1000),                       /* from indpart_param$ */
  /* interval_str and interval_bival new in 11g                              */
  interval_str varchar2(1000),                   /* string of interval value */
  interval_bival raw(200),              /* binary representation of interval */
  insert_ts_list ku$_insert_ts_list_t,      /* store-in list for interval pt */
  defmaxsize    number,                                   /* default MAXSIZE */
  /* New for 12.2, interval support at subpartition level */
  subinterval_str varchar2(1000),        /* string of subpart interval value */
  subinterval_bival raw(200),   /* binary representation of subpart interval */
  svcname       varchar(1000),            /* service name for IMC DISTRIBUTE */
  svcflags      number                   /* service flags for IMC DISTRIBUTE */
)
not persistable
/

-- ADT for partitioned tables

create or replace type ku$_tab_partobj_t force as object
(
  obj_num       number,                         /* obj# of partitioned table */
  partobj       ku$_partobj_t,                     /* Base partitioning info */
  partcols      ku$_part_col_list_t,         /* list of partitioning columns */
  subpartcols   ku$_part_col_list_t,      /* list of subpartitioning columns */
  part_list     ku$_tab_part_list_t,                 /* table partition list */
  compart_list  ku$_tab_compart_list_t,    /* table composite partition list */
  tsubparts     ku$_tab_tsubpart_list_t        /* template subpartition list */
)
not persistable
/

-- ADT for partitioned indexes;

create or replace type ku$_ind_partobj_t force as object
(
  obj_num       number,                 /* obj# of partitioned table */
  partobj       ku$_partobj_t,          /* Base partitioning info */
  partcols      ku$_part_col_list_t,         /* list of partitioning columns */
  subpartcols   ku$_part_col_list_t,      /* list of subpartitioning columns */
  part_list     ku$_ind_part_list_t,                 /* index partition list */
  compart_list  ku$_ind_compart_list_t    /* index composite partition list */
)
not persistable
/

-------------------------------------------------------------------------------
--                              DOMAIN INDEX
-------------------------------------------------------------------------------
-- UDT for domain index's secondary tables
create or replace type ku$_domidx_2ndtab_t force as object
(
  obj_num       number,                            /* object number of index */
  secobj_num    number,                 /* object number of secondary object */
  schema_obj    ku$_schemaobj_t                          /* secondary object */
)
not persistable
/

create or replace type ku$_domidx_2ndtab_list_t
 force as table of (ku$_domidx_2ndtab_t)
not persistable
/

-- ADT for domain index plsql code
create or replace type ku$_domidx_plsql_t force as object
(
  obj_num       number,                 /* object # */
  plsql         ku$_procobj_lines       /* plsql code */
)
not persistable
/

-------------------------------------------------------------------------------
--                              INDEX
-------------------------------------------------------------------------------

-- UDTs for bitmap join index information

create or replace type ku$_jijoin_table_t force as object
(
  obj_num       number,                                          /* object # */
  tabobj_num    number,                                  /* table obj number */
  owner_name    varchar2(128),                                /* table owner */
  name          varchar2(128)                                /* table name  */
)
not persistable
/

create or replace type ku$_jijoin_table_list_t force
as table of  (ku$_jijoin_table_t)
not persistable
/

create or replace type ku$_jijoin_t force as object
(
  obj_num       number,                                          /* object # */
  tab1obj_num   number,                                /* table 1 obj number */
  tab1col_num   number,                /* internal column number for table 1 */
  tab2obj_num   number,                                /* table 2 obj number */
  tab2col_num   number,                /* internal column number for table 2 */
  tab1col       ku$_simple_col_t,                          /* table 1 column */
  tab2col       ku$_simple_col_t,                          /* table 2 column */
  joinop        number,                /* Op code as defined in opndef.h (=) */
  flags         number,                                        /* misc flags */
  tab1inst_num  number,           /* instance of table 1 (for multiple refs) */
  tab2inst_num  number            /* instance of table 2 (for multiple refs) */
)
not persistable
/

create or replace type ku$_jijoin_list_t force as table of (ku$_jijoin_t)
not persistable
/

-- UDT for indexes
create or replace type ku$_index_t force as object
(
  vers_major    char(1),                              /* UDT major version # */
  vers_minor    char(2),                              /* UDT minor version # */
  obj_num       number,                                          /* object # */
  schema_obj    ku$_schemaobj_t,                            /* schema object */
  col_list      ku$_index_col_list_t,               /* list of index columns */
  ts_name       varchar2(128),                                 /* tablespace */
  blocksize     number,                            /* size of block in bytes */
  storage       ku$_storage_t,                                    /* storage */
  deferred_stg  ku$_deferred_stg_t,                      /* deferred storage */
  dataobj_num   number,                          /* data layer object number */
  base_obj_num  number,                                     /* base object # */
  base_obj      ku$_schemaobj_t,                              /* base object */
  anc_obj       ku$_schemaobj_t,           /* Ancestor object - if available */
  indmethod_num number,             /* object # for cooperative index method */
  indtype_name  varchar2(128),                             /* indextype name */
  indtype_owner varchar2(128),                            /* indextype owner */
  secobjs       ku$_domidx_2ndtab_list_t,                /* secondary tables */
  plsql_code    ku$_domidx_plsql_t,               /* domain index plsql code */
  jijoin_tabs   ku$_jijoin_table_list_t, /* jijoin tables if bitmap join idx */
  jijoin        ku$_jijoin_list_t,       /* jijoin data if bitmap join index */
  cols          number,                                 /* number of columns */
  pct_free      number,          /* minimum free space percentage in a block */
  initrans      number,                     /* initial number of transaction */
  maxtrans      number,                    /* maximum number of transactions */
  pct_thres     number,           /* iot overflow threshold, null if not iot */
  type_num      number,                       /* what kind of index is this? */
  flags         number,                                     /* mutable flags */
  property      number,             /* immutable flags for life of the index */
  blevel        number,                                       /* btree level */
  leafcnt       number,                                  /* # of leaf blocks */
  distkey       number,                                   /* # distinct keys */
  lblkkey       number,                          /* avg # of leaf blocks/key */
  dblkkey       number,                          /* avg # of data blocks/key */
  clufac        number,                                 /* clustering factor */
  analyzetime   varchar2(19),                /* timestamp when last analyzed */
  samplesize    number,                 /* number of rows sampled by Analyze */
  rowcnt        number,                       /* number of rows in the index */
  intcols       number,                        /* number of internal columns */
  degree        number,           /* # of parallel query slaves per instance */
  instances     number,             /* # of OPS instances for parallel query */
  trunccnt      number,                        /* re-used for iots 'inclcol' */
  numcolsdep    number,         /* number of columns depended on, >= intcols */
  numkeycols    number,             /* # of key columns in compressed prefix */
  part_obj      ku$_ind_partobj_t,                /* null if not partitioned */
  spare3        number,
  spare4        varchar2(1000),     /* used for parameter str for domain idx */
  spare5        varchar2(1000),
  spare6        varchar2(19),
  for_pkoid     number,                     /* 1 = enabled index for a pkoid */
  for_refpar    number,      /* 1 = used for ref partition parent constraint */
  oid_or_setid  number,        /* !0 = hidden unique index on OID column (1) */
                                  /* or nested tbl column's SETID column (2) */
  base_property number,             /* property flags of base object (table) */
  base_property2 number,
  /* The following fields are used only for {sub}partition promotion (shard) */
  ind_part      ku$_ind_part_t,                /* p2t - index partition info */
  ind_subpart   ku$_ind_part_t,            /* sp2t - index subpartition info */
  tabpart_obj_num number,    /* obj_num of correspoding table {sub}partition */
  ind_part_name varchar(128)   /* index partition for domain_index_partition */
)
not persistable
/

create or replace type ku$_index_list_t force as table of (ku$_index_t)
not persistable;
/

-------------------------------------------------------------------------------
--                              CONSTRAINTS
-------------------------------------------------------------------------------
-- type for columns in constraint.  Only includes attributes
-- required to generate appropriate DDL.
create or replace type ku$_constraint_col_t force as object
(
  con_num       number,                                 /* constraint number */
  obj_num       number,                      /* object number of base object */
  intcol_num    number,                            /* internal column number */
  pos_num       number,                 /* column position number as created */
  spare1        number,                       /* additional constraint flags */
  oid_or_setid  number,   /* !0 = hidden unique constraint on OID column (1) */
                                  /* or nested tbl column's SETID column (2) */
  col           ku$_simple_col_t                                   /* column */
)
not persistable
/

create or replace type ku$_constraint_col_list_t
 force as TABLE of (ku$_constraint_col_t) not persistable;
/

-- Types for non REF/pkREF table/view constraints. Based on con$ and cdef$.
--  (Does not include the spare columns in con$).
-- Ignored types: view WITH READ ONLY(6), cluster hash expr.(8), and
--                REF/pkREF (9,10,13) constraints.
-- We distinguish 3 types of table/view constraint:
-- (1) those which don't need key information to generate DDL
--     (column Not NULL, View WITH CHECK OPTION);
-- (2) those with one set of keys (columns) or a condition expression
--     (primary key, unique key, CHECK, SUpplemental Log Groups) --
--     this kind of constraint is implemented with an index for prim/unique.
--     (also includes the (keyless) Supplemental Log Data 'constraints').
-- (3) those with 2 sets of keys (columns) - referential.

create or replace type ku$_constraint0_t force as object
(
  owner_num     number,                                      /* owner user # */
  name          varchar2(128),                            /* constraint name */
  con_num       number,                                 /* constraint number */
  obj_num       number,                  /* object number of base table/view */
  numcols       number,                   /* number of columns in constraint */
  contype       number,                                   /* constraint type */
                                              /* 5 = view with CHECK OPTION, */
               /* 7 - table check constraint associated with column NOT NULL */
                                  /* 11 - REF/ADT column with NOT NULL const */
  enabled       number,           /* is constraint enabled? NULL if disabled */
  intcols       number,              /* #  of internal columns in constraint */
  mtime         varchar2(19),               /* date this constraint was last
                                                            enabled-disabled */
  flags         number                                              /* flags */
                  /* 0x01 constraint is deferrable */
                  /* 0x02 constraint is deferred */
                  /* 0x04 constraint has been system validated */
                  /* 0x08 constraint name is system generated */
                  /* 0x10 (16) constraint is BAD, depends on current century */
                  /* 0x20 (32) optimizer should RELY on this constraint */
                  /* 0x40 (64) Log Group ALWAYS option */
                  /* 0x80 (128) (view related) constraint is invalid */
                  /* 0x100 (256) constraint depends on a view */
                  /* 0x200 (512) partitioning constraint on FK */
                  /* 0x400 (1024) partitioning constraint on PK/UK */
)
not persistable
/

create or replace type ku$_constraint0_list_t force
as table of (ku$_constraint0_t) not persistable;
/

-- keyed/condition constraint

create or replace type ku$_constraint1_t force as object
(
  owner_num     number,                                      /* owner user # */
  name          varchar2(128),                            /* constraint name */
  con_num       number,                                 /* constraint number */
  obj_num       number,                  /* object number of base table/view */
  property      number,                     /* properties of base table/view */
  property2     number,                     /* properties of base table/view */
  property3     number,                     /* properties of base table/view */
  numcols       number,                   /* number of columns in constraint */
  contype       number,                                   /* constraint type */
                               -- table check (condition-no keys) (1),
                               -- primary key (2),
                               -- unique key (3),
                               -- supplemental log groups (w/ keys) (12),
                               -- supplemental log data (no keys) (14,15,16,17)
  enabled       number,           /* is constraint enabled? NULL if disabled */
  condlength    number,                 /* table check condition text length */
  condition     clob,                          /* table check condition text */
  parsed_cond   sys.xmltype,                 /* parsed table check condition */
  intcols       number,              /* #  of internal columns in constraint */
  mtime         varchar2(19), /* date this constraint was last enabled-disabled */
  flags         number,                                             /* flags */
                   /* see ku$_constraint0_t for flag bit definitions */
  oid_or_setid  number,   /* !0 = hidden unique constraint on OID column (1) */
                                  /* or nested tbl column's SETID column (2) */
  col_list      ku$_constraint_col_list_t,                        /* columns */
  ind           ku$_index_t                                /* index metadata */
)
not persistable
/

create or replace type ku$_constraint1_list_t force
as table of (ku$_constraint1_t) not persistable;
/

-- referential constraint

create or replace type ku$_constraint2_t force as object
(
  owner_num     number,                                      /* owner user # */
  name          varchar2(128),                            /* constraint name */
  con_num       number,                                 /* constraint number */
  obj_num       number,                  /* object number of base table/view */
  numcols       number,                   /* number of columns in constraint */
  contype       number,                                   /* constraint type */
                                                     /* only 4 = referential */
  robj_num      number,                 /* object number of referenced table */
  rcon_num      number,                 /* constraint# of referenced columns */
  rrules        varchar2(3),                 /* future: use this for pendant */
  match_num     number,                 /* referential constraint match type */
  refact        number,                                /* referential action */
  enabled       number,           /* is constraint enabled? NULL if disabled */
  intcols       number,              /* #  of internal columns in constraint */
  mtime         varchar2(19),                    /* date this constraint was */
                                                   /*  last enabled-disabled */
  flags         number,                                             /* flags */
                   /* see ku$_constraint0_t for flag bit definitions */
  schema_obj    ku$_schemaobj_t,                  /* referenced table object */
  src_col_list  ku$_constraint_col_list_t,                 /* source columns */
  tgt_col_list  ku$_constraint_col_list_t                  /* target columns */
)
not persistable
/

create or replace type ku$_constraint2_list_t force
as table of (ku$_constraint2_t) not persistable;
/

-- REF/pkREF constraints
create or replace type ku$_pkref_constraint_t force as object
(
  obj_num       number,                      /* object number of base object */
  col_num       number,                                     /* column number */
  intcol_num    number,                            /* internal column number */
  reftyp        number,                                     /* REF type flag */
                                                     /* 0x01 = REF is scoped */
                                             /* 0x02 = REF stored with rowid */
                                             /* 0x04 = Primary key based ref */
                            /* 0x08 = Unscoped primary key based ref allowed */
        /* 0x10 (16) = ref generated for xdb:SQLInline="false" (bug 6676049) */
  property      number,                     /* column properties (bit flags) */
  name          varchar2(128),                             /* name of column */
  attrname      varchar2(4000),/* name of type attr. column: null if != type */
  schema_obj    ku$_schemaobj_t,                         /* referenced table */
  foreignkey    number,               /* 1= scoped REF is also a foreign key */
  pk_col_list   ku$_simple_col_list_t   /* any pkREF refd. pkey constr. cols */
)
not persistable
/

create or replace type ku$_pkref_constraint_list_t
 force as table of (ku$_pkref_constraint_t) not persistable;
/

create or replace type ku$_constraint_t force as object
(
  vers_major    char(1),                              /* UDT major version # */
  vers_minor    char(1),                              /* UDT minor version # */
  con_num       number,                                 /* constraint number */
  owner_name    varchar2(128),                        /* owner of constraint */
  name          varchar2(128),                         /* name of constraint */
  flags         number,                                             /* flags */
  type_num      number,                                  /* constraint type: */
                            /* 1 = table check, 2 = primary key, 3 = unique, */
                             /* 4 = referential, 5 = view with CHECK OPTION, */
                                                 /* 6 = view READ ONLY check */
               /* 7 - table check constraint associated with column NOT NULL */
                                   /* 8 - hash expressions for hash clusters */
                                         /* 9 - Scoped REF column constraint */
                                    /* 10 - REF column WITH ROWID constraint */
                                  /* 11 - REF/ADT column with NOT NULL const */
                                 /* 12 - Log Groups for supplemental logging */
                                    /* 14 - Primary key supplemental logging */
                                     /* 15 - Unique key supplemental logging */
                                    /* 16 - Foreign key supplemental logging */
                                     /* 17 - All column supplemental logging */
  base_obj_num  number,                                     /* base object # */
  base_obj      ku$_schemaobj_t,            /* base table/view schema object */
  col           ku$_simple_col_t,        /* column info for con 0 constraint */
  con0          ku$_constraint0_t,                       /* con 0 constraint */
  con1          ku$_constraint1_t                        /* con 1 constraint */
)
not persistable
/

-- For stand alone (ALTER TABLE) referential (foreign key) constraints
create or replace type ku$_ref_constraint_t force as object
(
  vers_major    char(1),                              /* UDT major version # */
  vers_minor    char(1),                              /* UDT minor version # */
  con_num       number,                                 /* constraint number */
  owner_name    varchar2(128),                        /* owner of constraint */
  name          varchar2(128),                         /* name of constraint */
  flags         number,                                             /* flags */
  base_obj_num  number,                                     /* base object # */
  base_obj      ku$_schemaobj_t,            /* base table/view schema object */
  con2          ku$_constraint2_t                       /* type 2 constraint */
)
not persistable
/

-------------------------------------------------------------------------------
--                              SEQUENCE
-------------------------------------------------------------------------------
-- 
create or replace type ku$_sequence_t force as object
(
  vers_major    char(1),                              /* UDT major version # */
  vers_minor    char(1),                              /* UDT minor version # */
  obj_num       number,                            /* sequence object number */
  schema_obj    ku$_schemaobj_t,                   /* sequence schema object */
  incre         number,                     /* the sequence number increment */
  minvalue      varchar2(28),                   /* minimum value of sequence */
  maxvalue      varchar2(28),                   /* maximum value of sequence */
  cycle         number,                               /* 0 = FALSE, 1 = TRUE */
  seq_order     number,                               /* 0 = FALSE, 1 = TRUE */
  cache         number,                          /* how many to cache in sga */
  highwater     varchar2(29),                        /* disk high water mark */
  seq_audit     varchar2(38),                            /* auditing options */
  flags         number                               /* 0x08 LOGICAL STANDBY */
                                                           /* 0x16 [NO]SCALE */
                                       /* 0x2048 [NO]EXTEND (only for SCALE) */
)
not persistable
/
---
-------------------------------------------------------------------------------
--                                      IDENTITY COLUMNS
-------------------------------------------------------------------------------
-- Define adt and view for Identity Column support.
create or replace type ku$_identity_col_t force as object
(
  vers_major    char(1),                              /* UDT major version # */
  vers_minor    char(2),                              /* UDT minor version # */
  obj_num       number,                           /* obj# of identity column */
  name          varchar(128),                     /* Name of Identity column */
  property2     number,                    /* identity column property flags */
  intcol_num    number,
  seqobj_num    number,
  start_with    number,
  sequence      ku$_sequence_t
)
not persistable
/
grant execute on ku$_identity_col_t to public
/

-- Identity Column Object type structures;
create or replace type ku$_identity_colobj_t force as object
(
  vers_major    char(1),                              /* UDT major version # */
  vers_minor    char(2),                              /* UDT minor version # */
  obj_num       number,                      /* object number of base object */
  base_obj      ku$_schemaobj_t,                            /* schema object */
  property      number,                     /* column properties (bit flags) */
  property2     number,                        /*    more column properties  */
  identity_col  ku$_identity_col_t               /* Identity Col information */
)
not persistable
/
grant execute on ku$_identity_colobj_t to public
/

-------------------------------------------------------------------------------
--                              TYPED COLUMNS
-------------------------------------------------------------------------------

-- UDTs for typed columns

create or replace type ku$_subcoltype_t force as object
(
  obj_num       number,                               /* obj# of base object */
  intcol_num    number,                            /* internal column number */
  toid          raw(16),                                             /* toid */
  schema_obj    ku$_schemaobj_t,                            /* schema object */
  version       number,                      /* internal type version number */
  hashcode      raw(17),                                 /* Version hashcode */
  typeid        raw(16), /* short typeid value (for non final and sub types) */
  intcols       number,                        /* number of internal columns */
                                          /* storing the exploded ADT column */
  intcol_nums   raw(2000),            /* list of intcol#s of columns storing */
                          /* the unpacked ADT column; stored in packed form; */
                                          /* each intcol# is stored as a ub2 */
  flags         number)                                            /* flags */
                          /* 0x01 - This type was stated in the IS OF clause */
                          /* 0x02 - This type has ONLY in the IS OF clause   */
not persistable
/

create or replace type ku$_subcoltype_list_t force 
as table of (ku$_subcoltype_t)
not persistable
/

create or replace type ku$_coltype_t force as object
(
  obj_num       number,                               /* obj# of base object */
  col_num       number,                                     /* column number */
  intcol_num    number,                            /* internal column number */
  flags         number,                                             /* flags */
  toid          raw(16),                                             /* toid */
  version       number,                      /* internal type version number */
  packed        number,                          /* 0 = unpacked, 1 = packed */
  intcols       number,                        /* number of internal columns */
                                          /* storing the exploded ADT column */
  intcol_nums   raw(2000),            /* list of intcol#s of columns storing */
                          /* the unpacked ADT column; stored in packed form; */
                                          /* each intcol# is stored as a ub2 */
  hashcode      raw(17),                                 /* Version hashcode */
  has_tstz      char(1),        /* 'Y' = this is a varray with TSTZ elements */
  typidcol_num  number,           /* intcol# of the type discriminant column */
  synobj_num    number,              /* obj# of type synonym of the col type */
  syn_name      varchar2(128),                      /* type synonym (if any) */
  syn_owner     varchar2(128),                              /* synonym owner */
  subtype_list  ku$_subcoltype_list_t,                   /* subtype metadata */
  schema_obj    ku$_schemaobj_t,                            /* schema object */
  anydata_list  ku$_Unpacked_AnyData_t      /* types in unpacked anydata col */
)
not persistable
/

-------------------------------------------------------------------------------
--                              XML SCHEMA / OPAQUE TYPE
-------------------------------------------------------------------------------

-- For reasons having to do with compatibility, the XDB objects
-- can't be created by catproc.sql; they must instead be created
-- by a separate script catqm.sql.  Since catmeta.sql is run
-- by catproc.sql, we here create real UDTs for ku$_xmlschema_t
-- and ku$_xmlschema_elmt_t but the corresponding object views
-- are fake.  The real object views are defined in catmetx.sql
-- which is invoked by catqm.sql.

-- UDT for XML Schema

create or replace type ku$_xmlschema_t force as object
(
  vers_major    char(1),                              /* UDT major version # */
  vers_minor    char(2),                              /* UDT minor version # */
  owner_num     number,                                 /* owner user number */
  owner_name    varchar2(128 char),                             /* owner name */
  url           varchar2(700 char),                            /* schema URL */
-- The int_objname will be needed when Data Pump supports XML schemas
-- Fetched by (see catxdbv.sql)
--   xdb.xdb$Extname2Intname(s.xmldata.schema_url,s.xmldata.schema_owner)
--  int_objname varchar2(30),                         /* object name in obj$ */
  schemaoid     raw(16),                                       /* schema OID */
  local         number,        /* used as flags: 1 = set if local            */
                               /*                2 = set if stored as binary */
  schema_level  number,          /* depth of dependence on other xml schemas */
  schema_val    clob,                                /* the XMLSchema itself */
  stripped_val  clob                 /* the XMLSchema with username stripped */
)
not persistable
/

-- UDT for XML Schema element in opaque column

create or replace type ku$_xmlschema_elmt_t force as object
(
  obj_num       number,                                 /* owning table obj# */
  intcol_num    number,                             /* owning column intcol# */
  schemaoid     raw(16),                                   /* schema oid col */
  xmlschema     varchar2(700),                     /* The name of the schema */
  elemnum       number,                                    /* element number */
  element_name  varchar2(256)                     /* The name of the element */
)
not persistable
/

-- UDT for opaque type
create or replace type ku$_opqtype_t force as object
(
  obj_num       number,                               /* obj# of base object */
  intcol_num    number,                            /* internal column number */
  type          number,                            /* The opaque type - type */
                                                           /* 0x01 - XMLType */
  flags         number,                         /* flags for the opaque type */
                              /* -------------- XMLType flags ---------
                               * 0x0001 (1) -- XMLType stored as object
                               * 0x0002 (2) -- XMLType schema is specified
                               * 0x0004 (4) -- XMLType stored as lob
                               * 0x0008 (8) -- XMLType stores extra column
                               *
                               * 0x0020 (32)-- XMLType table is out-of-line
                               * 0x0040 (64)-- XMLType stored as binary
                               * 0x0080 (128)- XMLType binary ANYSCHEMA
                               * 0x0100 (256)- XMLType binary NO non-schema
                               */
  /* Flags for XMLType (type == 0x01). Override them when necessary  */
  lobcol        number,                                        /* lob column */
  objcol        number,                                    /* obj rel column */
  extracol      number,                                    /* extra info col */
  schemaoid     raw(16),                                   /* schema oid col */
  elemnum       number,                                    /* element number */
  schema_elmt   ku$_xmlschema_elmt_t
)
not persistable
/

-------------------------------------------------------------------------------
--                              OID INDEX
-------------------------------------------------------------------------------

-- ADT for OID index (for object tables)
create or replace type ku$_oidindex_t force as object
(
  obj_num       number,                              /* obj# of owning table */
  intcol_num    number,                            /* internal column number */
  name          varchar2(128),                                 /* index name */
  flags         number,                     /* psuedo constraint defer flags */
  storage       ku$_storage_t,                                    /* storage */
  deferred_stg  ku$_deferred_stg_t,                      /* deferred storage */
  ts_name       varchar2(128),                            /* tablespace name */
  blocksize     number,                            /* size of block in bytes */
  pct_free      number,                   /* min. free space %age in a block */
  initrans      number,                     /* initial number of transaction */
  maxtrans      number                      /* maximum number of transaction */
)
not persistable
/

---
-------------------------------------------------------------------------------
--                              TABLE COLUMNS
-------------------------------------------------------------------------------
-- ADT for table columns (column data for COL_LISTtable meatdata)
--   there is a single type, but there are 3 views:
--    ku$_prim_column_view - primitive columns (builtin datatypes except LOBs)
--    ku$_column_view - columns, including LOBs
--    ku$_pcolumn_view -  columns, including LOBs and lob partition info
create or replace type ku$_tab_column_t force as object
(
-- col_comm 
  obj_num       number,                      /* object number of base object */
  col_num       number,                          /* column number as created */
  intcol_num    number,                            /* internal column number */
  segcol_num    number,                          /* column number in segment */
  segcollength  number,                      /* length of the segment column */
  offset        number,                                  /* offset of column */
  property      number,                     /* column properties (bit flags) */
  property2     number,                        /*    more column properties  */
  /* The low 32 bits of col$.property are in "property"; "property2" has     */
  /* the high-order bits. Here are the bit definitions of col$.property:     */
                /* 0x0001 =       1 = ADT attribute column                   */
                /* 0x0002 =       2 = OID column                             */
                /* 0x0004 =       4 = nested table column                    */
                /* 0x0008 =       8 = virtual column                         */
                /* 0x0010 =      16 = nested table's SETID$ column           */
                /* 0x0020 =      32 = hidden column                          */
                /* 0x0040 =      64 = primary-key based OID column           */
                /* 0x0080 =     128 = column is stored in a lob              */
                /* 0x0100 =     256 = system-generated column                */
                /* 0x0200 =     512 = rowinfo column of typed table/view     */
                /* 0x0400 =    1024 = nested table columns setid             */
                /* 0x0800 =    2048 = column not insertable                  */
                /* 0x1000 =    4096 = column not updatable                   */
                /* 0x2000 =    8192 = column not deletable                   */
                /* 0x4000 =   16384 = dropped column                         */
                /* 0x8000 =   32768 = unused column - data still in row      */
            /* 0x00010000 =   65536 = virtual column                         */
            /* 0x00020000 =  131072 = place DESCEND operator on top          */
            /* 0x00040000 =  262144 = virtual column is NLS dependent        */
            /* 0x00080000 =  524288 = ref column (present as oid col)        */
            /* 0x00100000 = 1048576 = hidden snapshot base table column      */
            /* 0x00200000 = 2097152 = attribute column of a user-defined ref */
            /* 0x00400000 = 4194304 = export hidden column,RLS on hidden col */
            /* 0x00800000 = 8388608 = string column measured in characters   */
           /* 0x01000000 = 16777216 = virtual column expression specified    */
           /* 0x02000000 = 33554432 = typeid column                          */
           /* 0x04000000 = 67108864 = Column is encrypted                    */
          /* 0x20000000 = 536870912 = Column is encrypted without salt       */
  /* property2:                                                              */
      /* 0x000800000000 = 34359738368 (8) = default with sequence            */
      /* 0x001000000000 = 68719476736 (16) = default on null                 */
      /* 0x002000000000 = 137438953472 (32) = generated always identity col  */
      /* 0x004000000000 = 274877906944 (64)= generated by default iden col   */
      /* 0x008000000000 = (128)= guard column                                */
  name          varchar2(128),                             /* name of column */
  type_num      number,                               /* data type of column */
  length        number,                         /* length of column in bytes */
  fixedstorage  number,             /* flags: 0x01 = fixed, 0x02 = read-only */
  precision_num number,                                         /* precision */
  scale         number,                                             /* scale */
  not_null      number,                               /* 0 = nulls permitted */
                                                 /* > 0 = no NULLs permitted */
  deflength     number,                   /* default value expr. text length */
  default_val   varchar2(4000),     /* default value expression text <= 4000 */
  default_valc  clob,                /* default value expression text > 4000 */
  parsed_def    sys.xmltype,                    /* parsed default expression */
  binarydefval  clob,                    /* default replace null with clause */
  guard_id      number,                              /* guard col identifier */
  charsetid     number,                              /* NLS character set id */
  charsetform   number,
  con           ku$_constraint0_t,                    /* not null constraint */
  spare1        number,                      /* fractional seconds precision */
  spare2        number,                  /* interval leading field precision */
  spare3        number,
  spare4        varchar2(1000),          /* NLS settings for this expression */
  spare5        varchar2(1000),
  spare6        varchar2(19),
  identity_col  ku$_identity_col_t,              /* Identity Col information */
  evaledition_num number,                       /* evaluation edition number */
  unusablebef_num number,                  /* unusable before edition number */
  unusablebeg_num number,          /* unusable beginning with edition number */
  attrname2     varchar2(4000),  /* Unpacked anydata attrib w/o sys gen name */
  col_sortkey   number,                              /* sort key for columns */
  collname      varchar2(128),                             /* Collation name */
  collintcol_num number,       /* Reference to actual collated column number */
-- col_full / col_prim
  attrname      varchar2(4000),/* name of type attr. column: null if != type */
  fullattrname  varchar2(4000),      /* expanded attrname for DTYNAR columns */
  base_intcol_num number,    /* internal column number of base column, i.e., */
                           /* the intcol# of the first column with this col# */
  base_col_type number, /* base column type: 1 = UDT, 2 = XMLType OR or CSX, */
                        /*                   3 = XMLType as CLOB,  0 = other */
  base_col_name varchar2(128),     /* for any xmltype, name of xmltype column*/

  typemd        ku$_coltype_t,     /* type metadata. null if not a typed col */
  oidindex      ku$_oidindex_t,   /*oidindex if col is OID$ col of obj table */
-- lobs
  lobmd         ku$_lob_t,            /* lob metadata. null if not a lob col */
  opqmd         ku$_opqtype_t,   /* opaque metadata. null if not type opaque */
  plobmd        ku$_partlob_t,   /* part lob metadata. null if not a lob col */
  part_objnum   number                 /* for p2t, original partition objnum */
)
not persistable
/       

create or replace type ku$_tab_column_list_t force
as table of (ku$_tab_column_t)
not persistable
/

-------------------------------------------------------------------------------
-- datapump support for 12c project 32006 
-- Realtime Application-controlled Data Masking (RADM)
-------------------------------------------------------------------------------

-- UDT for the 'RADM_POLICY_EXPR' homogeneous type,
create or replace type ku$_radm_policy_expr_t force as object
(
  vers_major   char(1),                               /* UDT major version # */
  vers_minor   char(1),                               /* UDT minor version # */
  obj_num      number,                           /* expression object number */
  def_onum     number,            /* default policy expression object number */
  ename        varchar2(128),                             /* expression name */
  expr         varchar2(4000),                                 /* expression */
  version      varchar2(30),               /* version that created expression*/
  descr        varchar2(4000),                                /* description */
  compat       varchar2(30),         /* Value of COMPATIBLE at creation time */
  spare1       varchar2(1000),
  spare2       date,
  spare3       timestamp,
  spare4       number,
  spare5       number,
  spare6       number
)
not persistable
/

-- UDT for the 'RADM_MC' homogeneous type,
-- part of 'RADM_POLICY_T' as a list,
-- representing the column specific information for data masking policies 
-- supplied by means of the ALTER_POLICY api.
create or replace type ku$_radm_mc_t force as object
(
  vers_major  char(1),                                /* UDT major version # */
  vers_minor  char(1),                                /* UDT minor version # */
  obj_num     number,                      /* object number of table or view */
  intcol_num  number,                                       /* column number */
  col_name    varchar2(128),                                  /* column name */
  pname       varchar2(128),                                  /* policy name */
  mfunc       number,                   /* RADM masking function (KZRADMMF_) */
  regexp_patt varchar2(512),              /* Data Redaction reg expr pattern */
  regexp_repl Varchar2(4000),      /* Data Redaction reg expr replace string */ 
  regexp_posi number,                    /* Data Redaction reg expr position */
  regexp_occu number,                  /* Data Redaction reg expr occurrence */
  regexp_matc varchar2(10),                 /* Data Redaction reg expr match */
  mparams     varchar2(1000),                     /* RADM masking parameters */
  pe_name     varchar2(128)                   /* RADM policy expression name */
)
not persistable
/

create or replace type ku$_radm_mc_list_t force as table of (ku$_radm_mc_t)
not persistable
/

-- UDT for the 'RADM_POLICY' homogeneous type,
-- xmltag: 'RADM_POLICY_T', XSLT: rdbms/xml/xsl/kuradmp.xsl,
-- representing data masking policies created using DBMS_RADM.ADD_POLICY,
-- and possibly updated using ALTER_POLICY, ENABLE_POLICY, and 
-- DISABLE_POLICY api.

create or replace type ku$_radm_policy_t force as object
(
  vers_major   char(1),                               /* UDT major version # */
  vers_minor   char(1),                               /* UDT minor version # */
  base_obj_num number,                               /* parent object number */
  base_obj     ku$_schemaobj_t,                             /* schema object */
  pname        varchar2(128),                                 /* policy name */
  pexpr        varchar2(4000),                          /* policy expression */
  enable_flag  number,  /* whether the policy is enabled (1) or disabled (0) */
  mc_list      ku$_radm_mc_list_t                    /* column specific data */
)
not persistable
/


-- UDT and object-view for the 'RADM_FPTM' homogeneous type,
-- xmltag: 'RADM_FPTM_T', XSLT: rdbms/xml/xsl/kuradmf.xsl,
-- representing the fixed point values in radm_ftpm$, which are 
-- used to mask the corresponding datatypes.

create or replace type ku$_radm_fptm_t force as object
(
  vers_major   char(1),                               /* UDT major version # */
  vers_minor   char(1),                               /* UDT minor version # */
  numbercol    number,                                             /* number */
  binfloatcol  binary_float,                                 /* binary float */
  bindoublecol binary_double,                               /* binary double */
  charcol      char(1),                              /* fixed-size character */
  varcharcol   varchar2(1),                       /* variable-size character */
  ncharcol     nchar(1),                    /* fixed-size national character */
  nvarcharcol  nvarchar2(1),             /* variable-size national character */
  datecol      date,                                                 /* date */
  ts_col       timestamp,                                       /* timestamp */
  tswtz_col    timestamp with time zone,         /* timestamp with time zone */
  fpver        number               /* version of default fixed point values */
)
not persistable
/

------------------------------------------------------------------------------
--              bug 6938028: Database Vault Protected Schema.
--              Database Vault Protected Schema (DVPS) Interface
--                       for Datapump export/import
--
-- The real Database Vault object views can't be created by catproc.sql; they 
-- must instead be created during the Database Vault installation, because
-- they must be created within the Protected Schema.  Since catmeta.sql is 
-- run by catproc.sql, here we create dummy UDTs (with the names:
-- ku$_dummy_isr_t, ku$_dummy_isrm_t, ku$_dummy_realm_t, 
-- ku$_dummy_realm_member_t, ku$_dummy_realm_auth_t, ku$_dummy_rule_t,
-- ku$_dummy_rule_set_t, ku$_dummy_rule_set_member_t, 
-- ku$_dummy_command_rule_t, ku$_dummy_role_t, ku$_dummy_factor_t,
-- ku$_dummy_factor_link_t, ku$_dummy_factor_type_t, ku$_dummy_identity_t 
-- and ku$_dummy_identity_map_t) and the corresponding dummy object views.
-- The real object views are defined in catmacc.sql, which is invoked by 
-- the Database Vault installation, and are registered in metaview$ by
-- $SRCHOME/rdbms/admin/catmacdd.sql.
-- Note: it's necessary to grant select privilege to the SELECT_CATALOG_ROLE,
-- otherwise the short regression will fail when tkzdicz1.sql runs. This
-- privilege will not be granted on the real views (created by catmacc.sql),
-- as they myst remain accessible only to users with the DV_OWNER role.
-- Project 46812: add ku$_dummy_policy_t, ku$_dummy_policy_obj_r_t,
-- ku$_dummy_policy_obj_c_t, and ku$_dummy_policy_owner_t
-- ku$_dummy_policy_obj_c_alts_t
-- Bug 21299533: add ku$_dummy_dv_auth_dp_t, ku$_dummy_dv_auth_tts_t,
-- ku$_dummy_dv_auth_job_t, ku$_dummy_dv_auth_proxy_t, ku$_dummy_dv_auth_ddl_t,
-- ku$_dummy_dv_auth_prep_t, ku$_dummy_dv_auth_maint_t, ku$_dummy_dv_oradebug_t,
-- and ku$_dummy_dv_accts_t
-- Add ku$_dummy_dv_auth_diag_t for Diagnostic
-- Add ku$_dummy_dv_index_func_t for index functions.
-- Add ku$_dummy_dv_auth_dbcapture_t for DB Replay
-- Add ku$_dummy_dv_auth_dbreplay_t for DB Replay
------------------------------------------------------------------------------
create or replace type ku$_dummy_isr_t force as object
(
  vers_major    char(1),                             /* UDT major version # */
  vers_minor    char(1)                              /* UDT minor version # */
)
not persistable
/

-- The attribute "schema_name" must be included in type ku$_dummy_isrm_t,
-- as we have an entry in the metafilter$ table for the 
-- DVPS_STAGING_REALM_MEMBERSHIP type.
create or replace type ku$_dummy_isrm_t force as object
(
  vers_major    char(1),                             /* UDT major version # */
  vers_minor    char(1),                             /* UDT minor version # */
  schema_name   varchar2(128)    /* schema to be protected by Staging Realm */
)
not persistable
/

-- The attribute "name" must be included in type ku$_dummy_realm_t,
-- as we have an entry in the metafilter$ table for the DVPS_REALM type.
create or replace type ku$_dummy_realm_t force as object
(
  vers_major    char(1),                             /* UDT major version # */
  vers_minor    char(1),                             /* UDT minor version # */
  name          varchar2(128)               /* name of database vault realm */
)
not persistable
/

-- The attribute "name" must be included in type ku$_dummy_realm_member_t,
-- as we have an entry in the metafilter$ table for 
-- the DVPS_REALM_MEMBERSHIP type.
create or replace type ku$_dummy_realm_member_t force as object
(
  vers_major    char(1),                             /* UDT major version # */
  vers_minor    char(1),                             /* UDT minor version # */
  name          varchar2(128)               /* name of database vault realm */
)
not persistable
/

-- The attribute "realm_name" must be included in type ku$_dummy_realm_auth_t,
-- as we have an entry in the metafilter$ table for 
-- the DVPS_REALM_AUTHORIZATION type.
create or replace type ku$_dummy_realm_auth_t force as object
(
  vers_major    char(1),                             /* UDT major version # */
  vers_minor    char(1),                             /* UDT minor version # */
  realm_name    varchar2(128)               /* name of database vault realm */
)
not persistable
/

-- The attribute "rule_name" must be included in type ku$_dummy_rule_t,
-- as we have an entry in the metafilter$ table for the DVPS_RULE type.
create or replace type ku$_dummy_rule_t force as object
(
  vers_major    char(1),                             /* UDT major version # */
  vers_minor    char(1),                             /* UDT minor version # */
  rule_name     varchar2(128)                               /* name of Rule */
)
not persistable
/

-- Attribute "rule_set_name" must be included in type ku$_dummy_rule_set_t,
-- as we have an entry in the metafilter$ table for the DVPS_RULE_SET type.
create or replace type ku$_dummy_rule_set_t force as object
(
  vers_major      char(1),                           /* UDT major version # */
  vers_minor      char(1),                           /* UDT minor version # */
  rule_set_name   varchar2(128)                         /* name of Rule Set */
)
not persistable
/

-- The attribute "rule_set_name" must be included in 
-- type ku$_dummy_rule_set_member_t, as we have an entry in 
-- the metafilter$ table for the DVPS_RULE_SET_MEMBERSHIP type.
create or replace type ku$_dummy_rule_set_member_t force as object
(
  vers_major      char(1),                           /* UDT major version # */
  vers_minor      char(1),                           /* UDT minor version # */
  rule_set_name   varchar2(128)                         /* name of Rule Set */
)
not persistable
/

-- The attribute "rule_set_name" must be included in 
-- type ku$_dummy_command_rule_t, as we have an entry in 
-- the metafilter$ table for the DVPS_COMMAND_RULE type.
create or replace type ku$_dummy_command_rule_t force as object
(
  vers_major      char(1),                           /* UDT major version # */
  vers_minor      char(1),                           /* UDT minor version # */
  rule_set_name   varchar2(128)                         /* name of Rule Set */
)
not persistable
/

create or replace type ku$_dummy_comm_rule_alts_t force as object
(
  vers_major      char(1),                           /* UDT major version # */
  vers_minor      char(1),                           /* UDT minor version # */
  rule_set_name   varchar2(90)                          /* name of Rule Set */
)
not persistable
/

-- The attribute "role" must be included in
-- type ku$_dummy_role_t, as we have an entry in
-- the metafilter$ table for the DVPS_ROLE type.
create or replace type ku$_dummy_role_t force as object
(
  vers_major           char(1),                      /* UDT major version # */
  vers_minor           char(1),                      /* UDT minor version # */
  role                 varchar2(128)                           /* Role name */
)
not persistable
/

-- The attribute "factor_name" must be included in 
-- type ku$_dummy_factor_t, as we have an entry in 
-- the metafilter$ table for the DVPS_FACTOR type.
create or replace type ku$_dummy_factor_t force as object
(
  vers_major           char(1),                      /* UDT major version # */
  vers_minor           char(1),                      /* UDT minor version # */
  factor_name          varchar2(128)                         /* Factor name */
)
not persistable
/

-- The attribute "parent_factor_name" must be included in 
-- type ku$_dummy_factor_link_t, as we have an entry in 
-- the metafilter$ table for the DVPS_FACTOR_LINK type.
create or replace type ku$_dummy_factor_link_t force as object
(
  vers_major           char(1),                      /* UDT major version # */
  vers_minor           char(1),                      /* UDT minor version # */
  parent_factor_name   varchar2(128)                  /* Parent Factor name */
)
not persistable
/

-- The attribute "name" must be included in 
-- type ku$_dummy_factor_type_t, as we have an entry in 
-- the metafilter$ table for the DVPS_FACTOR_TYPE type.
create or replace type ku$_dummy_factor_type_t force as object
(
  vers_major           char(1),                      /* UDT major version # */
  vers_minor           char(1),                      /* UDT minor version # */
  name                 varchar2(128)                    /* Factor type name */
)
not persistable
/

-- The attribute "factor_name" must be included in 
-- type ku$_dummy_identity_t, as we have an entry in 
-- the metafilter$ table for the DVPS_IDENTITY type.
create or replace type ku$_dummy_identity_t force as object
(
  vers_major           char(1),                      /* UDT major version # */
  vers_minor           char(1),                      /* UDT minor version # */
  factor_name          varchar2(128)                    /* Factor type name */
)
not persistable
/

-- The attribute "identity_factor_name" must be included in 
-- type ku$_dummy_identity_map_t, as we have an entry in 
-- the metafilter$ table for the DVPS_IDENTITY_MAP type.
create or replace type ku$_dummy_identity_map_t force as object
(
  vers_major               char(1),                  /* UDT major version # */
  vers_minor               char(1),                  /* UDT minor version # */
  identity_factor_name     varchar2(128)           /* Factor the map is for */
)
not persistable
/

-- For DVPS_DV_POLICY
create or replace type ku$_dummy_policy_t force as object
(
  vers_major               char(1),                  /* UDT major version # */
  vers_minor               char(1),                  /* UDT minor version # */
  name                     varchar2(128)                     /* Policy Name */
)
not persistable
/
-- For DVPS_DV_POLICY_OBJ_R
create or replace type ku$_dummy_policy_obj_r_t force as object
(
  vers_major               char(1),                  /* UDT major version # */
  vers_minor               char(1),                  /* UDT minor version # */
  name                     varchar2(128)                     /* Policy Name */
)
not persistable
/
-- For DVPS_DV_POLICY_OBJ_C
create or replace type ku$_dummy_policy_obj_c_t force as object
(
  vers_major               char(1),                  /* UDT major version # */
  vers_minor               char(1),                  /* UDT minor version # */
  name                     varchar2(128)                     /* Policy Name */
)
not persistable
/
-- For DVPS_DV_POLICY_OWNER
create or replace type ku$_dummy_policy_owner_t force as object
(
  vers_major               char(1),                  /* UDT major version # */
  vers_minor               char(1),                  /* UDT minor version # */
  name                     varchar2(128)                     /* Policy Name */
)
not persistable
/
-- For DVPS_DV_POLICY_OBJ_C_ALTS
create or replace type ku$_dummy_policy_obj_c_alts_t force as object
(
  vers_major               char(1),                  /* UDT major version # */
  vers_minor               char(1),                  /* UDT minor version # */
  name                     varchar2(128)                     /* Policy Name */
)
not persistable
/
-- For DVPS_DV_AUTH_DP
create or replace type ku$_dummy_dv_auth_dp_t force as object
(
  vers_major               char(1),                  /* UDT major version # */
  vers_minor               char(1),                  /* UDT minor version # */
  grantee_name             varchar2(128)                    /* Grantee Name */
)
not persistable
/
-- For DVPS_DV_AUTH_TTS
create or replace type ku$_dummy_dv_auth_tts_t force as object
(
  vers_major               char(1),                  /* UDT major version # */
  vers_minor               char(1),                  /* UDT minor version # */
  grantee_name             varchar2(128)                    /* Grantee Name */
)
not persistable
/
-- For DVPS_DV_AUTH_JOB
create or replace type ku$_dummy_dv_auth_job_t force as object
(
  vers_major               char(1),                  /* UDT major version # */
  vers_minor               char(1),                  /* UDT minor version # */
  grantee_name             varchar2(128)                    /* Grantee Name */
)
not persistable
/
-- For DVPS_DV_AUTH_PROXY
create or replace type ku$_dummy_dv_auth_proxy_t force as object
(
  vers_major               char(1),                  /* UDT major version # */
  vers_minor               char(1),                  /* UDT minor version # */
  grantee_name             varchar2(128)                    /* Grantee Name */
)
not persistable
/
-- For DVPS_DV_AUTH_DDL
create or replace type ku$_dummy_dv_auth_ddl_t force as object
(
  vers_major               char(1),                  /* UDT major version # */
  vers_minor               char(1),                  /* UDT minor version # */
  grantee_name             varchar2(128)                    /* Grantee Name */
)
not persistable
/
-- For DVPS_DV_AUTH_PREP
create or replace type ku$_dummy_dv_auth_prep_t force as object
(
  vers_major               char(1),                  /* UDT major version # */
  vers_minor               char(1),                  /* UDT minor version # */
  grantee_name             varchar2(128)                    /* Grantee Name */
)
not persistable
/
-- For DVPS_DV_AUTH_MAINT
create or replace type ku$_dummy_dv_auth_maint_t force as object
(
  vers_major               char(1),                  /* UDT major version # */
  vers_minor               char(1),                  /* UDT minor version # */
  grantee_name             varchar2(128)                    /* Grantee Name */
)
not persistable
/
-- For DVPS_DV_ORADEBUG
create or replace type ku$_dummy_dv_oradebug_t force as object
(
  vers_major               char(1),                  /* UDT major version # */
  vers_minor               char(1),                  /* UDT minor version # */
  state                    varchar2(128)                           /* state */
)
not persistable
/
-- For DVPS_DV_ACCTS
create or replace type ku$_dummy_dv_accts_t force as object
(
  vers_major               char(1),                  /* UDT major version # */
  vers_minor               char(1),                  /* UDT minor version # */
  state                    varchar2(128)                           /* state */
)
not persistable
/
-- For DVPS_DV_AUTH_DIAG
create or replace type ku$_dummy_dv_auth_diag_t force as object
(
  vers_major               char(1),                  /* UDT major version # */
  vers_minor               char(1),                  /* UDT minor version # */
  grantee_name             varchar2(128)                    /* Grantee Name */
)
not persistable
/

-- For DVPS_DV_INDEX_FUNC
create or replace type ku$_dummy_dv_index_func_t force as object
(
  vers_major    char(1),                             /* UDT major version # */
  vers_minor    char(1),                             /* UDT minor version # */
  object_name   varchar2(128)                           /* name of function */
)
not persistable
/

-- For DVPS_DV_AUTH_DBCAPTURE
create or replace type ku$_dummy_dv_auth_dbcapture_t force as object
(
  vers_major               char(1),                  /* UDT major version # */
  vers_minor               char(1),                  /* UDT minor version # */
  grantee_name             varchar2(128)                    /* Grantee Name */
)
not persistable
/

-- For DVPS_DV_AUTH_DBREPLAY
create or replace type ku$_dummy_dv_auth_dbreplay_t force as object
(
  vers_major               char(1),                  /* UDT major version # */
  vers_minor               char(1),                  /* UDT minor version # */
  grantee_name             varchar2(128)                    /* Grantee Name */
)
not persistable
/

-------------------------------------------------------------------------------
--                              CLUSTERED TABLE
-------------------------------------------------------------------------------
-- UDT for table clustering info
create or replace type ku$_tabcluster_t force as object
(
  obj_num       number,                            /* object number of table */
  schema_obj    ku$_schemaobj_t,                  /* cluster's schema object */
  col_list      ku$_simple_col_list_t           /* list of clustered columns */
)
not persistable
/

-------------------------------------------------------------------------------
--                              TABLE CLUSTERING
-------------------------------------------------------------------------------

-- based on dictionary tables clst$, clstkey$

-- clustering column
create or replace type ku$_clstcol_t force as object
(
  obj_num       number,                            /* object number of table */
  tabobj_num    number,          /* object number of clustering column table */
  schema_obj    ku$_schemaobj_t,                  /* Clustering column table */
  position      number,           /* Position of column in clustering clause */
  groupid       number,                           /* Identifier of the Group */
  col_num       number,                          /* column number as created */
  intcol_num    number,                            /* internal column number */
  segcol_num    number,                          /* column number in segment */
  property      number,                     /* column properties (bit flags) */
  property2     number,                        /*    more column properties  */
  name          varchar2(128),                             /* name of column */
  type_num      number                                /* data type of column */
)
not persistable
/
create or replace type ku$_clstcol_list_t force as table of (ku$_clstcol_t)
not persistable
/

-- cluster join
create or replace type ku$_clstjoin_t force as object
(
  obj_num       number,                                          /* object # */
  tab1obj_num   number,                                /* table 1 obj number */
  int1col_num   number,                /* internal column number for table 1 */
  tab2obj_num   number,                                /* table 2 obj number */
  int2col_num   number,                /* internal column number for table 2 */
  tab1          ku$_schemaobj_t,
  tab2          ku$_schemaobj_t,
  tab1col       ku$_simple_col_t,                          /* table 1 column */
  tab2col       ku$_simple_col_t                           /* table 2 column */
)
not persistable
/

create or replace type ku$_clstjoin_list_t force as table of (ku$_clstjoin_t)
not persistable
/

create or replace type ku$_clst_zonemap_t force as object
(
  obj_num       number,                       /* object number of base table */
  zmowner       varchar2(128),                              /* zonemap owner */
  zmname        varchar2(128)                                /* zonemap name */
)
not persistable
/

-- table clustering
create or replace type ku$_clst_t force as object
(
  obj_num       number,                            /* object number of table */
  clstfunc      number,              /* Clustering Function                  */
                                     /* 1 - Hilbert                          */
                                     /* 2 - Order                            */
  flags         number,            
                                     /* 0x00000001 - Load                    */
                                     /* 0x00000002 - Data Movement           */
  clstcols      ku$_clstcol_list_t,                        /* clustering key */
  clstjoin      ku$_clstjoin_list_t,                         /* cluster join */
  zonemap       ku$_clst_zonemap_t                                /* zonemap */
)
not persistable
/

-- minimal UDT for a table and its clustering info
-- used by data pump to export clustering info separately from table
create or replace type ku$_tabclst_t force as object
(
  base_obj_num  number,                                     /* base object # */
  base_obj      ku$_schemaobj_t,                              /* base object */
  clst          ku$_clst_t                  /* table clustering info, if any */
)
not persistable
/

-------------------------------------------------------------------------------
--                              NESTED TABLE
-------------------------------------------------------------------------------


-- ADT for IOT overflow table
create or replace type ku$_ov_table_t force as object
(
  obj_num       number,                                              /* obj# */
  dataobj_num   number,                                /* data layer object# */
  bobj_num      number,                           /* base obj# (cluster/iot) */
  storage       ku$_storage_t,                                    /* storage */
  deferred_stg  ku$_deferred_stg_t,                      /* deferred storage */
  ts_name       varchar2(128),                            /* tablespace name */
  blocksize     number,                            /* size of block in bytes */
  pct_free      number,                   /* min. free space %age in a block */
  pct_used      number,                   /* min. used space %age in a block */
  initrans      number,                     /* initial number of transaction */
  maxtrans      number,                     /* maximum number of transaction */
  flags         number                                              /* flags */
)
not persistable
/

-- ADT for IOT MAPPING table
create or replace type ku$_map_table_t force as object
(
  obj_num       number,                                              /* obj# */
  dataobj_num   number,                                /* data layer object# */
  bobj_num      number,                           /* base obj# (cluster/iot) */
  part_num      number,                                  /* partition number */
  storage       ku$_storage_t,                                    /* storage */
  ts_name       varchar2(128),                            /* tablespace name */
  blocksize     number,                            /* size of block in bytes */
  pct_free      number,                   /* min. free space %age in a block */
  pct_used      number,                   /* min. used space %age in a block */
  initrans      number,                     /* initial number of transaction */
  maxtrans      number,                     /* maximum number of transaction */
  flags         number                                              /* flags */
)
not persistable
/

-- UDT for table data for heap nested table
create or replace type ku$_hnt_t force as object
(
  obj_num       number,                              /* obj# of nested table */
  partobj       ku$_partobj_t,                     /* Base partitioning info */
  property      number,                                  /* table properties */
  storage       ku$_storage_t,                                    /* storage */
  deferred_stg  ku$_deferred_stg_t,                      /* deferred storage */
  ts_name       varchar2(128),                            /* tablespace name */
  blocksize     number,                            /* size of block in bytes */
  pct_free      number,                   /* min. free space %age in a block */
  pct_used      number,                   /* min. used space %age in a block */
  initrans      number,                     /* initial number of transaction */
  maxtrans      number,                     /* maximum number of transaction */
  flags         number,                                             /* flags */
  con0_list     ku$_constraint0_list_t,               /* list of constraints */
  con1_list     ku$_constraint1_list_t,               /* list of constraints */
  con2_list     ku$_constraint2_list_t,               /* list of constraints */
  pkref_list    ku$_pkref_constraint_list_t  /* list of table ref constraints*/
)
not persistable
/

-- UDT for table data for index organized nested table
create or replace type ku$_iont_t force as object
(
  obj_num       number,                              /* obj# of nested table */
  property      number,                                  /* table properties */
  storage       ku$_storage_t,                                    /* storage */
  deferred_stg  ku$_deferred_stg_t,                      /* deferred storage */
  ts_name       varchar2(128),                            /* tablespace name */
  blocksize     number,                            /* size of block in bytes */
  pct_free      number,                   /* min. free space %age in a block */
  initrans      number,                     /* initial number of transaction */
  maxtrans      number,                     /* maximum number of transaction */
  flags         number,                                             /* flags */
  pct_thresh    number,                            /* pctthreshold for IOTs. */
  numkeycols    number,      /* # of key columns in compressed prefix (IOTs) */
  inclcol_name  varchar(128),/*column where IOT splits into overflow segment */
  con0_list     ku$_constraint0_list_t,               /* list of constraints */
  con1_list     ku$_constraint1_list_t,               /* list of constraints */
  con2_list     ku$_constraint2_list_t,               /* list of constraints */
  pkref_list    ku$_pkref_constraint_list_t, /* list of table ref constraints*/
  iov           ku$_ov_table_t                             /* overflow table */
)
not persistable
/

-- UDT for nested table
create or replace type ku$_nt_t force as object
(
  obj_num       number,                                /* obj# of base table */
  intcol_num    number,              /* internal column number in base table */
  ntab_num      number,              /* object number of nested table object */
  schema_obj    ku$_schemaobj_t,           /* schema object for nested table */
  col           ku$_simple_col_t,                                  /* column */
  property      number,                                  /* table properties */
  flags         number,                                             /* flags */
  trigflag      number,                                     /* trigger flags */
  clst          ku$_clst_t,                 /* table clustering info, if any */
  hnt           ku$_hnt_t,                                /* heap table data */
  iont          ku$_iont_t,                                      /* iot data */
  encalg        number,  /* encryption algorithm id if a column is encrypted */
  intalg        number,   /* integrity algorithm id if a column is encrypted */
  col_list      ku$_tab_column_list_t                     /* list of columns */
)
not persistable
/

create or replace type ku$_nt_list_t force as table of (ku$_nt_t)
not persistable
/

-- UDT for collection of nested tables of a parent table
create or replace type ku$_nt_parent_t force as object
(
  obj_num       number,                                /* obj# of base table */
  nts           ku$_nt_list_t                               /* nested tables */
)
not persistable
/

-------------------------------------------------------------------------------
--                              InMemory COLumn SELective
-------------------------------------------------------------------------------
-- ADT for in memory column selective
create or replace type ku$_im_colsel_t force as object
(
  obj_num       number,                                     /* object number */
  inst_id       number,                                      /* RAC instance */
  column_name   varchar2(129),                                /* Column name */
  compression   varchar2(26),  /* NO INMEMORY or inmemory memcompress clause */
  con_id        number                           /* multitenent container ID */
)
not persistable
/

create or replace type ku$_im_colsel_list_t force as table of (ku$_im_colsel_t)
not persistable
/

-------------------------------------------------------------------------------
--                              TABLE
-------------------------------------------------------------------------------
-------------------------------------------------------------------------------
-- Specialized table UDTs/views
-------------------------------------------------------------------------------

-- ORGANIZATION CUBE Tables
create or replace type ku$_cube_fact_t force as object
(
  obj_num  number,                                  /* Parent table object # */
  colname  varchar2(128),                     /* SQL column name (col$.name) */
  pcolname varchar2(128),              /* Parent SQL column name (col$.name) */
  ccolname varchar2(128),               /* COUNT SQL column name (col$.name) */
  obj      varchar2(512),              /* Mapped AW object (aw_obj$.objname) */
  qdr      varchar2(512),       /* QDRing dimension object (aw_obj$.objname) */
  qdrval   varchar2(100),                                     /* QDRed value */
  flags    number                                                   /* Flags */
)
not persistable
/

create or replace type ku$_cube_fact_list_t
 force as table of (ku$_cube_fact_t)
not persistable
/

create or replace type ku$_cube_hier_t force as object
(
  obj_num  number,                                  /* Parent table object # */
  rel      varchar2(512),            /* Mapped AW relation (aw_obj$.objname) */
  qdr      varchar2(512),       /* QDRing dimension object (aw_obj$.objname) */
  qdrval   varchar2(100),                                     /* QDRed value */
  levels   ku$_cube_fact_list_t,                      /* Levels in hierarchy */
  inhier   ku$_cube_fact_list_t,                   /* Mapped AW IN Hierarchy */
  flags    number                                                   /* Flags */
)
not persistable
/

create or replace type ku$_cube_hier_list_t
 force as table of (ku$_cube_hier_t)
not persistable
/

create or replace type ku$_cube_dim_t force as object
(
  obj_num       number,                             /* Parent table object # */
  colname       varchar2(128),               /* Base data column (col$.name) */
  obj           varchar2(512),         /* Mapped AW object (aw_obj$.objname) */
  dimusing      varchar2(512),  /* USING rel for native dt (aw_obj$.objname) */
  gid           ku$_cube_fact_list_t,                                 /* GID */
  pgid          ku$_cube_fact_list_t,                          /* Parent GID */
  attrs         ku$_cube_fact_list_t,                          /* Attributes */
  levels        ku$_cube_fact_list_t,                              /* Levels */
  hiers         ku$_cube_hier_list_t,                         /* Hierarchies */
  flags         number                                              /* Flags */
)
not persistable
/

create or replace type ku$_cube_dim_list_t
 force as table of (ku$_cube_dim_t)
not persistable
/

create or replace type ku$_cube_tab_t force as object
(
  obj_num       number,                             /* Parent table object # */
  awname        varchar2(128),              /* Underlying AW name (aw$.name) */
  flags         number,                                             /* Flags */
  dims          ku$_cube_dim_list_t,                           /* Dimensions */
  facts         ku$_cube_fact_list_t,                            /* Measures */
  cgid          ku$_cube_fact_list_t                             /* Cube GID */
)
not persistable
/

-- flashback archived table info for a table
-- (a subset of info from sys_fba_fa and sys_fba_trackedtables)

create or replace type ku$_fba_t force as object
(
  vers_major    char(1),                              /* UDT major version # */
  vers_minor    char(2),                              /* UDT minor version # */
  obj_num       number,                                        /* table obj# */
  fa_num        number,                               /* flashback archive # */
  fa_name       varchar2(255)                      /* flashback archive name */
)
not persistable
/

-- valid-time temporal information

create or replace type ku$_fba_period_t force as object
(
  vers_major    char(1),                              /* UDT major version # */
  vers_minor    char(2),                              /* UDT minor version # */
  obj_num       number,                                        /* table obj# */
  periodname    varchar2(255),                                /* period name */
  flags         number,
  periodstart   varchar2(255),
  periodend     varchar2(255),
  spare         number
)
not persistable
/

create or replace type ku$_fba_period_list_t
 force as table of (ku$_fba_period_t)
not persistable
/

-------------------------------------------------------------------------------
--                              OBJECT_GRANT
-------------------------------------------------------------------------------

create or replace type ku$_objgrant_t force as object
(
  vers_major    char(1),                              /* UDT major version # */
  vers_minor    char(2),                              /* UDT minor version # */
  obj_num       number,                                 /* obj# of base obj. */
  base_obj      ku$_schemaobj_t,                           /* base obj. info */
  long_name     varchar2(4000),
  grantor       varchar2(128),
  grantee       varchar2(128),
  privname      varchar2(128),
  sequence      number,                        /* Unique seq# for this grant */
  wgo           number,                             /* with grant option = 1 */
                                                /* with hierarchy option = 2 */
  colname       varchar2(128),          /* column name if col grant else null */
  user_spare1   number)
not persistable
/

create or replace type ku$_objgrant_list_t
 force as table of (ku$_objgrant_t)
not persistable
/

-------------------------------------------------------------------------------
--                              SYSTEM_GRANT
-------------------------------------------------------------------------------

create or replace type ku$_sysgrant_t force as object
(
  vers_major    char(1),                              /* UDT major version # */
  vers_minor    char(1),                              /* UDT minor version # */
  privilege     number,                       /* numeric privilege type code */
  grantee       varchar2(128),
  privname      varchar2(128),
  sequence      number,
  wgo           number,
  user_spare1   number)
not persistable
/

create or replace type ku$_on_user_grant_t force as object
(
  vers_major    char(1),                              /* UDT major version # */
  vers_minor    char(2),                              /* UDT minor version # */
  user_name     varchar2(128),                             
  grantor       varchar2(128),
  grantee       varchar2(128),
  sequence      number)                        /* Unique seq# for this grant */
not persistable
/

create or replace type ku$_code_base_grant_t force as object
(
  vers_major    char(1),                              /* UDT major version # */
  vers_minor    char(2),                              /* UDT minor version # */
  role          varchar2(128),                             
  grantee       varchar2(128),          /* Owner of package, procedure, etc. */
  type_name     varchar2(128),         /* Name of code type, ie package name */
  code_type     varchar2(128),      /* Function, Procedure, Package, or Type */
  obj_num       number,                /* Object number of func, proced, etc */
  priv_num      number)                  /* Privilege number, ie role number */

not persistable
/

-------------------------------------------------------------------------------
--                              types for tables
-------------------------------------------------------------------------------

-- ADT for partitioned IOT overflow table partition

create or replace type ku$_ov_tabpart_t force as object
(
  obj_num       number,                                              /* obj# */
  dataobj_num   number,                                /* data layer object# */
  bobj_num      number,                           /* base obj# (cluster/iot) */
  part_num      number,                                  /* partition number */
  storage       ku$_storage_t,                                    /* storage */
  deferred_stg  ku$_deferred_stg_t,                      /* deferred storage */
  ts_name       varchar2(128),                            /* tablespace name */
  blocksize     number,                            /* size of block in bytes */
  pct_free      number,                   /* min. free space %age in a block */
  pct_used      number,                   /* min. used space %age in a block */
  initrans      number,                     /* initial number of transaction */
  maxtrans      number,                     /* maximum number of transaction */
  flags         number                                              /* flags */
)
not persistable
/

create or replace type ku$_ov_tabpart_list_t force
as table of (ku$_ov_tabpart_t) not persistable;
/

create or replace type ku$_map_tabpart_list_t force
as table of (ku$_map_table_t) not persistable;
/
-- ADT for partitioned IOTs

create or replace type ku$_iot_partobj_t force as object
(
  obj_num       number,                                     /* obj# of table */

  tabpartobj    ku$_partobj_t,                       /* table partition info */
  partcols      ku$_part_col_list_t,         /* list of partitioning columns */
  subpartcols   ku$_part_col_list_t,      /* list of subpartitioning columns */



  indpartobj    ku$_partobj_t,                       /* index partition info */
  ovpartobj     ku$_partobj_t,                    /* overflow partition info */
  part_list     ku$_piot_part_list_t,                      /* partition list */
  iov_list      ku$_ov_tabpart_list_t,           /* overflow part table list */
  imap_list     ku$_map_tabpart_list_t            /* mapping part table list */
)
not persistable
/

-------------------------------------------------------------------------------
--                     TABLE
-------------------------------------------------------------------------------

-- create ADTs for tables
-- note on history:
-- we used to have 6 type definitions:
--    htable   simple heap (non-iot) table
--   fhtable   heap table with non-simple columns (mostly ADTs)
--   phtable   partitioned heap table, only simple columns
--  pfhtable   partitioned heap table with non-simple columns
--   iotable    partitioned iot (index organized table)
--  piotable    partitioned iot
-- each type was fully/explicitly defined, with considerable duplication, making
-- implementation of new feature mor cumbersome and error prone.
--
-- We now create just 2 types ku$_table_t and ku$_io_table_t, which differ only
-- for the partition information used. We construct and execute 'create type'
-- statments to reduce code duplication - and have a single place for adding
-- new ADT attributes.
-- With 12.2, we also export of a partition as a table (shard chunk migration).
-- this ueses a 3rd variant of the table type - ku$_partition_t 

declare
  stmt1 varchar(32000);
  stmt2 varchar(32000);
  success_with_error exception;
  pragma exception_init(success_with_error, -24344);
begin
  stmt1 := q'!
 as object
(
  vers_major    char(1),                              /* UDT major version # */
  vers_minor    char(2),                              /* UDT minor version # */
  obj_num       number,                                              /* obj# */
  schema_obj    ku$_schemaobj_t,                            /* schema object */
  base_obj      ku$_schemaobj_t,         /* base object (if secondary table) */
  anc_obj       ku$_schemaobj_t,     /* ancestor object (if secondary table) */
  bobj_num      number,                           /* base obj# (cluster/iot) */
  tab_num       number,                  /* # in cluster, null if !clustered */
  cols          number,                                      /* # of columns */
  clucols       number,                 /* # of clustered cols, if clustered */
  tabcluster    ku$_tabcluster_t,        /* cluster info, null if !clustered */
  fba           ku$_fba_t, /* flashback archive info, null if not fb enabled */
  fba_periods   ku$_fba_period_list_t,                    /* valid-time info */
  clst          ku$_clst_t,                 /* table clustering info, if any */
  ilm_policies  ku$_ilm_policy_list_t,               /* ilm policies, if any */
  flags         number,                                             /* flags */
  audit_val     varchar2(128),                           /* auditing options */
  rowcnt        number,                                    /* number of rows */
  blkcnt        number,                                  /* number of blocks */
  empcnt        number,                            /* number of empty blocks */
  avgspc        number,                      /* average available free space */
  chncnt        number,                            /* number of chained rows */
  avgrln        number,                                /* average row length */
  avgspc_flb    number,       /* avg avail free space of blocks on free list */
  flbcnt        number,                             /* free list block count */
  analyzetime   varchar2(19),                /* timestamp when last analyzed */
  samplesize    number,                 /* number of rows sampled by Analyze */
  degree        number,                       /* # of PQ slaves per instance */
  instances     number,                         /* # of OPS instances for PQ */
  intcols       number,                             /* # of internal columns */
  kernelcols    number,                   /* number of REAL (kernel) columns */
  tstz_cols     char(1),                        /* 'Y' = table has TSTZ data */
  trigflag      number,                              /* inline trigger flags */
  spare1        number,                       /* used to store hakan_kqldtvc */
  spare2        number,         /* committed partition # used by drop column */
  spare3        number,                           /* summary sequence number */
  spare4        varchar2(1000),         /* committed RID used by drop column */
  spare5        varchar2(1000),
  spare6        varchar2(19),                               /* dml timestamp */
  spare7        number,
  spare8        number,
  spare9        varchar2(1000),
  spare10       varchar2(1000),
  encalg        number,  /* encryption algorithm id if a column is encrypted */
  intalg        number,   /* integrity algorithm id if a column is encrypted */
  im_colsel     ku$_im_colsel_list_t,           /* inmemory selective column */
  con0_list     ku$_constraint0_list_t,               /* list of constraints */
  con2_list     ku$_constraint2_list_t,               /* list of constraints */
  exttab        ku$_exttab_t,                     /* external table metadata */
  cubetab       ku$_cube_tab_t,                /* organization cube metadata */
  svcname       varchar(1000),            /* service name for IMC DISTRIBUTE */
  svcflags      number,                  /* service flags for IMC DISTRIBUTE */
  /* table storage (differs for p2t)
     NOTE - properties must also change for p2t */
  property      number,                                  /* table properties */
  property2     number,                             /* more table properties */
            /* the table property bits are defined in qcdl.h and kqld.h      */
            /* with names beginning "KQLDTVCP_" and "KQLDTVCP2_"             */
            /* e.g., KQLDTVCP_TTV,  KQLDTVCP2_ILM_MODTR                      */
  /* The low 32 bits of tab$.property are in "property"; "property2" has     */
  /* the high-order bits. Here are the bit definitions of tab$.property:     */
                   /* 0x01 = typed table */
                   /* 0x02 = has ADT columns, */
                   /* 0x04 = has nested-TABLE columns */
                   /* 0x08 = has REF columns, */
                   /* 0x10     (16) = has array columns */
                   /* 0x20     (32) = partitioned table, */
                   /* 0x40     (64) = index-only table (IOT) */
                   /* 0x80    (128) = IOT w/ row OVerflow, */
                   /* 0x100   (256) = IOT w/ row CLustering */
                   /* 0x200   (512) = IOT OVeRflow segment, */
                   /* 0x400  (1024) = clustered table */
                   /* 0x800  (2048) = has internal LOB columns, */
                   /* 0x1000 (4096) = has primary key-based OID$ column */
                   /* 0x2000 (8192) = nested table */
                   /* 0x4000 (16384) = View is Read Only */
                   /* 0x8000 (32768) = has FILE columns */
                   /* 0x10000 (65536) = obj view OID is sys-generated */
                   /* 0x20000 (131072) = used as AQ table */
                   /* 0x40000 (262144)= has user-defined lob columns */
                   /* 0x80000 (524288)= table contains unused columns */
                   /* 0x100000 (1048576)= has an on-commit materialized view */
                   /* 0x200000 (2097152)= has system-generated column names */
                   /* 0x400000 (4194304)= global temporary table */
                   /* 0x800000 (8388608)= session-specific temporary table */
                   /* 0x8000000 (134217728)= table is a sub table */
                   /* 0x20000000 (536870912) = pdml itl invariant */
                   /* 0x80000000 (2147483648)= table is external  */
  /* property2: High-order bits of tab$.property                             */
  /*  0x000000100000000 (1) - table is a CUBE table                          */
  /*  0x000000400000000 (4) = delayed segment creation                       */
  /*  0x000020000000000 (512) = result cache mode FORCE enabled on this tbl  */
  /*  0x000040000000000 (1024) = result cache mode MANUAL enabled on this tbl*/
  /*  0x000080000000000 (2048) = result cache mode AUTO enabled on this tbl */
  /*  0x020000000000000 (2097152) -                         long varchar col */
  /*  0x00040000000000000   (4194304)-    this table has a clustering clause */
  /*                                        (applies only to the fact table).*/
  /*  0x00080000000000000   (8388608)-   this table has one or more zonemaps */
  /*                                                           defined on it.*/
  /*  0x00400000000000000  (67108864)= has identity column                   */
  /*  0x01000000000000000 (268435456)-     this table appears as a dimension */
  /*                                       in one or more clustering clauses.*/
            /* the table property bits are defined in qcdl.h and kqld.h      */
            /* with names beginning "KQLDTVCP_" and "KQLDTVCP2_"             */
            /* e.g., KQLDTVCP_TTV,  KQLDTVCP2_ILM_MODTR                      */
  property3 number,
           /* the table property bits are defined in qcdl.h and kqld.h       */   
           /* With names beginning KQLDTVCP3_                                */
           /* Here are the bit definitions of tab$.property2:                */
                /* 0x00000001 (1) = Binary XML table uses granular token set */
                /* 0x00000002 (2) = Table is a Binary XML Token Set entity   */
  storage       ku$_storage_t,                                    /* storage */
  deferred_stg  ku$_deferred_stg_t,                      /* deferred storage */
  ts_name       varchar2(128),                            /* tablespace name */
  blocksize     number,                            /* size of block in bytes */
  dataobj_num   number,                                /* data layer object# */
  pct_free      number,                   /* min. free space %age in a block */
  pct_used      number,                   /* min. used space %age in a block */
  initrans      number,                     /* initial number of transaction */
  maxtrans      number,                     /* maximum number of transaction */
  con1_list     ku$_constraint1_list_t,               /* list of constraints */
  /* col_list */
  col_list      ku$_tab_column_list_t,                   /* list of columns */
  /* used for 'full' tables (ADTs and such)  */
  nt            ku$_nt_parent_t,                            /* nested tables */
  pkref_list    ku$_pkref_constraint_list_t, /* list of table ref constraints*/
  /*   xml metadata */
  xmlschemacols char(1),          /* 'Y' = table has xmlschema-based columns */
  xmlcolset     ku$_XmlColSet_t,        /* OR intcolnums for xmltype stoarge */
  xmlhierarchy  char(1),             /* 'Y' = table is xml hierarchy enabled */
  /* reference partition child only */
  parent_obj    ku$_schemaobj_t,          /* parent object (if refpar child) */
  refpar_level  number,                         /* reference partition level */
  /* used for partitioned tables */
  objgrant_list ku$_objgrant_list_t,/* grants required, refpar parent access */
  /* used for IOTs  */
  pct_thresh    number,                            /* pctthreshold for IOTs. */
  numkeycols    number,      /* # of key columns in compressed prefix (IOTs) */
  inclcol_name  varchar(128),/*column where IOT splits into overflow segment */
  iov           ku$_ov_table_t,                            /* overflow table */
  maptab        ku$_map_table_t,                            /* mapping table */
!';
-- '
  begin
  -- include heap table partition info 
  stmt2 := 'create or replace type ku$_table_t force ' || stmt1 ||
           '  part_obj      ku$_tab_partobj_t ) not persistable';
  execute immediate stmt2;
 exception
  when success_with_error then
    null;
 end;
 begin
  -- include io table partition info 
  execute immediate 'create or replace type ku$_io_table_t force' || stmt1 ||
  '  part_obj      ku$_iot_partobj_t ) not persistable';
 exception
  when success_with_error then
    null;
 end;
 begin
  -- include sharding partition info 
  stmt2 := 'create or replace type ku$_partition_t force' || stmt1 ||
  '  tabpart       ku$_tab_part_t,                    /* table partition */
  subpart       ku$_tab_subpart_t                  /* table subpartition */) 
  not persistable';
  execute immediate stmt2;
 exception
  when success_with_error then
    null;
 end;
end;
/

-------------------------------------------------------------------------------
--                     TABLE_OBJNUM, TABLE_TYPES, DOMIDX_OBJNUM
-------------------------------------------------------------------------------

create or replace type ku$_table_objnum_t force as object
(
  obj_num       number,                                              /* obj# */
  objnum_name   varchar(128),                 /* name associated with objnum */
  table_type    varchar2(1),         /* 'T' = base table, 'N' = nested table */
                                  /* 'X' = nested table belonging to XMLtype */
  property      number,                                    /* table property */
  property2     number,                                    /* table property */
  ts_num        number,                                          /* tab$.ts# */
  schema_obj    ku$_schemaobj_t,                            /* schema object */
  base_obj      ku$_schemaobj_t             /* base object (if nested table) */
)
not persistable
/

-------------------------------------------------------------------------------
--                     INDEX_OBJNUM
-------------------------------------------------------------------------------

create or replace type ku$_index_objnum_t force as object
(
  obj_num       number,                                              /* obj# */
  schema_obj    ku$_schemaobj_t,                            /* schema object */
  ts_name       varchar2(128),                                 /* tablespace */
  ts_num        number,                                          /* tab$.ts# */
  type_num      number,                       /* what kind of index is this? */
  flags         number,                                     /* mutable flags */
  property      number,             /* immutable flags for life of the index */
  for_pkoid     number,                     /* 1 = enabled index for a pkoid */
  for_refpar    number,      /* 1 = used for ref partition parent constraint */
  base_obj_num  number,                                         /* base obj# */
  base_obj      ku$_schemaobj_t             /* base object (if nested table) */
)
not persistable
/

-------------------------------------------------------------------------------
--                     OPTION_OBJNUM
-------------------------------------------------------------------------------

create or replace type ku$_option_objnum_t force as object
(
  obj_num       number,                                              /* obj# */
  table_type    varchar2(1),         /* 'T' = base table, 'N' = nested table */
                                  /* 'X' = nested table belonging to XMLtype */
  schema_obj    ku$_schemaobj_t,                            /* schema object */
  tgt_type      number,                                             /* type# */
  impc_flags    number,           /* export processing flags: See dtools.bsq */
  tag           varchar2(128),                  /* optional group identifier */
  beginning_tgt_version varchar2(14),    /* 1st RDBMS version for which this */
        /* registration applies; i.e, applies to this and all later versions */
  ending_tgt_version    varchar2(14),    /* 1st RDBMS version for which this */
      /* registration does *not* apply; i.e, applies to all earlier versions */
  alt_name      varchar2(128),     /* alt name for tgt_object at import time */
  alt_schema    varchar2(128)    /* alt schema for tgt_object at import time */
)
not persistable
/

-------------------------------------------------------------------------------
--                     MARKER
-------------------------------------------------------------------------------

create or replace type ku$_marker_t force as object
(
  vers_major    char(1),                              /* UDT major version # */
  vers_minor    char(2),                              /* UDT minor version # */
  marker        number                                        /* marker type */
)
not persistable
/

-------------------------------------------------------------------------------
--                     MV_DEPTBL_OBJNUM
-- mv_deptbl_objnum view is used to find materialized view temp log tables
--  which must be exported with mv logs in transportable mode.
-------------------------------------------------------------------------------

create or replace type ku$_mv_deptbl_objnum_t force as object
(
  obj_num       number                                             /* obj# */
)
not persistable
/

-------------------------------------------------------------------------------
--                              TABLE DATA
-------------------------------------------------------------------------------

-- global temporary table for x$ktfbue data
--  for use in computing bytes allocated
-- using the temporary table is much faster than going 
--  against sys.x$ktfbue directly

create global temporary table sys.ku$xktfbue (
 ktfbuesegtsn                                       number,
 ktfbuesegfno                                       number,
 ktfbuesegbno                                       number,
 ktfbueblks                                         number
) on commit preserve rows;

create index sys.ku$xktfbue_i
  on sys.ku$xktfbue(ktfbuesegtsn,ktfbuesegfno,ktfbuesegbno);

--  UDT for bytes allocated/table or partition

create or replace type ku$_bytes_alloc_t force as object
(
  file_num      number,                        /* segment header file number */
  block_num     number,                       /* segment header block number */
  ts_num        number,                       /* tablespace for this segment */
  bytes_alloc   number                     /* total number of bytes allocated */
)
not persistable
/

create or replace type ku$_tab_bytes_alloc_t force as object
(
  obj_num       number,                                /* table object number */
  bytes_alloc   number                     /* total number of bytes allocated */
)
not persistable
/

-- UDTs for the TABLE_DATA object type.

create or replace type ku$_table_data_t force as object
(
  vers_major    char(1),                              /* UDT major version # */
  vers_minor    char(2),                              /* UDT minor version # */
  obj_num       number,                                              /* obj# */
  dataobj_num   number,                                /* data layer object# */
                                       /* hashed partitioned tables use obj# */
  name          varchar2(128),                                /* object name */
  part_name     varchar2(128),/* partition name (if object is a subpartition)*/
  parttype      number,                               /* (sub)partition type */
  property      number,                                    /* table property */
  property2     number,                                    /* table property */
  trigflag      number,                   /* the other table property column */
  xmltype_fmts  number,  /* formats of XMLType columns: 0x01=CLOB; 0x02=BLOB */
  xmlschemacols char(1),          /* 'Y' = table has xmlschema-based columns */
  xml_outofline char(1),          /* 'Y' = table has xmlschema-based columns
                                    and table data is out of line (max is 1) */
  longcol       char(1),         /* 'Y' = table has a long column (max is 1) */
  nft_varray    char(1), /*'Y' = table has varray column with non-final type */
  nonscoped_ref char(1),       /* 'Y' = table has column with non-scoped ref */
  tstz_cols     char(1),                        /* 'Y' = table has TSTZ data */
  schema_obj    ku$_schemaobj_t,                            /* schema object */
  ts_name       varchar2(128),                            /* tablespace name */
  ts_num        number,                                 /* tablespace number */
  blocksize     number,                            /* size of block in bytes */
  bytes_alloc   number,                   /* total number of bytes allocated */
  base_obj      ku$_schemaobj_t,            /* base table/view schema object */
  domidx_obj    ku$_schemaobj_t,        /* domain index (if secondary table) */
  anc_obj       ku$_schemaobj_t, /* base obj of dom idx (if secondary table) */
  unload_method number,              /* Direct Path preferred or ET required */
  et_parallel   number,                /* ET parallel unload possible or not */
  fgac          number,                               /* FGAC enabled or not */
  refpar_level  number,                      /* reference partitioning level */
  read_only     char(1)                      /* Y if table_data is read_only */
)
not persistable
/

-------------------------------------------------------------------------------
--                              POST_DATA_TABLE
-------------------------------------------------------------------------------

-- Do Post Data Table properties
--  initially, this is the 'minimize records_per_block' table property,
--      which affects bitmap indexes
--   metadata for this feature is bit 0x8000 set in tab$/spare1.
--
-- BUT! (based on mail 7/28/2009)
--  spare1 in tab$ stores the hakan flag . It is also overloaded (for reasons
--  that escape me) to store the obj# of the parent IOT for an IOT transient
--  table (a temporary IOT table created during ddl's on IOTs). So if flag
--  value 0x00100000 (KQLDTVNTF_IOTPMO) is not set in tab$/trigflag then
--  checking for 0x8000 set in tab$/spare1 is the way to know if minimize
--  records per block has been done.

create or replace type ku$_post_data_table_t force as object
(
  vers_major    char(1),                              /* UDT major version # */
  vers_minor    char(2),                              /* UDT minor version # */
  obj_num       number,                                 /* obj# of base obj. */
  schema_obj    ku$_schemaobj_t,                           /* base obj. info */
  spare1        number   /* 32768 (0x8000) set if minimize records per block */
)
not persistable
/

-------------------------------------------------------------------------------
--                              DPSTREAM_TABLE
-------------------------------------------------------------------------------

-- Table metadata needed for the DataPump data layer.

create or replace type ku$_strmsubcoltype_t force as object
(
  obj_num       number,                               /* obj# of base object */
  intcol_num    number,                            /* internal column number */
  owner_name    varchar2(128),                                 /* owner name */
  name          varchar2(128),                                /* object name */
  toid          raw(16),                                             /* toid */
  version       number,                      /* internal type version number */
  hashcode      raw(17),                                 /* Version hashcode */
  typeid        raw(16)  /* short typeid value (for non final and sub types) */
)
not persistable
/

create or replace type ku$_strmsubcoltype_list_t
 force as table of (ku$_strmsubcoltype_t)
not persistable
/

create or replace type ku$_strmcoltype_t force as object
(
  obj_num       number,                               /* obj# of base object */
  col_num       number,                                     /* column number */
  intcol_num    number,                            /* internal column number */
  owner_name    varchar2(128),                                 /* owner name */
  name          varchar2(128),                                /* object name */
  flags         number,                                             /* flags */
                     /* flags to indicate whether column type is ADT, Array, */
                                                      /* REF or Nested table */
                           /* 0x02 - adt column                              */
                           /* 0x04 - nested table column                     */
                           /* 0x08 - varray column                           */
                           /* 0x10 - ref column                              */
                           /* 0x20 - retrieve collection out-of-line         */
                           /* 0x20 - don't strip the null image              */
                           /* 0x40 - don't chop null image                   */
                           /* 0x40 - collection storage specified            */
                           /* 0x80 - column stores an old (8.0) format image */
                          /* 0x100 - data for this column not yet upgraded   */
                          /* 0x200 - ADT column is substitutable             */
                          /* 0x400 - NOT SUBSTITUTABLE specified explicitly  */
                          /* 0x800 - SUBSTITUTABLE specified explicitly      */
                         /* 0x1000 - implicitly not substitutable            */
                         /* 0x2000 - The typeid column stores the toid       */
                         /* 0x4000 - The column is an opaque type column     */
                         /* 0x8000 - nested table name is system generated   */
  opqflags      number,                         /* flags for the opaque type */
                              /* -------------- XMLType flags ---------
                               * 0x0001 (1) -- XMLType stored as object
                               * 0x0002 (2) -- XMLType schema is specified
                               * 0x0004 (4) -- XMLType stored as lob
                               * 0x0008 (8) -- XMLType stores extra column
                               * 0x0020 (32)-- XMLType table is out-of-line
                               * 0x0040 (64)-- XMLType store as binary xml
                               */
  toid          raw(16),                                             /* toid */
  version       number,                      /* internal type version number */
  hashcode      raw(17),                                 /* Version hashcode */
  typidcol_num  number,           /* intcol# of the type discriminant column */
  subtype_list  ku$_strmsubcoltype_list_t,               /* subtype metadata */
  anydata_list  ku$_Unpacked_AnyData_t      /* types in unpacked anydata col */
)
not persistable
/
--
-- strmcoltype for 10g compatibility
--
create or replace type ku$_10_2_strmcoltype_t force as object
(
  obj_num       number,                               /* obj# of base object */
  col_num       number,                                     /* column number */
  intcol_num    number,                            /* internal column number */
  owner_name    varchar2(128),                                 /* owner name */
  name          varchar2(128),                                /* object name */
  flags         number,                                             /* flags */
                     /* flags to indicate whether column type is ADT, Array, */
                                                      /* REF or Nested table */
                           /* 0x02 - adt column                              */
                           /* 0x04 - nested table column                     */
                           /* 0x08 - varray column                           */
                           /* 0x10 - ref column                              */
                           /* 0x20 - retrieve collection out-of-line         */
                           /* 0x20 - don't strip the null image              */
                           /* 0x40 - don't chop null image                   */
                           /* 0x40 - collection storage specified            */
                           /* 0x80 - column stores an old (8.0) format image */
                          /* 0x100 - data for this column not yet upgraded   */
                          /* 0x200 - ADT column is substitutable             */
                          /* 0x400 - NOT SUBSTITUTABLE specified explicitly  */
                          /* 0x800 - SUBSTITUTABLE specified explicitly      */
                         /* 0x1000 - implicitly not substitutable            */
                         /* 0x2000 - The typeid column stores the toid       */
                         /* 0x4000 - The column is an opaque type column     */
                         /* 0x8000 - nested table name is system generated   */
  /* opqflags not present in 10g */
  toid          raw(16),                                             /* toid */
  version       number,                      /* internal type version number */
  hashcode      raw(17),                                 /* Version hashcode */
  typidcol_num  number,           /* intcol# of the type discriminant column */
  subtype_list  ku$_strmsubcoltype_list_t                /* subtype metadata */
)
not persistable
/

create or replace type ku$_strmcol_t force as object
(
  obj_num       number,                      /* object number of base object */
  col_num       number,                          /* column number as created */
  intcol_num    number,                            /* internal column number */
  segcol_num    number,                          /* column number in segment */
  col_sortkey   number,                              /* sort key for columns */
  base_intcol_num number,    /* internal column number of base column, i.e., */
                           /* the intcol# of the first column with this col# */
  base_col_type number, /* base column type: 1 = UDT, 2 = XMLType OR or CSX, */
                        /*                   3 = XMLType as CLOB,  4 = NTB,
                                             0 = other */
  property      number,                     /* column properties (bit flags) */
                /* 0x0400 =    1024 = nested table columns setid             */
            /* 0x00800000 = 8388608 = string column measured in characters   */
  property2     number,                /* more column properties (bit flags) */
  name          varchar2(128),                             /* name of column */
  attrname      varchar2(4000),/* name of type attr. column: null if != type */
  type_num      number,                               /* data type of column */
  length        number,                         /* length of column in bytes */
  precision_num number,                                         /* precision */
  scale         number,                                             /* scale */
  not_null      number,                               /* 0 = nulls permitted */
                                                 /* > 0 = no NULLs permitted */
  charsetid     number,                              /* NLS character set id */
  charsetform   number,
  charlength    number,            /* maximum number of characters in string */
  lob_property  number,                    /* lob$.property if column is lob */
                                /* 0x0200 = LOB data in little endian format */
  typemd        ku$_strmcoltype_t,
  base_col_name varchar2(128),
  attrname2     varchar2(4000)
)
not persistable
/

create or replace type ku$_strmcol_list_t force as table of (ku$_strmcol_t)
not persistable
/
--
-- strmcol for 10g compatibility
--
create or replace type ku$_10_2_strmcol_t force as object
(
  obj_num       number,                      /* object number of base object */
  col_num       number,                          /* column number as created */
  intcol_num    number,                            /* internal column number */
  segcol_num    number,                          /* column number in segment */
  /* col_sortkey, base_intcol_num not present on 10g */
  /* base_col_type, base_col_name added for bug fix on 10g */
  base_col_type number, /* base column type: 1 = UDT, 2 = XMLType OR or CSX, */
                        /*                   3 = XMLType as CLOB,  0 = other */
  base_col_name varchar2(128),     /* for any xmltype, name of xmltype column*/
  property      number,                     /* column properties (bit flags) */
                /* 0x0400 =    1024 = nested table columns setid             */
            /* 0x00800000 = 8388608 = string column measured in characters   */
  property2     number,                /* more column properties (bit flags) */
  name          varchar2(128),                             /* name of column */
  attrname      varchar2(4000),/* name of type attr. column: null if != type */
  type_num      number,                               /* data type of column */
  length        number,                         /* length of column in bytes */
  precision_num number,                                         /* precision */
  scale         number,                                             /* scale */
  not_null      number,                               /* 0 = nulls permitted */
                                                 /* > 0 = no NULLs permitted */
  charsetid     number,                              /* NLS character set id */
  charsetform   number,
  charlength    number,            /* maximum number of characters in string */
  lob_property  number,                    /* lob$.property if column is lob */
                                /* 0x0200 = LOB data in little endian format */
  typemd        ku$_10_2_strmcoltype_t
)
not persistable
/

create or replace type ku$_10_2_strmcol_list_t force
as table of (ku$_10_2_strmcol_t)
not persistable
/

create or replace type ku$_strmtable_t force as object
(
  vers_major    char(1),                              /* UDT major version # */
  vers_minor    char(2),                              /* UDT minor version # */
  vers_dpapi    number,                           /* direct path API version */
  endianness    number,                 /* 1 = big-endian, 2 = little-endian */
  charset       varchar2(128),                           /* db character set */
  ncharset      varchar2(128),                          /* db ncharacter set */
  dbtimezone    varchar2(64),                          /* database time zone */
  fdo           raw(100),               /* platform Format Descriptor Object */
  obj_num       number,                                              /* obj# */
  owner_name    varchar2(128),                                 /* owner name */
  name          varchar2(128),                                /* object name */
  pname         varchar2(128),                             /* partition name */
  property      number,                                  /* table properties */
  property2     number,                             /* more table properties */
  col_list      ku$_strmcol_list_t                        /* list of columns */
)
not persistable
/

--
-- strmtable for 10g:
--   use 10g strmcol list
--
create or replace type ku$_10_2_strmtable_t force as object
(
  vers_major    char(1),                              /* UDT major version # */
  vers_minor    char(2),                              /* UDT minor version # */
  vers_dpapi    number,                           /* direct path API version */
  endianness    number,                 /* 1 = big-endian, 2 = little-endian */
  charset       varchar2(128),                           /* db character set */
  ncharset      varchar2(128),                          /* db ncharacter set */
  dbtimezone    varchar2(64),                          /* database time zone */
  fdo           raw(100),               /* platform Format Descriptor Object */
  obj_num       number,                                              /* obj# */
  owner_name    varchar2(128),                                 /* owner name */
  name          varchar2(128),                                /* object name */
  pname         varchar2(128),                             /* partition name */
  property      number,                                  /* table properties */
  col_list      ku$_10_2_strmcol_list_t                   /* list of columns */
)
not persistable
/

-------------------------------------------------------------------------------
--                              PROC./FUNC./PACKAGE
-------------------------------------------------------------------------------

-- common adt for procedures, functions, packages and package bodies
create or replace type ku$_proc_t force as object
(
  vers_major    char(1),                              /* UDT major version # */
  vers_minor    char(2),                              /* UDT minor version # */
  obj_num       number,                                     /* object number */
  type_num      number,                                       /* type number */
  schema_obj    ku$_schemaobj_t,                            /* schema object */
  source_lines  ku$_source_list_t                           /* source lines */
)
not persistable
/

create or replace type ku$_proc_objnum_t force as object
(
  vers_major    char(1),                              /* UDT major version # */
  vers_minor    char(2),                              /* UDT minor version # */
  obj_num       number,                                     /* object number */
  type_num      number,                                       /* type number */
  schema_obj    ku$_schemaobj_t                             /* schema object */
)
not persistable
/

create or replace type ku$_full_pkg_t force as object
(
  vers_major            char(1),                      /* UDT major version # */
  vers_minor            char(2),                      /* UDT minor version # */
  obj_num               number,                             /* object number */
  schema_obj            ku$_schemaobj_t,                    /* schema object */
  package_t             ku$_proc_t,                        /* package header */
  package_body_t        ku$_proc_t                           /* package body */
)
not persistable
/

-- type used by export
-- includes base_obj_num (obj# of the pkg_spec) so that the base_obj_num
-- can be used as a filter

create or replace type ku$_exp_pkg_body_t force as object
(
  vers_major    char(1),                              /* UDT major version # */
  vers_minor    char(2),                              /* UDT minor version # */
  base_obj_num  number,                                /* base object number */
  obj_num       number,                                     /* object number */
  type_num      number,                                       /* type number */
  schema_obj    ku$_schemaobj_t,                            /* schema object */
  source_lines  ku$_source_list_t,                           /* source lines */
  compiler_info ku$_switch_compiler_t
)
not persistable
/

-- UDT for alter procedure/function/package compile ...

create or replace type ku$_alter_proc_t force as object
(
  vers_major    char(1),                              /* UDT major version # */
  vers_minor    char(2),                              /* UDT minor version # */
  obj_num       number,                                     /* object number */
  type_num      number,                                       /* type number */
  schema_obj    ku$_schemaobj_t,                            /* schema object */
  compiler_info ku$_switch_compiler_t
)
not persistable
/


-------------------------------------------------------------------------------
--                              OPERATOR
-------------------------------------------------------------------------------

-- ADT for operator arguments

create or replace type ku$_oparg_t force as object
(
  obj_num       number,                            /* operator object number */
  bind_num      number,                      /* binding this arg. belongs to */
  position      number,                   /* position of the arg in the bind */
  type          varchar2(61)                          /* datatype of the arg */
)
not persistable
/

create or replace type ku$_oparg_list_t force as TABLE of (ku$_oparg_t)
not persistable
/

-- Simplified ADT for listing primary operators for ancillary operators
create or replace type ku$_opancillary_t force as object
(
  obj_num       number,                  /* object number of ANCILLARY oper. */
  bind_num      number,                  /* bind number for the ancillary op */
  primop_num    number,          /* object number of PRIMARY for this ancil. */
  primop_obj    ku$_schemaobj_t,                /* schema object for PRIMARY */
  args          ku$_oparg_list_t               /* arguments for this primary */
)
not persistable
/

create or replace type ku$_opancillary_list_t force
as TABLE of (ku$_opancillary_t)
not persistable
/

-- ADT for operator bindings
create or replace type ku$_opbinding_t force as object
(
  obj_num       number,                            /* operator object number */
  bind_num      number,                            /* number of this binding */
  functionname  varchar2(386),               /* func that impl. this binding */
  returnschema  varchar2(128),             /* schema of return type (if ADT) */
  returntype    varchar2(128),                    /* return type of function */
  impschema     varchar2(128),            /* indextype implementation schema */
  imptype       varchar2(128),              /* indextype implementation type */
  property      number,                                    /* property flags */
  spare1        varchar2(128),
  spare2        varchar2(128),
  spare3        number,
  args          ku$_oparg_list_t,              /* arguments for this binding */
  ancillaries   ku$_opancillary_list_t  /* list of primary ops for this ancil*/
)
not persistable
/

create or replace type ku$_opbinding_list_t force as TABLE of (ku$_opbinding_t)
not persistable
/

-- ADT for operators
create or replace type ku$_operator_t force as object
(
  vers_major    char(1),                              /* UDT major version # */
  vers_minor    char(2),                              /* UDT minor version # */
  obj_num       number,                            /* operator object number */
  schema_obj    ku$_schemaobj_t,                    /* base schema obj. info */
  property      number,                                    /* property flags */
  bindings      ku$_opbinding_list_t       /* List of bindings for this oper */
)
not persistable
/

-------------------------------------------------------------------------------
--                              INDEXTYPE OPERATORS
-------------------------------------------------------------------------------

-- ADT for operators supported by indextypes. This is significantly
-- simplified from the full-blown ku$_operator_t above.
create or replace type ku$_indexop_t force as object
(
  obj_num       number,                          /* obj# of parent indextype */
  oper_num      number,                 /* obj# of operator for this binding */
  bind_num      number,                            /* number of this binding */
  property      number,                                    /* property flags */
                                          /* 0x01 - INEXACT match use filter */
                        /* 0x02 -  invoke rewrite when indexed join is found */
                                    /* 0x04 - this is an "order-by" operator */
  oper_obj      ku$_schemaobj_t,             /* sch. info. for this operator */
  args          ku$_oparg_list_t           /* arguments for this op. binding */
)
not persistable
/

create or replace type ku$_indexop_list_t force as TABLE of (ku$_indexop_t)
not persistable
/

create or replace type ku$_indarraytype_t force as object
(
  obj_num       number,                                 /* obj# of indextype */
  type_num      number,                       /* data type of indexed column */
                                           /* for ADT column, type# = DTYADT */
  basetype_obj  ku$_schemaobj_t,                        /* user-defined type */
  arraytype_obj ku$_schemaobj_t                           /* collection type */
)
not persistable
/

create or replace type ku$_indarraytype_list_t force
as table of (ku$_indarraytype_t)
not persistable
/

create or replace type ku$_indextype_t force as object
(
  vers_major    char(1),                              /* UDT major version # */
  vers_minor    char(2),                              /* UDT minor version # */
  obj_num       number,                                 /* obj# of indextype */
  schema_obj    ku$_schemaobj_t,                    /* base schema obj. info */
  impl_obj      ku$_schemaobj_t,        /* sch. info for implementation type */
  property      number,                                         /* property */
                                              /* 0x0001 WITHOUT_COLUMN_DATA */
                                                   /* 0x0002 WITH_ARRAY_DML */
                                              /* 0x0004 WITH_REBUILD_ONLINE */
                                                     /* 0x0008 HAS_ORDER_BY */
                                       /* 0x0010 WITH LOCAL_RANGE_PARTITION */
                                        /* 0x0020 WITH LOCAL_HASH_PARTITION */
                                                      /* 0x0040 WITHOUT_DML */
                                              /* 0x0080 AUTHID_CURRENT_USER */
  operators     ku$_indexop_list_t,
  indarray      ku$_indarraytype_list_t
)
not persistable
/

-------------------------------------------------------------------------------
--                              TRIGGERS
-------------------------------------------------------------------------------
create or replace type ku$_triggercol_t force as object
(
  vers_major    char(1),                              /* UDT major version # */
  vers_minor    char(2),                              /* UDT minor version # */
  obj_num       number,                                   /* obj# of trigger */
  col_num       number,                                     /* column number */
  type_num      number,                          /* type of column reference */
     /* 6 = OLD IN-ARG, 5 = NEW IN-ARG, 9 = NEW OUT-VAR, 13 = NEW IN/OUT-VAR */
                                                  /* 0x14 = 20 PARENT IN-ARG */
  position_num  number,                               /* position in trigger */
  intcol_num    number,                            /* internal column number */
  name          varchar2(128),                             /* name of column */
  attrname      varchar2(4000) /* name of type attr. column: null if != type */
)
not persistable
/

create or replace type ku$_triggercol_list_t
 force as table of (ku$_triggercol_t)
not persistable
/

create or replace type ku$_triggerdep_t force as object
(
  vers_major  char(1),                                /* UDT major version # */
  vers_minor  char(2),                                /* UDT minor version # */
  obj_num     number,                                     /* obj# of trigger */
  p_trgowner  varchar2(128),                         /* parent trigger owner */
  p_trgname   varchar2(128),                          /* parent trigger name */
  flag        number                              /* 0x01 FOLLOWS dependency */
                                                 /* 0x02 PRECEDES dependency */
                                  /* 0x04 - schema user not specified in ddl */
)
not persistable
/

create or replace type ku$_triggerdep_list_t
 force as table of (ku$_triggerdep_t)
not persistable
/

create or replace type ku$_trigger_t force as object
(
  vers_major    char(1),                              /* UDT major version # */
  vers_minor    char(2),                              /* UDT minor version # */
  obj_num       number,                                   /* obj# of trigger */
  schema_obj    ku$_schemaobj_t,                 /* object info. for trigger */
  base_obj_num  number,                                  /* obj# of base obj */
  base_obj_schema varchar2(128),        /* schema name - for schema triggers */
  base_obj      ku$_schemaobj_t,    /* object info. for base obj: May be null*/
  tab_property2 number,       /* table property bits if base object is table */
  xdb_generated number,                     /* 1 if xdb generated, else NULL */
  type_num      number,                                     /* trigger type: */
   /* 0=before table, 1=before row, 2=after table, 3=after row, 4=instead of */
  act_update    number,                                    /* fire on update */
  act_insert    number,                                    /* fire on insert */
  act_delete    number,                                    /* fire on delete */
  refoldname    varchar2(128),                       /* old referencing name */
  refnewname    varchar2(128),                       /* new referencing name */
  defschema_exst number,       /* Flag to identifify schema existance in def */
  definition    varchar2(4000),                /* text of trigger definition */
  parsed_def    ku$_source_t,          /* definition with name offset/length */
  whenclause    varchar2(4000),                       /* text of when clause */
  body          clob,                                /* text of trigger body */
  body_vcnt     ku$_vcnt,                            /* text of trigger body */
  body_len      number,                            /* length of trigger body */
  enabled       number,                         /* 0 = DISABLED, 1 = ENABLED */
  property      number,                                /* trigger properties */
                                                /* 0x01 = baseobject is view */
                                                /* 0x02 = Call style trigger */
                                                /* 0x04 = Java Trigger       */
                                            /* 0x08 = baseobject is database */
                                              /* 0x10 = baseobject is schema */
                                              /* 0x20 = Nested table trigger */
                                                 /* 0x40 = baseobject is IOT */
                              /* 0x80 = fire-once-only (fire one place only) */
  sys_evts      number,                         /* system events for trigger */
  nttrigcol     number,               /* intcol# on which trigger is defined */
  nttrigatt     number,                    /* attribute number within column */
  ntname        varchar2(128),                  /* nested table trigger name */
  refprtname    varchar2(128),                    /* PARENT referencing name */
  actionlineno  number,                         /* action line number offset */
  cols          ku$_triggercol_list_t,      /* columns referenced by trigger */
  trigdeps      ku$_triggerdep_list_t,               /* trigger dependencies */
  compiler_info ku$_switch_compiler_t
)
not persistable
/

-------------------------------------------------------------------------------
--                              VIEWS
-------------------------------------------------------------------------------

create or replace type ku$_view_t force as object
(
  vers_major    char(1),                              /* UDT major version # */
  vers_minor    char(2),                              /* UDT minor version # */
  obj_num       number,                                              /* obj# */
  schema_obj    ku$_schemaobj_t,                            /* schema object */
  audit_val     varchar2(128),                           /* auditing options */
  cols          number,                                      /* # of columns */
  intcols       number,                             /* # of internal columns */
  property      number,                                  /* table properties */
                /* 0x0001 =       1 = this is typed view                     */
                /* 0x0002 =       2 = view has ADT column(s)                 */
                /* 0x0004 =       4 = view has nested table column(s)        */
                /* 0x0008 =       8 = view has REF column(s)                 */
                /* 0x0010 =      16 = view has array column(s)               */
                /* 0x1000 =    4096 = view has primary key-based oid         */
                /* 0x4000 =   16384 = view is read-only                      */
            /* 0x08000000 =         = view is a sub view                     */
            /* 0x10000000 =         = view is packed object view             */
  property2     number,                                  /* table properties */
            /* see kqld.h KQLDTVCP2 flags */
  flags         number,                                             /* flags */
                /* 0x0800 =    2048 = view/table has security policy         */
                /* 0x1000 =    4096 = view is insertable via trigger         */
                /* 0x2000 =    8192 = view is updatable via trigger          */
                /* 0x4000 =   16384 = view is deletable via trigger          */
             /* 0x0400000 =         = view has sub views defined under it    */
  textlength    number,                               /* length of view text */
  text          clob,                                           /* view text */
  parsed_text   sys.xmltype,                             /* parsed view text */
  with_option   ku$_constraint0_t,      /* check with option constraint name */
  textvcnt      ku$_vcnt,            /* (retained for backward compatibility */
  col_list      ku$_simple_col_list_t,    /* list of relational view columns */
  col_list2     ku$_tab_column_list_t,        /* list of object view columns */
  owner_name    varchar2(128),                          /* owner of row type */
  name          varchar2(128),                           /* name of row type */
  typetextlength  number,                         /* length of row type text */
  typetext        varchar2(4000),                               /* type text */
  oidtextlength   number,                              /* length of oid text */
  oidtext         varchar2(4000),                                /* oid text */
  transtextlength number,                 /* length of transformed view text */
  transtext       varchar2(4000),
  undertextlength number,       /* length of under clause text for sub-views */
  undertext       varchar2(4000),         /* under clause text for sub-views */
  con1_list     ku$_constraint1_list_t,               /* list of constraints */
  con2_list     ku$_constraint2_list_t                /* list of constraints */
)
not persistable
/

-------------------------------------------------------------------------------
--                              OUTLINES
-------------------------------------------------------------------------------
-- Types to support OUTLINEs

create or replace type ku$_outline_hint_t force as object
( name              varchar2(128),                          /* outline name */
  hint              number,               /* which hint for a given outline */
  category          varchar2(128),              /* collection/grouping name */
  hint_type         number,                                 /* type of hint */
  hint_text         varchar2(512),             /* hint specific information */
  stage             number,            /* stage of hint generation/applic'n */
  node              number,                                  /* QBC node id */
  table_name        varchar2(128),                      /* for ORDERED hint */
  table_tin         number,                        /* table instance number */
  table_pos         number,                             /* for ORDERED hint */
  ref_id            number,        /* node id that this hint is referencing */
  user_table_name   varchar2(128), /* table name to which this hint applies */
  cost              double precision,    /* optimizer estimated cost of the
                                                           hinted operation */
  cardinality       double precision,    /* optimizer estimated cardinality
                                                    of the hinted operation */
  bytes             double precision,     /* optimizer estimated byte count
                                                    of the hinted operation */
  hint_textoff      number,             /* offset into the SQL statement to
                                                    which this hint applies */
  hint_textlen      number,     /* length of SQL to which this hint applies */
  join_pred         varchar2(2000)      /* join predicate (applies only for
                                                         join method hints) */
)
not persistable
/

create or replace type ku$_outline_hint_list_t
 force as table of (ku$_outline_hint_t)
not persistable
/

create or replace type ku$_outline_node_t force as object
(
  name          varchar2(128),                             /* outline name  */
  category      varchar2(128),                          /* outline category */
  node          number,                              /* qbc node identifier */
  parent        number,      /* node id of the parent node for current node */
  node_type     number,                                    /* qbc node type */
  node_textlen  number,         /* length of SQL to which this node applies */
  node_textoff  number       /* offset into the SQL statement to which this
                                                               node applies */
)
not persistable
/

create or replace type ku$_outline_node_list_t
 force as table of (ku$_outline_node_t)
not persistable
/

create or replace type ku$_outline_t force as object
(
  vers_major        char(1),                          /* UDT major version # */
  vers_minor        char(1),                          /* UDT minor version # */
  name              varchar2(128),        /* named is potentially generated */
  sql_text          clob,          /* the SQL stmt being outlined */
  textlen           number,                           /* length of SQL stmt */
  signature         raw(16),                       /* signature of sql_text */
  hash_value        number,                  /* KGL's calculated hash value */
  category          varchar2(128),                         /* category name */
  version           varchar2(64),          /* db version @ outline creation */
  creator           varchar2(128),        /* user from whom outline created */
  timestamp         varchar2(19),                       /* time of creation */
  flags             number,              /* e.g. everUsed, bindVars, dynSql */
  hintcount         number,               /* number of hints on the outline */
  hints             ku$_outline_hint_list_t,/* list of hints for this outln */
  nodes             ku$_outline_node_list_t           /* list of qbc blocks */
)
not persistable
/

-------------------------------------------------------------------------------
--                              SYNONYMS
-------------------------------------------------------------------------------
-- 
create or replace type ku$_synonym_t force as object
(
  vers_major    char(1),                              /* UDT major version # */
  vers_minor    char(2),                              /* UDT minor version # */
  obj_num       number,                             /* synonym object number */
  schema_obj    ku$_schemaobj_t,                    /* synonym schema object */
  syn_long_name varchar2(4000),                         /* synonym long name */
  db_link       varchar2(128),                                /* object node */
  owner_name    varchar2(128),                               /* object owner */
  name          varchar2(128),                                /* object name */
  obj_long_name varchar2(4000)                           /* object long name */
)
not persistable
/

-------------------------------------------------------------------------------
--                              DIRECTORY
-------------------------------------------------------------------------------
-- 
create or replace type ku$_directory_t force as object
(
  vers_major    char(1),                              /* UDT major version # */
  vers_minor    char(1),                              /* UDT minor version # */
  obj_num       number,                           /* directory object number */
  schema_obj    ku$_schemaobj_t,                  /* directory schema object */
  audit_val     varchar2(128),                           /* auditing options */
  os_path       varchar2(4000)                             /* OS path string */
)
not persistable
/

-------------------------------------------------------------------------------
--                           ROLLBACK SEGMENTS
-------------------------------------------------------------------------------
-- 
create or replace type ku$_rollback_t force as object
(
  vers_major    char(1),                              /* UDT major version # */
  vers_minor    char(1),                              /* UDT minor version # */
  us_num        number,                               /* undo segment number */
  name          varchar2(128),                      /* rollback segment name */
  user_num      number,                /* Owner: 0 = SYS(PRIVATE) 1 = PUBLIC */
  optimal       number,                                     /* optimal value */
  iniexts       number,                               /* initial extent size */
  minexts       number,                         /* minimum number of extents */
  maxexts       number,                         /* maximum number of extents */
  extsize       number,                          /* current next extent size */
                                           /* zero for bitmapped tablespaces */
  tablespace    ku$_tablespace_t                   /* tablespace information */
)
not persistable
/

-------------------------------------------------------------------------------
--                           DATABASE LINKS
-------------------------------------------------------------------------------
-- 
create or replace type ku$_dblink_t force as object
(
  vers_major    char(1),                              /* UDT major version # */
  vers_minor    char(1),                              /* UDT minor version # */
  owner_name    varchar2(128),
  owner_num     number,
  name          varchar2(128),
  ctime         varchar2(19),
  host          varchar2(2000),
  userid        varchar2(128),
  password      varchar2(128),
  flag          number,
  authusr       varchar2(128),
  authpwd       varchar2(128),
  passwordx     raw(128),
  authpwdx      raw(128)
)
not persistable
/

-------------------------------------------------------------------------------
--                           TRUSTED LINKS
-------------------------------------------------------------------------------
-- 
create or replace type ku$_trlink_t force as object
(
  vers_major    char(1),                              /* UDT major version # */
  vers_minor    char(1),                              /* UDT minor version # */
  name          varchar2(132),                          /* trusted link name */
  function      varchar2(45),                                    /* function */
  type          number                               /* type of trusted link */
)
not persistable
/

-------------------------------------------------------------------------------
--                           Fine Grained Auditing
-------------------------------------------------------------------------------
-- 

-- Each FGA relevant Column type
create or replace type ku$_fga_rel_col_t force as object
(
    audit_column varchar2(128)
)
not persistable
/

-- FGA relevant column LIST
create or replace type ku$_fga_rel_col_list_t
 force as table of (ku$_fga_rel_col_t) not persistable;
/

create or replace type ku$_fga_policy_t force as object
(
  vers_major    char(1),                              /* UDT major version # */
  vers_minor    char(1),                              /* UDT minor version # */
  obj_num       number,                              /* parent object number */
  name          varchar2(128),                             /* name of policy */
  ptxt          clob,                                    /* policy predicate */
  pfschema      varchar2(128),                    /* schema of event handler */
  ppname        varchar2(128),                         /* event package name */
  pfname        varchar2(128),                        /* event funciton name */
  pcol          ku$_fga_rel_col_list_t,              /* relevent column List */
  enable_flag   number,                         /* 0 = disabled, 1 = enabled */
  stmt_type     number,              /* statement type default is 1 = select */
  audit_trail   number,              /* audit trail 0 = DB_EXTENDED, 64 = DB */
  pcol_opt      number,           /* audit_column_options 0 = any, 128 = all */
  base_obj      ku$_schemaobj_t,                       /* base Schema object */
  powner        varchar2(128)                             /* owner of policy */
)
not persistable
/

-------------------------------------------------------------------------------
--              Fine Grained Access Control Administrative Interface
-------------------------------------------------------------------------------

create or replace type ku$_rls_sec_rel_col_t force as object
(
  sec_rel_col varchar2(128)
)
not persistable
/

create or replace type ku$_rls_sec_rel_col_list_t
 force as table of (ku$_rls_sec_rel_col_t) not persistable;
/

create or replace type ku$_rls_associations_t force as object
(
  obj_num       number,                              /* parent object number */
  gname         varchar2(128),                       /* name of policy group */
  name          varchar2(128),                             /* name of policy */
  namespace     varchar2(128),                                  /* namespace */
  attribute     varchar2(128)                                   /* attribute */
)
not persistable
/

create or replace type ku$_rls_assoc_list_t
 force as table of (ku$_rls_associations_t) not persistable;
/

create or replace type ku$_rls_policy_objnum_t force as object
(
  obj_num       number,                              /* parent object number */
  name          varchar2(128),                             /* name of policy */
  pfschma       varchar2(128),             /* name of policy function schema */
  ppname        varchar2(128),                     /* name of policy package */
  pfname        varchar2(128),               /* name of policy function name */
  base_obj      ku$_schemaobj_t                        /* base schema object */
)
not persistable
/

create or replace type ku$_rls_policy_t force as object
(
  vers_major    char(1),                              /* UDT major version # */
  vers_minor    char(1),                              /* UDT minor version # */
  base_obj      ku$_schemaobj_t,                       /* base schema object */
  obj_num       number,                              /* parent object number */
  gname         varchar2(128),                       /* name of policy group */
  name          varchar2(128),                             /* name of policy */
  stmt_type     number,                        /* applicable statement type: */
  check_opt     number,                                 /* with check option */
  enable_flag   number,                         /* 0 = disabled, 1 = enabled */
  pfschma       varchar2(128),                  /* schema of policy function */
  ppname        varchar2(128),                        /* policy package name */
  pfname        varchar2(128),                       /* policy function name */
  policy_type   varchar2(35),                                 /* policy type */
  long_pred     number,                           /* 32K long predicate size */
  rel_cols      ku$_rls_sec_rel_col_list_t,     /* security relevant columns */
  rel_cols_opt  number,                  /* security relevant columns option */
  rls_assoc_list ku$_rls_assoc_list_t              /* attribute associations */
)
not persistable
/

create or replace type ku$_rls_policy_list_t force
as table of (ku$_rls_policy_t) not persistable;
/

create or replace type ku$_rls_group_t force as object
(
  vers_major    char(1),                              /* UDT major version # */
  vers_minor    char(1),                              /* UDT minor version # */
  base_obj      ku$_schemaobj_t,                       /* base schema object */
  obj_num       number,                              /* parent object number */
  name          varchar2(128)                        /* name of policy group */
)
not persistable
/

create or replace type ku$_rls_context_t force as object
(
  vers_major    char(1),                              /* UDT major version # */
  vers_minor    char(1),                              /* UDT minor version # */
  base_obj      ku$_schemaobj_t,                       /* base schema object */
  obj_num       number,                              /* parent object number */
  name          varchar2(128),                                  /* namespace */
  attr          varchar2(128)                                   /* attribute */
)
not persistable
/

-------------------------------------------------------------------------------
--                           Materialized View
-------------------------------------------------------------------------------
--
create or replace type ku$_m_view_scm_t force as object
(
  snacol            varchar2(128),                /* name of snapshot column */
  mascol            varchar2(128),                     /* master column name */
  maspos            number,            /* position of master column (intcol) */
  colrole           number,                       /* how is this column used */
  snapos            integer             /* position of col in snapshot table */
)
not persistable
/

create or replace type ku$_m_view_scm_list_t
 force as table of (ku$_m_view_scm_t)
not persistable
/

create or replace type ku$_m_view_srt_t force as object
(
  tablenum          number,           /* order of Master table in snap query */
  snaptime          varchar2(21),          /* time of last refresh for table */
  mowner            varchar2(128),                    /* owner of this table */
  master            varchar2(128),                     /* name of this table */
  masflag           number,                 /* additional master information */
  masobj_num        number,                    /* obj number of master table */
  loadertime        varchar2(21),      /* last refresh w.r.t. SQL*Loader log */
  refscn            number, /* scn of latest info used to refresh this table */
  lastsuccess       varchar2(21),   /* time of last known successful refresh */
  fcmaskvec         raw(255),                  /* filter columns mask vector */
  ejmaskvec         raw(255),               /* equi-join columns mask vector */
  sub_handle        number,            /* subscription handle (if using CDC) */
  change_view       varchar2(128),        /* change view name (if using CDC) */
  scm_count         number,
  scm_list          ku$_m_view_scm_list_t
)
not persistable
/

create or replace type ku$_m_view_srt_list_t
 force as table of (ku$_m_view_srt_t)
not persistable
/

create or replace type ku$_m_view_t force as object
(
  vers_major        char(1),                          /* UDT major version # */
  vers_minor        char(1),                          /* UDT minor version # */
  oidval            raw(16),                                    /* unique id */
  sowner            varchar2(128),                      /* Owner of snapshot */
  vname             varchar2(128),                       /* name of snapshot */
  tname             varchar2(128),                             /* Table name */
  mowner            varchar2(128),                        /* owner of master */
  master            varchar2(128),                         /* name of master */
  mlink             varchar2(128),           /* database link to master site */
  dflcollname       varchar2(128),                 /* Default collation name */
  base_obj_num      number,                                /* obj# of master */
  snapshot          varchar2(21), /* used by V7 masters to identify snapshot */
  snapid            integer,  /* used by V8 masters to identify the snapshot */
  auto_fast         varchar2(8),      /* date function for automatic refresh */
  auto_fun          varchar2(200),                  /* next time for refresh */
  auto_date         varchar2(19),                  /* start time for refresh */
  uslog             varchar2(128),            /* log for updatable snapshots */
  status            integer,                           /* refresh operations */
  master_version    integer,            /* Oracle version of the master site */
  tables            integer,                 /* Number of tables in snapshot */
  flag              number,
  flag2             number,
  flag3             number,
  lobmaskvec        raw(255),                     /* lob columns mask vector */
  mas_roll_seg      varchar2(128),           /* master-side rollback segment */
  rscn              number,                              /* last refresh scn */
  instsite          integer,                           /* instantiating site */
  flavor_id         number,                                     /* flavor id */
  objflag           number,                 /* object properties of snapshot */
  sna_type_owner    varchar2(128),                   /* object MV type owner */
  sna_type_name     varchar2(128),                    /* object MV type name */
  mas_type_owner    varchar2(128),         /* master object table type owner */
  mas_type_name     varchar2(128),          /* master object table type name */
  parent_sowner     varchar2(128),                  /* parent snapshot owner */
  parent_vname      varchar2(128),                   /* parent snapshot name */
  query_len         number,                                  /* query length */
  query_txt         clob,              /* query which this view instantiates */
  parsed_query_txt  sys.xmltype,                         /* parsed query_txt */
  query_vcnt        ku$_vcnt,          /* store the query when length > 4000 */
  rel_query         clob,              /* relational transformation of query */
  loc_roll_seg      varchar2(128),            /* local side rollback segment */
  global_db_name    varchar2(4000),                  /* Global database Name */
  syn_count         number,                /* Number of synonyms in snapshot */
  srt_list          ku$_m_view_srt_list_t,
                             /* fields from sum$: */
  mflags            number,                                       /*  mflags */
  xpflags           number,                           /* extension to pflags */
  zmapscale         number,                         /* zone map scale factor */
  evaledition_num   number,                     /* evaluation edition number */
  unusablebef_num   number,                /* unusable before edition number */
  unusablebeg_num   number         /* unusable beginning with edition number */
)
not persistable
/

create or replace type ku$_m_view_h_t force as object
(
  vers_major        char(1),                          /* UDT major version # */
  vers_minor        char(1),                          /* UDT minor version # */
  obj_num           number,                    /* object number of the mview */
  sowner            varchar2(128),                      /* Owner of snapshot */
  vname             varchar2(128),                       /* name of snapshot */
  mview             ku$_m_view_t,
  mview_tab         ku$_table_t,
  mview_idx_list    ku$_index_list_t
)
not persistable
/

create or replace type ku$_m_view_ph_t force as object
(
  vers_major        char(1),                          /* UDT major version # */
  vers_minor        char(1),                          /* UDT minor version # */
  obj_num           number,                    /* object number of the mview */
  sowner            varchar2(128),                      /* Owner of snapshot */
  vname             varchar2(128),                       /* name of snapshot */
  mview             ku$_m_view_t,
  mview_tab         ku$_table_t,
  mview_idx_list    ku$_index_list_t
)
not persistable
/

create or replace type ku$_m_view_fh_t force as object
(
  vers_major        char(1),                          /* UDT major version # */
  vers_minor        char(1),                          /* UDT minor version # */
  obj_num           number,                    /* object number of the mview */
  sowner            varchar2(128),                      /* Owner of snapshot */
  vname             varchar2(128),                       /* name of snapshot */
  mview             ku$_m_view_t,
  mview_tab         ku$_table_t,
  mview_idx_list    ku$_index_list_t
)
not persistable
/

create or replace type ku$_m_view_pfh_t force as object
(
  vers_major        char(1),                          /* UDT major version # */
  vers_minor        char(1),                          /* UDT minor version # */
  obj_num           number,                    /* object number of the mview */
  sowner            varchar2(128),                      /* Owner of snapshot */
  vname             varchar2(128),                       /* name of snapshot */
  mview             ku$_m_view_t,
  mview_tab         ku$_table_t,
  mview_idx_list    ku$_index_list_t
)
not persistable
/

create or replace type ku$_m_view_iot_t force as object
(
  vers_major        char(1),                          /* UDT major version # */
  vers_minor        char(1),                          /* UDT minor version # */
  obj_num           number,                    /* object number of the mview */
  sowner            varchar2(128),                      /* Owner of snapshot */
  vname             varchar2(128),                       /* name of snapshot */
  mview             ku$_m_view_t,
  mview_tab         ku$_io_table_t,
  mview_idx_list    ku$_index_list_t
)
not persistable
/

create or replace type ku$_m_view_piot_t force as object
(
  vers_major        char(1),                          /* UDT major version # */
  vers_minor        char(1),                          /* UDT minor version # */
  obj_num           number,                    /* object number of the mview */
  sowner            varchar2(128),                      /* Owner of snapshot */
  vname             varchar2(128),                       /* name of snapshot */
  mview             ku$_m_view_t,
  mview_tab         ku$_io_table_t,
  mview_idx_list    ku$_index_list_t
)
not persistable
/

-------------------------------------------------------------------------------
--                             Materialized View Log
-------------------------------------------------------------------------------
--
create or replace type ku$_refcol_t force as object
(
  colname         varchar2(128),                 /* master table column name */
  oldest          varchar2(21),  /* maximum age of information in the column */
  flag            number                          /* column meta information */
)
not persistable
/

create or replace type ku$_refcol_list_t
 force as table of (ku$_refcol_t)
not persistable
/

create or replace type ku$_slog_t force as object
(
  snapid          integer,                        /* identifies V8 snapshots */
  snaptime        varchar2(21),                       /* when last refreshed */
  tscn            number                                 /* last refresh scn */
)
not persistable
/

create or replace type ku$_slog_list_t
 force as table of (ku$_slog_t)
not persistable
/

create or replace type ku$_m_view_log_t force as object
(
  vers_major      char(1),                            /* UDT major version # */
  vers_minor      char(1),                            /* UDT minor version # */
  mowner          varchar2(128),                          /* owner of master */
  master          varchar2(128),                           /* name of master */
  oldest          varchar2(19),/*maximum age of rowid information in the log */
  oldest_pk       varchar2(21),  /* maximum age of PK information in the log */
  oscn            number,                                   /* scn of oldest */
  youngest        varchar2(21),             /* most recent snaptime assigned */
  yscn            number,                                      /* set-up scn */
  log             varchar2(128),                              /* name of log */
  trig            varchar2(128),                /* trigger on master for log */
  flag            number,    /* 0x01, rowid         0x02, primary key values */
                             /* 0x04, column values 0x08, log is imported    */
                             /* 0x10, log is created with temp table         */
  mtime           varchar2(21),                     /* DDL modification time */
  temp_log        varchar2(128),     /* temp table as updatable snapshot log */
  oldest_oid      varchar2(21), /* maximum age of OID information in the log */
  oldest_new      varchar2(21),      /* maximum age of new values in the log */
  oldest_seq      varchar2(21), /* maximum age of sequence values in the log */
  global_db_name  varchar2(4000),                    /* Global database Name */
  purge_start     varchar2(21),                          /* purge start date */
  purge_next      varchar2(200),               /* purge next date expression */
  fc_count        number,                        /* number of filter columns */
  fc_list         ku$_refcol_list_t,                   /* filter column list */
  lm_count        number,                         /* number of local masters */
  lm_list         ku$_slog_list_t                       /* local master list */
)
not persistable
/

create or replace type ku$_m_view_log_h_t force as object
(
  vers_major        char(1),                          /* UDT major version # */
  vers_minor        char(1),                          /* UDT minor version # */
  tabobj_num        number,                       /* log table object number */
  mviewlog          ku$_m_view_log_t,
  mviewlog_tab      ku$_table_t
)
not persistable
/

create or replace type ku$_m_view_log_ph_t force as object
(
  vers_major        char(1),                          /* UDT major version # */
  vers_minor        char(1),                          /* UDT minor version # */
  tabobj_num        number,                       /* log table object number */
  mviewlog          ku$_m_view_log_t,
  mviewlog_tab      ku$_table_t
)
not persistable
/

create or replace type ku$_m_view_log_fh_t force as object
(
  vers_major        char(1),                          /* UDT major version # */
  vers_minor        char(1),                          /* UDT minor version # */
  tabobj_num        number,                       /* log table object number */
  mviewlog          ku$_m_view_log_t,
  mviewlog_tab      ku$_table_t
)
not persistable
/

create or replace type ku$_m_view_log_pfh_t force as object
(
  vers_major        char(1),                          /* UDT major version # */
  vers_minor        char(1),                          /* UDT minor version # */
  tabobj_num        number,                       /* log table object number */
  mviewlog          ku$_m_view_log_t,
  mviewlog_tab      ku$_table_t
)
not persistable
/

-------------------------------------------------------------------------------
--                              LIBRARY
-------------------------------------------------------------------------------
-- 
create or replace type ku$_credential_t force as object
(
  vers_major    char(1),                              /* UDT major version # */
  vers_minor    char(1),                              /* UDT minor version # */
  obj_num       number,                          /* credential object number */
  schema_obj    ku$_schemaobj_t,                 /* credential schema object */
  password      varchar2(255),                                   /* password */
  domain        varchar2(128),                                     /* domain */
  flags         number
)
not persistable
/

create or replace type ku$_library_t force as object
(
  vers_major    char(1),                              /* UDT major version # */
  vers_minor    char(1),                              /* UDT minor version # */
  obj_num       number,                             /* library object number */
  schema_obj    ku$_schemaobj_t,                    /* library schema object */
  filespec      varchar2(2000),                                  /* filename */
  lib_audit     varchar2(2000),
  property      number,
  agent         varchar2(128),                  /* network agent for library */
  directory     varchar2(128),          /* directory object for library file */
  filename      varchar2(2000),                   /* filename of the library */
  credential    ku$_credential_t
)
not persistable
/

-------------------------------------------------------------------------------
--                        TRITION SECURITY (TS)
-------------------------------------------------------------------------------
-- 

-- Triton Security object (xs$obj + xs$prin)

create or replace type ku$_xsprin_t force as object
(
  vers_major    char(1),                             /* UDT major version # */
  vers_minor    char(1),                             /* UDT minor version # */
  prin_id       number,
  type          number,
  guid          raw(16),
  ext_src       varchar2(128),
  start_date    timestamp(6) with time zone,
  end_date      timestamp(6) with time zone,
  schema        varchar2(128),
  tablespace    varchar2(128),
  profile_num   number,
  credential    varchar2(128),
  failedlogins  number,
  enable        number,
  duration      number,
  system        number,
  scope         number,
  powner        varchar2(128),
  pname         varchar2(128),
  pfname        varchar2(128),
  objacl_num    number,
  note          varchar2(4000),
  status        number,                             /* 1=ACTIVE, 2=INACTIVE */
  ctime         timestamp(6),
  mtime         timestamp(6),
  ptime         date,
  exptime       date,
  ltime         date,
  lslogontime   date,
  astatus       number,                   /* password policy account status */
  verifier      varchar2(256),                               /* XS Verifier */
  verifier_type number,                                 /* XS Verifier Type */
                                                      /* XS_SHA512      = 1 */
                                                      /* XS_SALTED_SHA1 = 2 */
  description   varchar2(4000)
)
not persistable
/

create or replace type ku$_xsobj_t force as object
(
  vers_major    char(1),                             /* UDT major version # */
  vers_minor    char(1),                             /* UDT minor version # */
  name          varchar2(128),                              /* name of user */
  ws            varchar2(128),                         /* name of workspace */
  owner_name    varchar2(128),                              /* owner of ACL */
  tenant        varchar2(128),                                    /* Tenant */
  id            number,                                           /* TS id  */
  type          number,                                         /* TS type  */
                                                             /* 1=principal */
                                                             /* 2=sc        */
                                                             /* 3=acl       */
                                                             /* 4=priv      */
                                                             /* 5=dse       */
                                                             /* 6=roleset   */
                                                             /* 7=nstemplate*/
  status       number,                                /* 0=invalid, 1=valid */
  flags        number,                                         /* flag bits */
  early_depcnt number,
  late_depcnt  number,
  aclid        number,
  xs_prin      ku$_xsprin_t                                      /* xs$prin */
)
not persistable
/

create or replace type ku$_xsobj_list_t force as table of (ku$_xsobj_t)
not persistable;
/

-- Triton Security User
-- same to ku$_xsobj_view except contains a where clause to fetch only users.
create or replace type ku$_xsuser_t force as object
(
  vers_major    char(1),                             /* UDT major version # */
  vers_minor    char(1),                             /* UDT minor version # */
  name          varchar2(128),                              /* name of user */
  ws            varchar2(128),                         /* name of workspace */
  owner         varchar2(128),                              /* owner of ACL */
  tenant        varchar2(128),                                    /* Tenant */
  id            number,                                           /* TS id  */
  type          number,                                         /* TS type  */
                                                             /* 1=principal */
                                                             /* 2=sc        */
                                                             /* 3=acl       */
                                                             /* 4=priv      */
                                                             /* 5=dse       */
                                                             /* 6=roleset   */
                                                             /* 7=nstemplate*/
  status       number,                                /* 0=invalid, 1=valid */
  xs_prin      ku$_xsprin_t                                      /* xs$prin */
)
not persistable
/

-- Triton Security related to grants/privs 
-- This udt is used to generate a call into xs_admin_util package to grant a
-- RAS admin  priv to a specific schema (see admin/xsutil.sql)
-- PROCEDURE grant_system_privilege(
--   priv_name  IN VARCHAR2,           -- admin priv to grant
--   user_name  IN VARCHAR2,           -- grantee
--   user_type  IN PLS_INTEGER := XS_ADMIN_UTIL.PTYPE_DB,
--   schema     IN VARCHAR2 := NULL);  -- schema to whom priv user can affect
create or replace type ku$_xsgrant_t force as object
(
  vers_major    char(1),                             /* UDT major version # */
  vers_minor    char(1),                             /* UDT minor version # */
  name          varchar2(128),                                 /* Privilege */
  grantee       varchar2(128),                         /* receiver of grant */
  user_type     number,                   /* type of grantee: XS, DB,DN,EXT */
  schema        varchar2(128)
)
not persistable
/

-- Triton Security Roles related objects
create or replace type ku$_xsrole_grant_t force as object
(
  vers_major    char(1),                             /* UDT major version # */
  vers_minor    char(1),                             /* UDT minor version # */
  grantee_num   number,
  grantee       varchar2(128),
  role_num      number,
  name          varchar2(128),
  granter_num   number,
  granter       varchar2(128),
  start_date    timestamp with time zone,
  end_date      timestamp with time zone
)
not persistable
/

create or replace type ku$_xsrgrant_list_t force
as table of (ku$_xsrole_grant_t) not persistable;
/

create or replace type ku$_xsrole_t force as object
(
  vers_major    char(1),                             /* UDT major version # */
  vers_minor    char(1),                             /* UDT minor version # */
  xs_obj        ku$_xsobj_t,                              /* XS object info */
  xs_grant_list ku$_xsrgrant_list_t
)
not persistable
/

-- Triton Rolesets
create or replace type ku$_xsroleset_t force as object
(
  vers_major    char(1),                             /* UDT major version # */
  vers_minor    char(1),                             /* UDT minor version # */
  rsid          number,                                       /* Roleset id */
  ctime         timestamp,
  mtime         timestamp,
  description   varchar2(4000),                      /* Roleset description */
  xs_obj        ku$_xsobj_t,                         /* Roleset object info */
  role_list     ku$_xsobj_list_t                /* Roles assoc with roleset */
)
not persistable
/

-- Triton Privileges
create or replace type ku$_xsaggpriv_t force as object
(
  vers_major     char(1),                             /* UDT major version # */
  vers_minor     char(1),                             /* UDT minor version # */
  scid           number,                                /* Security Class id */
  aggr_privid    number,
  implied_privid number,
  name           varchar2(128),
  owner_name     varchar2(128)
)
not persistable
/

create or replace type ku$_xsaggpriv_list_t force as table of (ku$_xsaggpriv_t)
not persistable;
/

create or replace type ku$_xspriv_t force as object
(
  vers_major    char(1),                              /* UDT major version # */
  vers_minor    char(1),                              /* UDT minor version # */
  privid        number,                                     /*  Privilege id */
  scid          number,                                 /* Security Class id */
  ctime         timestamp,
  mtime         timestamp,
  description   varchar2(4000),
  name          varchar2(128),
  owner_name    varchar2(128),
  aggr_priv_list ku$_xsaggpriv_list_t
)
not persistable
/

create or replace type ku$_xspriv_list_t force as table of (ku$_xspriv_t)
not persistable;
/

create or replace type ku$_xsacepriv_t force as object
(
  vers_major    char(1),                              /* UDT major version # */
  vers_minor    char(1),                              /* UDT minor version # */
  aclid         number,                                           /*  ACL id */
  ace_order     number,                                      /*  ACE Order # */
  privid        number,                                     /*  Privilege id */
  xs_obj        ku$_xsobj_t                                /* XS object info */
)
not persistable
/

create or replace type ku$_xsacepriv_list_t force as table of (ku$_xsacepriv_t)
not persistable;
/

-- Triton Security class

create or replace type ku$_xssecclsh_t force as object
(
  vers_major    char(1),                              /* UDT major version # */
  vers_minor    char(1),                              /* UDT minor version # */
  scid          number,                                 /* Security Class id */
  parent_scid   number,
  parent_name   varchar2(128),
  parent_owner  varchar2(128)
)
not persistable
/

create or replace type ku$_xssecclsh_list_t force as table of (ku$_xssecclsh_t)
not persistable;
/

create or replace type ku$_xssclass_t force as object
(
  vers_major    char(1),                              /* UDT major version # */
  vers_minor    char(1),                              /* UDT minor version # */
  scid          number,                                 /* Security Class id */
  ctime         timestamp,
  mtime         timestamp,
  description   varchar2(4000),
  xs_obj        ku$_xsobj_t,                               /* XS object info */
  priv_list     ku$_xspriv_list_t,
  parent_list   ku$_xssecclsh_list_t
)
not persistable
/

-- Triton Security ACL (including ACEs, ACLParams, etc) views/types

create or replace type ku$_xsace_t force as object
(
  vers_major    char(1),                              /* UDT major version # */
  vers_minor    char(1),                              /* UDT minor version # */
  aclid         number,
  order_num     number,
  ace_type      number,                      /* 1 = GRANT(default), 0 = DENY */
  prin_id       number,
  prin_name     varchar2(132),
  prin_type     number,                                  /* 1=XS, 2=DB, 3=DN */
  prin_invert   number,                      /* 0 = FALSE(default), 1 = TRUE */
  start_date    timestamp,
  end_date      timestamp,
  priv_list     ku$_xsacepriv_list_t,
  xs_obj        ku$_xsobj_t,                               /* XS object info */
  xs_flag       number                                /* 2 - Oracle supplied */
)
not persistable
/

create or replace type ku$_xsace_list_t force as table of (ku$_xsace_t)
not persistable;
/

create or replace type ku$_xsaclparam_t force as object
(
  vers_major    char(1),                              /* UDT major version # */
  vers_minor    char(1),                              /* UDT minor version # */
  xdsid         number,
  policy_name   varchar2(128),
  policy_owner  varchar2(128),
  aclid         number,
  name          varchar2(128),
  pvalue1       number,                                     /* number values */
  pvalue2       varchar2(4000),                             /* string values */
  type          number           /* 1=NUMBER; 2=VARCHAR; 3=DATE; 4=Timestamp */
)
not persistable
/

create or replace type ku$_xsaclparam_list_t force
as table of (ku$_xsaclparam_t) not persistable;
/

create or replace type ku$_xsacl_t force as object
(
  vers_major    char(1),                              /* UDT major version # */
  vers_minor    char(1),                              /* UDT minor version # */
  aclid         number,
  name          varchar2(128),
  owner_name    varchar2(128),
  scid          number,
  sclass_name   varchar2(128),
  sclass_owner  varchar2(128),
  parent_aclid  number,
  parent_name   varchar2(128),
  parent_owner  varchar2(128),
  flag          number,
  ctime         timestamp,
  mtime         timestamp,
  description   varchar2(4000),
  xs_obj        ku$_xsobj_t,                               /* XS object info */
  xs_scl        ku$_xssclass_t,                      /* Security Class info */
  ace_list      ku$_xsace_list_t,
  param_list    ku$_xsaclparam_list_t
)
not persistable
/

------------------------------------------------------
--  Triton Data Security/Policy related types
-------
create or replace type ku$_xspolicy_param_t force as object
(
  vers_major    char(1),                              /* UDT major version # */
  vers_minor    char(1),                              /* UDT minor version # */
  xdsid         number,
  policy_name   varchar2(128),
  policy_owner  varchar2(128),
  name          varchar2(128),
  type          number           /* 1=NUMBER; 2=VARCHAR; 3=DATE; 4=Timestamp */
)
not persistable
/

create or replace type ku$_xsinst_acl_t force as object
(
  vers_major    char(1),                              /* UDT major version # */
  vers_minor    char(1),                              /* UDT minor version # */
  xdsid         number,
  order_num     number,
  aclid         number,
  acl_order_num number,
  xs_obj        ku$_xsobj_t                                /* XS object info */
)
not persistable
/

create or replace type ku$_xsinstacl_list_t force
as table of (ku$_xsinst_acl_t)
not persistable;
/

create or replace type ku$_xsinst_rule_t force as object
(
  vers_major    char(1),                              /* UDT major version # */
  vers_minor    char(1),                              /* UDT minor version # */
  xdsid         number,
  order_num     number,
  rule          varchar2(4000),
  static_flg    number,               /* 0=dynamic instset; 1=static instset */
  flags         number,     /* 0x1=rule is parameterized, 0x2=has denies,etc */
  description   varchar2(4000),                              /* default null */
  instacl_list  ku$_xsinstacl_list_t
)
not persistable
/

create or replace type ku$_xsinst_inhkey_t force as object
(
  vers_major    char(1),                              /* UDT major version # */
  vers_minor    char(1),                              /* UDT minor version # */
  xdsid         number,
  order_num     number,
  pkey          varchar2(128),
  fkey          varchar2(4000),
  fkey_type     number
)
not persistable
/

create or replace type ku$_xsinstinhkey_list_t force
as table of (ku$_xsinst_inhkey_t) not persistable;
/

create or replace type ku$_xsinst_inh_t force as object
(
  vers_major    char(1),                              /* UDT major version # */
  vers_minor    char(1),                              /* UDT minor version # */
  xdsid         number,
  order_num     number,
  parent_owner  varchar2(128),
  parent_name   varchar2(128),
  when_cl       varchar2(4000),
  inhkey_list   ku$_xsinstinhkey_list_t
)
not persistable
/


create or replace type ku$_xsinstinh_list_t force
as table of (ku$_xsinst_inh_t)
not persistable;
/

create or replace type ku$_xsattrsec_t force as object
(
  xdsid         number,
  priv_num      number,
  priv_name     varchar2(128),
  priv_owner    varchar2(128),
  name          varchar(128)
)
not persistable
/

create or replace type ku$_xsattrsec_list_t force as table of (ku$_xsattrsec_t)
not persistable;
/

create or replace type ku$_xsinstset_t force as object
(
  vers_major    char(1),                              /* UDT major version # */
  vers_minor    char(1),                              /* UDT minor version # */
  xdsid         number,
  order_num     number,
  type          number,  /* 1=rule-based instance set; 2=inheritant inst set */
  instrule      ku$_xsinst_rule_t,
  inst_inh      ku$_xsinstinh_list_t
)
not persistable
/

create or replace type ku$_xsinstset_list_t force as table of (ku$_xsinstset_t)
not persistable;
/

--  OLAP specific Data Security related types
create or replace type ku$_xsolap_policy_t force as object
(
  vers_major    char(1),                              /* UDT major version # */
  vers_minor    char(1),                              /* UDT minor version # */
  olap_schema   varchar2(128),                           /* OLAP schema_name */
  logical_name  varchar2(128),                /* xs$olap_policy.logical_name */
  owner_name    varchar2(128),               /* xs$olap_policy.policy_schema */
  name          varchar2(128),                 /* xs$olap_policy.policy_name */
  enable        number
)
not persistable
/


create or replace type ku$_xsolap_policy_list_t force 
as table of (ku$_xsolap_policy_t)
not persistable;
/

create or replace type ku$_xspolicy_t force as object
(
  vers_major       char(1),                           /* UDT major version # */
  vers_minor       char(1),                           /* UDT minor version # */
  xdsid            number,
  ctime            timestamp,
  mtime            timestamp,
  description      varchar2(4000),
  xs_obj           ku$_xsobj_t,                            /* XS object info */
  instset_list     ku$_xsinstset_list_t,
  attr_sec_list    ku$_xsattrsec_list_t,
  olap_policy_list ku$_xsolap_policy_list_t,
  rls_list         ku$_rls_policy_list_t
)
not persistable
/

-------
--  Triton Security Namespace related types
-------
create or replace type ku$_xsnstmpl_attr_t force as object
(
  vers_major    char(1),                              /* UDT major version # */
  vers_minor    char(1),                              /* UDT minor version # */
  ns_num        number,
  attr_name     varchar2(4000),
  def_value    varchar2(4000),
  event_cbk     number
  -- 0=no event callback, 1=first-read event,
  -- 2=update event, 3=both first read and update
)
not persistable
/

create or replace type ku$_xsnstmpl_attr_list_t force
as table of (ku$_xsnstmpl_attr_t) not persistable;
/

create or replace type ku$_xsnspace_t force as object
(
  vers_major     char(1),                            /* UDT major version # */
  vers_minor     char(1),                            /* UDT minor version # */
  xs_obj         ku$_xsobj_t,
  ns_num         number,
  aclid          number,
  handler_schema varchar2(128),                      /* handler schema name */
  handler_pkg    varchar2(128),                     /* handler package name */
  handler_func   varchar2(128),                    /* handler function name */
  ctime          timestamp,
  mtime          timestamp,
  description    varchar2(4000),
  attr_list      ku$_xsnstmpl_attr_list_t
)
not persistable
/

-------------------------------------------------------------------------------
--                              USER
-------------------------------------------------------------------------------
-- 
create or replace type ku$_user_editioning_t force as object
(
  user_id   number,
  type_name varchar2(128)
)
not persistable
/

create or replace type ku$_user_editioning_list_t
 force as TABLE of (ku$_user_editioning_t)
not persistable
/

create or replace type ku$_user_t force as object
(
  vers_major    char(1),                              /* UDT major version # */
  vers_minor    char(1),                              /* UDT minor version # */
  user_id       number,                                          /* user id  */
  name          varchar2(128),                               /* name of user */
  type_num      number ,                               /* 0 = role, 1 = user */
  password      varchar2(128),                         /* encrypted password */
  datats        varchar2(128),                   /* user default tablespace  */
  tempts        varchar2(128),    /* default tablespace for temporary tables */
  ltempts       varchar2(128),                      /* local temp tablespace */
  ctime         varchar2(19),                  /* user account creation time */
  ptime         varchar2(19),                        /* password change time */
  exptime       varchar2(19),             /* actual password expiration time */
  ltime         varchar2(19),                 /* time when account is locked */
  profnum       number,                                 /* resource profile# */
  profname      varchar2(128),                              /* profile name  */
  user_audit    varchar2(128),                         /* user audit options */
  defrole       number,                           /* default role indicator: */
  defgrp_num    number,                                /* default undo group */
  defgrp_seq_num   number,             /* global sequence number for the grp */
  astatus       number,                             /* status of the account */
  astatus_12    number,              /* status of the account for version 12 */
  lcount        number,                    /* count of failed login attempts */
  defschclass   varchar2(128),                     /* initial consumer group */
  ext_username  varchar2(400),                          /* external username */
  spare1        number,
  spare2        number,
  spare3        varchar2(128),                     /* Default collation name */
  spare4        varchar2(1000),           /* indentfier with only version 10 */
  spare4_12     varchar2(1000),     /* indentfier with version 10, 11 and 12 */
  spare5        varchar2(1000),
  spare6        varchar2(19),
  edn_types     ku$_user_editioning_list_t         /* editions-enabled types */
)
not persistable
/

-------------------------------------------------------------------------------
--                              ROLE
-------------------------------------------------------------------------------
-- 
create or replace type ku$_role_t force as object
(
  vers_major    char(1),                              /* UDT major version # */
  vers_minor    char(1),                              /* UDT minor version # */
  user_id       number,                                          /* role id  */
  name          varchar2(128),                               /* name of role */
  type_num      number ,                              /* 0 = role, 1 = user */
  password      varchar2(128),                                  /*  password */
  ctime         varchar2(19),                  /* user account creation time */
  ptime         varchar2(19),                        /* password change time */
  exptime       varchar2(19),             /* actual password expiration time */
  ltime         varchar2(19),                 /* time when account is locked */
  profnum       number,                                 /* resource profile# */
  user_audit        varchar2(38),                     /* user audit options */
  defrole       number,                           /* default role indicator: */
  defgrp_num       number,                             /* default undo group */
  defgrp_seq_num   number,             /* global sequence number for the grp */
  astatus       number,                             /* status of the account */
  lcount        number,                    /* count of failed login attempts */
  ext_username  varchar2(400),                          /* external username */
  spare1        number,
  spare2        number,
  spare3        number,
  spare4        varchar2(1000),
  spare5        varchar2(1000),
  spare6        varchar2(19),
  schema        varchar2(128),                                     /* schema */
  package       varchar2(128)                                     /* package */
)
not persistable
/

-------------------------------------------------------------------------------
--                              PROFILE
-------------------------------------------------------------------------------
-- 
create or replace type ku$_profile_attr_t force as object
(
  profile_id    number,                                       /* profile id  */
  resource_num  number,                                        /* resource id*/
  resname       varchar2(128),                              /* resource name */
  type_num              number,                                      /* type */
  limit_num             number                                      /* limit */
)
not persistable
/

create or replace type ku$_profile_list_t force 
as table of (ku$_profile_attr_t)
not persistable
/

create or replace type ku$_profile_t force as object
(
  vers_major    char(1),                              /* UDT major version # */
  vers_minor    char(1),                              /* UDT minor version # */
  profile_id    number,                                       /* profile id  */
  profile_name  varchar2(128),                               /* profile name */
  pass_func_name varchar2(128),                  /* password verify function */
  profile_list  ku$_profile_list_t                     /* profile attributes */
)
not persistable
/

-------------------------------------------------------------------------------
--                              DEFAULT_ROLE
-------------------------------------------------------------------------------
--
create or replace type ku$_defrole_item_t force as object
(
  user_id       number,                                          /* user id  */
  user_name     varchar2(128),                                  /* user name */
  role          varchar2(128),                           /* role source name */
  role_id       number                                            /* role id */
)
not persistable
/

create or replace type ku$_defrole_list_t force
as TABLE of (ku$_defrole_item_t)
not persistable
/

create or replace type ku$_defrole_t force as object
(
  vers_major    char(1),                              /* UDT major version # */
  vers_minor    char(1),                              /* UDT minor version # */
  user_id       number,                                       /* profile id  */
  user_name     varchar2(128),                                  /* user name */
  user_type     number,                                /* 0 = role, 1 = user */
  defrole       number,                                 /* default role type */
  role_list     ku$_defrole_list_t                              /* role list */
)
not persistable
/

-------------------------------------------------------------------------------
--                              PROXY
-------------------------------------------------------------------------------
--
create or replace type ku$_proxy_role_item_t force as object
(
  role_id       number,                                           /* role id */
  client        varchar2(128),                                /* client name */
  proxy         varchar2(128),                                 /* proxy name */
  role          varchar2(128)                                /* role context */
)
not persistable
/

create or replace type ku$_proxy_role_list_t force
as TABLE of (ku$_proxy_role_item_t)
not persistable
/

create or replace type ku$_proxy_t force as object
(
  user_id       number,                                           /* role id */
  client_name   varchar2(128),                                /* client name */
  proxy_name    varchar2(128),                                 /* proxy name */
  flags         number,               /* Mask flags of associated with entry */
  cred_type     number,                /* Type of credential passed by proxy */
  proxy_role_list  ku$_proxy_role_list_t                  /* proxy role list */
)
not persistable
/

-- 
-------------------------------------------------------------------------------
--                              ROLE_GRANT
-------------------------------------------------------------------------------
--
create or replace type ku$_rogrant_t force as object
(
  vers_major    char(1),                              /* UDT major version # */
  vers_minor    char(1),                              /* UDT minor version # */
  grantee_id    number,                                         /* user id  */
  grantee       varchar2(128),                                   /* grantee */
  role          varchar2(128),                                      /* role */
  role_id       number,                                          /* role id */
  admin         number,                                    /*  admin option */
  sequence      number,                            /* unique grant sequence */
  user_spare1   number
)
not persistable
/

-------------------------------------------------------------------------------
--                              TABLESPACE_QUOTA
-------------------------------------------------------------------------------
-- 
create or replace type ku$_tsquota_t force as object
(
  vers_major    char(1),                              /* UDT major version # */
  vers_minor    char(1),                              /* UDT minor version # */
  user_id       number,                                          /* user id  */
  user_name     varchar2(128),                               /* name of user */
  ts_name       varchar2(128),                            /* tablespace name */
  ts_id         number,                                     /* tablespace id */
  maxblocks     number,                                        /* max blocks */
  blocksize     number,                                       /* blocks size */
  grantor_num   number,                                        /* grantor id */
  grantor       varchar2(128),                               /* grantor name */
  blocks        number,                  /* number of blocks charged to user */
  priv1         number,                     /* reserved for future privilege */
  priv2         number,                     /* reserved for future privilege */
  priv3         number                      /* reserved for future privilege */
)
not persistable
/

-------------------------------------------------------------------------------
--                              RESOURCE_COST 
-------------------------------------------------------------------------------
-- 
create or replace type ku$_resocost_item_t force as object
(
  resource_id       number,                                   /* resource id */
  resource_name     varchar2(128),                               /* resource */
  resource_type     number,                                          /* type */
  unit_cost         number                                      /* unit cost */
)
not persistable
/

create or replace type ku$_resocost_list_t force
as TABLE of (ku$_resocost_item_t)
not persistable
/

create or replace type ku$_resocost_t force as object
(
  vers_major    char(1),                             /* UDT major version # */
  vers_minor    char(1),                             /* UDT minor version # */
  cost_list     ku$_resocost_list_t                   /* resource cost info */
)
not persistable
/

-------------------------------------------------------------------------------
--                              CONTEXT
-------------------------------------------------------------------------------
-- 
create or replace type ku$_context_t force as object
(
  vers_major    char(1),                              /* UDT major version # */
  vers_minor    char(1),                              /* UDT minor version # */
  obj_num       number,                            /* context object number */
  schema_obj    ku$_schemaobj_t,                   /* context schema object */
  schema_name   varchar2(128),                                /* schema name */
  package_name  varchar2(128),                               /* package name */
  flags         number
)
not persistable
/

-------------------------------------------------------------------------------
--                              DIMENSION
-------------------------------------------------------------------------------
-- 
create or replace type ku$_dimension_t force as object
(
  vers_major    char(1),                              /* UDT major version # */
  vers_minor    char(1),                              /* UDT minor version # */
  obj_num       number,                           /* dimension object number */
  schema_obj    ku$_schemaobj_t,                  /* dimension schema object */
  dimtextlen    number,                                 /* length of dimtext */
  dimtext       clob                      /* store the dimension when length */
)
not persistable
/

-------------------------------------------------------------------------------
--                              ASSOCIATION
-------------------------------------------------------------------------------
create or replace type ku$_assoc_t force as object
(
  vers_major    char(1),                              /* UDT major version # */
  vers_minor    char(1),                              /* UDT minor version # */
  obj_num       number,                              /* association object # */
  base_obj      ku$_schemaobj_t,                              /* base object */
  obj_type      number,                                  /* association type */
  objcol        varchar2(128),                         /* association column */
  stats_obj     ku$_schemaobj_t,                            /* statistic obj */
  selectivity   number,                                       /* selectivity */
  cpu_cost      number,                                           /* cpu cost*/
  io_cost       number,                                           /* io cost */
  net_cost      number,                                          /* net cost */
  interface_version number,
  spare2        number
)
not persistable
/

-------------------------------------------------------------------------------
--                              COMMENT
-------------------------------------------------------------------------------
-- 
create or replace type ku$_comment_t force as object
(
  vers_major    char(1),                              /* UDT major version # */
  vers_minor    char(1),                              /* UDT minor version # */
  obj_num       number,                                     /* object number */
  base_obj      ku$_schemaobj_t,                       /* base schema object */
  property      number,                                  /* table properties */
  colno         number,                                         /* column id */
  colname       varchar2(128),                                /* column name */
  cmnt          clob                                         /* comment text */
)
not persistable
/

-------------------------------------------------------------------------------
--                              CLUSTER
-------------------------------------------------------------------------------
--
create or replace type ku$_cluster_t force as object
(
  vers_major    char(1),                              /* UDT major version # */
  vers_minor    char(1),                              /* UDT minor version # */
  obj_num       number,                                  /* cluster object # */
  schema_obj    ku$_schemaobj_t,                       /* cluster schema obj */
  col_list      ku$_tab_column_list_t,
  ts_name       varchar2(128),                                 /* tablespace */
  blocksize     number,                            /* size of block in bytes */
  tsno          number,                                 /* tablespace number */
  fileno        number,                        /* segment header file number */
  blockno       number,                       /* segment header block number */
  pct_free      number,          /* minimum free space percentage in a block */
  pct_used      number,          /* minimum used space percentage in a block */
  initrans      number,                     /* initial number of transaction */
  maxtrans      number,                     /* maximum number of transaction */
  size_t        number,
  hashfunc      varchar2(128),             /* if hashed, function identifier */
  hashkeys      number,                                    /* hash key count */
  function      number, /* function: 0 (key is function), 1 (system default) */
  extind        number,             /* extent index value of fixed hash area */
  flags         number,                                      /* 0x08 = CACHE */
                                          /* 0x010000 = Single Table Cluster */
                                                /* 0x00800000 = DEPENDENCIES */
  degree        number,      /* number of parallel query slaves per instance */
  instances     number,       /*  number of OPS instances for parallel query */
  avgchn        number,          /* average chain length - previously spare4 */
  funclen       number,
  functxt       varchar2(4000),
  func_vcnt     ku$_vcnt,
  func_clob     clob,
  storage       ku$_storage_t,
  spare1        number,
  spare2        number,
  spare3        number,
  spare4        number,
  spare5        varchar2(1000),
  spare6        varchar2(1000),
  spare7        varchar2(19),
  part_obj      ku$_tab_partobj_t                        /* Partitioned info */
)
not persistable
/

-------------------------------------------------------------------------------
--                              AUDIT
-------------------------------------------------------------------------------
create or replace type ku$_audit_t force as object
(
  vers_major    char(1),
  vers_minor    char(1),
  user_num      number,                            /* user identifier number */
  user_name     varchar2(128),                                  /* user name */
  proxy_num     number,                             /* UID of the proxy user */
  audit_option  varchar2(128),                            /* auditing option */
  property      number,                   /* 0x01 = do not export this audit */
  success       number,                                 /* audit on success? */
  failure       number,                                 /* audit on failure? */
  option_num    number                              /* option# in option map */
)
not persistable
/

-------------------------------------------------------------------------------
--                              AUDIT_OBJ
-------------------------------------------------------------------------------
create or replace type ku$_audit_obj_t force as object
(
  vers_major    char(1),
  vers_minor    char(1),
  obj_num       number,                                     /* object number */
  base_obj      ku$_schemaobj_t,                          /* base obj schema */
  audit_val     varchar2(128),                           /* auditing options */
  audit_list    sys.ku$_audit_list_t                           /* audit list */
)
not persistable
/

-------------------------------------------------------------------------------
--                              AUDIT_DEFAULT
-------------------------------------------------------------------------------
create or replace type ku$_audit_default_t force as object
(
  vers_major       char(1),
  vers_minor       char(1),
  obj_num          number,                                /* object number */
  audit_val        varchar2(128),                      /* auditing options */
  aud_default_list sys.ku$_audit_default_list_t              /* audit list */
)
not persistable
/

-------------------------------------------------------------------------------
--                              AUDIT_POLICY
-------------------------------------------------------------------------------
create or replace type ku$_audit_sys_priv_t force as object (
        PRIVILEGE     number,
        NAME          varchar2(128),
        PROPERTY      number          /* 0x01 = do not export this privilege */
                                      /* using sql statements */
  )
not persistable
/
create or replace type ku$_audit_sys_priv_list_t
 force as table of (ku$_audit_sys_priv_t)
not persistable
/

create or replace type ku$_audit_act_t force as object (
        ACTION        number,
        NAME          varchar2(128)
  )
not persistable
/
create or replace type ku$_audit_act_list_t
 force as table of (ku$_audit_act_t)
not persistable
/

create or replace type ku$_auditp_obj_t force as object (
        ACTION        number,
        audit_obj     ku$_schemaobj_t,              /* object being auditede */
        NAME          varchar2(128)
  )
not persistable
/
create or replace type ku$_auditp_obj_list_t
 force as table of (ku$_auditp_obj_t)
not persistable
/

create or replace type ku$_audit_pol_role_t force as object (
  role_num        number,
  role_name       varchar2(128)
  )
not persistable
/
create or replace type ku$_audit_pol_role_list_t
 force as table of (ku$_audit_pol_role_t)
not persistable
/

create or replace type ku$_audit_policy_t force as object (
  policy_num    number,
  schema_obj    ku$_schemaobj_t,                            /* policy object */
  type          number,            /*     0 - Invalid
                                    *  0x01 - System Privilgege options
                                    *  0x02 - System Action options
                                    *  0x04 - Object Action options
                                    *  0x08 - Local Audit Policy in case of 
                                    *         Consolidated Database
                                    *  0x10 - Common Audit Policy in case of 
                                    *         Consolidated Database
                                    *  0x20 - Role Privilege options 
                                    */
  condition         varchar2(4000),
  condition_eval    number,
  privilege_options  ku$_audit_sys_priv_list_t,
  sys_action_options ku$_audit_act_list_t,
  xs_action_options  ku$_audit_act_list_t,
  ols_action_options ku$_audit_act_list_t,
  obj_action_options ku$_auditp_obj_list_t,
  role_options       ku$_audit_pol_role_list_t
  )
not persistable
/  
-------------------------------------------------------------------------------
--                              AUDIT_POLICY_ENABLE
-------------------------------------------------------------------------------
create or replace type ku$_audit_policy_enable_t force as object (
  policy_num    number,
  schema_obj    ku$_schemaobj_t,                            /* policy object */
  "USER"        varchar2(128),    /* Name of user/role, NULL for 'ALL USERS' */
  when_opt      number,                /* 1 - Success, 2 - Failure, 3 - Both */
  how_opt       number) /* 1 - By User, 2 - Except User, 3 - By Granted Role */
not persistable
/
-------------------------------------------------------------------------------
--                              AUDIT_CONTEXT
-------------------------------------------------------------------------------
create or replace type ku$_audit_attr_list_t
 force as table of (varchar2(128))
not persistable
/

create or replace type ku$_audit_namespace_t force as object (
  namespace     varchar2(128),
  aud_attr      ku$_audit_attr_list_t)
not persistable
/
create or replace type ku$_audit_namespace_list_t
 force as table of (ku$_audit_namespace_t)
not persistable
/
create or replace type ku$_audit_context_t force as object (
  "USER"        varchar2(128),
  aud_context   ku$_audit_namespace_list_t)
not persistable
/

-------------------------------------------------------------------------------
--                              JAVA_SOURCE
-------------------------------------------------------------------------------
-- 
create or replace type ku$_java_source_t force as object
(
  vers_major    char(1),                              /* UDT major version # */
  vers_minor    char(1),                              /* UDT minor version # */
  obj_num       number,                         /* java source object number */
  schema_obj    ku$_schemaobj_t,                /* java source schema object */
  long_name     varchar2(4000),                              /* synlong name */
  source_lines  ku$_source_list_t,                           /* source lines */
  java_resource sys.ku$_java_t                             /* export source  */
)
not persistable
/

-------------------------------------------------------------------------------
--                              AQ_QUEUE_TABLE
-------------------------------------------------------------------------------
--
-- QUEUE_TABLE storage clause info 

create or replace type ku$_qtab_storage_t force as object
(
  obj_num       number,                         /* queue table object number */
  property      number,
  ts_num        number,
  ts_name       varchar2(128),
  pct_free      number,
  pct_used      number,
  initrans      number,
  maxtrans      number,
  flags         number,                                     /* Row movement */
  storage       ku$_storage_t,                              /* Storage info */
  col_list      ku$_tab_column_list_t,                   /* list of columns */
  clus_tab      ku$_tabcluster_t                        /* Table clustering */
)
not persistable
/

create or replace type ku$_queue_table_t force as object
(
  vers_major    char(1),                              /* UDT major version # */
  vers_minor    char(1),                              /* UDT minor version # */
  obj_num       number,                         /* queue table object number */
  schema_obj    ku$_schemaobj_t,                    /* object of queue table */
  storage_clause ku$_qtab_storage_t,                  /* storage_clause info */
  udata_type    number,                                     /* userdata type */
  object_type   varchar2(257),                         /* userdata type name */
  sort_cols     number,                            /* sort order for dequeue */
  flags         number,                            /* queue table properties */
  table_comment         varchar2(2000),                      /* user comment */
  primary_instance      number,                /*  primary owner instance-id */
  secondary_instance    number,               /* secondary owner instance-id */
  owner_instance        number                  /* current owner instance-id */
)
not persistable
/

-------------------------------------------------------------------------------
--                              AQ_QUEUE
-------------------------------------------------------------------------------
-- 
create or replace type ku$_queues_t force as object
(
  vers_major    char(1),                              /* UDT major version # */
  vers_minor    char(1),                              /* UDT minor version # */
  obj_num       number,                         /* queue table object number */
  qid           number,                            /* queue obj number */
  schema_obj    ku$_schemaobj_t,                      /* queue object schema */
  base_obj      ku$_schemaobj_t,                   /* queue table obj schema */
  tflags        number,                            /* queue table properties */
  usage         number,                                /* usage of the queue */
  max_retries   number,                         /* maximum number of retries */
  retry_delay   number,                      /* delay before retrying (secs) */
  enqueue_enabled number,                                 /*  queue enabled? */
  properties    number,                      /*  various properties of queue */
  retention     number,                       /* retention time (in seconds) */
  queue_comment  varchar2(2000)                              /* user comment */
)
not persistable
/

--
-------------------------------------------------------------------------------
--                              AQ_TRANSFORM
-------------------------------------------------------------------------------
-- 
create or replace type ku$_qtrans_t force as object
(
  vers_major    char(1),                              /* UDT major version # */
  vers_minor    char(1),                              /* UDT minor version # */
  transformation_id    number,                          /* transformation id */
  schema_name          varchar2(128),                              /* schema */
  transform_name       varchar2(128),                 /* transformation name */
  from_obj             ku$_schemaobj_t,                   /* from obj schema */
  to_obj               ku$_schemaobj_t,                     /* to obj schema */
  attribute_num        number,
  sql_expression       clob
)
not persistable
/

--
-------------------------------------------------------------------------------
--                              JOB
-------------------------------------------------------------------------------
-- 
create or replace type ku$_job_t force as object
(
  vers_major    char(1),                              /* UDT major version # */
  vers_minor    char(1),                              /* UDT minor version # */
  powner_id     number,                                          /* owner id */
  powner        varchar2(128),                                 /* owner name */
  lowner        varchar2(128),                             /* logged in user */
  cowner        varchar2(128),                                   /* parsing  */
  job_id        number,                                           /* job id  */
  last_date     varchar2(19),                /* when this job last succeeded */
  this_date     varchar2(19),   /* when current execute started,usually null */
  next_date     varchar2(19),                /* when to execute the job next */
  flag          number,                          /* 0x01, this job is broken */
  failures      number,             /* number of failures since last success */
  interval_num  varchar2(400),                /* function for next next_date */
  what          clob,                        /* PL/SQL text, what is the job */
  nlsenv        clob,                                      /* nls parameters */
  env           raw(32),                      /* other environment variables */
  field1        number,            /* instance number restricted to run  job */
  charenv       varchar2(4000)                /* Reserved for Trusted Oracle */
)
not persistable
/

--
-------------------------------------------------------------------------------
--                      TABLE/INDEX/CLUSTER STATISTICS
-------------------------------------------------------------------------------
--
create or replace type ku$_histgrm_t force as object
(
  obj_num           number,             -- histogram object number
  intcol_num        number,             -- internal object number
  bucket            number,             -- bucket information
  endpoint          number,             -- endpoint value
  epvalue           VARCHAR2(4000),     -- ep value
  epvalue_raw       RAW(1000),          -- ep value in raw type (12g)
  ep_repeat_count   NUMBER,             -- ep repeat count (12g)
  spare1            number              -- sample number of distinct values
)
not persistable
/

create or replace type ku$_histgrm_list_t
 force as table of (ku$_histgrm_t)
not persistable
/

--
-- type for column statistics
--
create or replace type ku$_col_stats_t force as object
(
  obj_num           number,             -- table/partition/subpartition objnum
  intcol_num        number,             -- internal column number
  distcnt           number,             -- distinct count
  lowval            raw(32),            -- low value
  lowval_1000       raw(1000),          -- low value - raw 1000 (12g)
  hival             raw(32),            -- high value
  hival_1000        raw(1000),          -- high value - raw 1000 (12g)
  density           number,             -- density
  null_cnt          number,             -- null count
  avgcln            number,             -- average column length
  cflags            number,             -- flags
  eav               number,
  sample_size       number,
  minimum           number,
  maximum           number,
  spare1            number,             -- sample number of distinct values
  hist_gram_list    ku$_histgrm_list_t  -- histogram list
)
not persistable
/

create or replace type ku$_col_stats_list_t
 force as table of (ku$_col_stats_t)
not persistable
/

--
-- type for column statistics for 10_1 compatiblity
--
create or replace type ku$_10_1_col_stats_t force as object
(
  tab_obj_num       number,             -- table object number
  p_obj_num         number,             -- partition object number
  colname           VARCHAR2(30),       -- column name
  intcol_num        number,             -- internal column number
  distcnt           number,             -- distinct count
  lowval            raw(32),            -- low value
  hival             raw(32),            -- high value
  density           number,             -- density
  null_cnt          number,             -- null count
  avgcln            number,             -- average column length
  cflags            number,             -- flags
  eav               number,             --
  hist_gram_list    ku$_histgrm_list_t, -- histogram list
  hist_gram_min     ku$_histgrm_t,      -- minimum histogram
  hist_gram_max     ku$_histgrm_t       -- maximum histogram
)
not persistable
/

create or replace type ku$_10_1_col_stats_list_t
 force as table of (ku$_10_1_col_stats_t)
not persistable
/

create or replace type ku$_cached_stats_t force as object
(
  obj_num       number,
  cachedblk     number,
  cachehit      number
)
not persistable
/

--
-- table and partition specific statistic data
--
create or replace type ku$_tab_ptab_stats_t force as object
(
  obj_num           number,             -- table object number
  trigflag          number,             -- table trigflag
  tabname           VARCHAR2(128),      -- table/nested table name
  partname          VARCHAR2(128),      -- Partition name
  subpartname       VARCHAR2(128),      -- subpartition name
  bobj_num          number,             -- base object number for part. tabs
  sysgen_cols       number,             -- system generated columns?
  blkcnt            number,             -- block count
  rowcnt            number,             -- row count
  avgrln            number,             -- average row length
  flags             number,             -- global/user spec. stats
  sample_size       number,             -- number of rows sampled by Analyze
  analyzetime       varchar2(19),       -- timestamp when last analyzed
  cache_info        ku$_cached_stats_t, -- cached stats information
  col_stats         ku$_col_stats_list_t-- column stats list for table (part)
)
not persistable
/

--
-- Type list for partition specific statistic data
--
create or replace type ku$_ptab_stats_list_t
 force as table of (ku$_tab_ptab_stats_t)
not persistable
/

--
-- table and partition specific statistic data for 10.1 compatibility
--
create or replace type ku$_10_1_tab_ptab_stats_t force as object
(
  obj_num           number,             -- table object number
  trigflag          number,             -- table trigflag
  schema_obj        ku$_schemaobj_t,    -- table schema object
  bobj_num          number,             -- base object number for part. tabs
  sysgen_cols       number,             -- system generated columns?
  blkcnt            number,             -- block count
  rowcnt            number,             -- row count
  avgrln            number,             -- average row length
  flags             number,             -- global/user spec. stats
  cache_info        ku$_cached_stats_t, -- cached stats information
  col_stats         ku$_10_1_col_stats_list_t
                                        -- column stats list for table (part)
)
not persistable
/

--
-- Type list for partition specific statistic data for 10.1 compatibility
--
create or replace type ku$_10_1_ptab_stats_list_t
 force as table of (ku$_10_1_tab_ptab_stats_t)
not persistable
/

--
-- This type changed in 11.1.0.7, but just added columns that won't be used
-- in anything prior to 11.1.0.7, so it can be used when compatibility is set
-- prior to 11.1.0.7.
--
create or replace type ku$_tab_col_t force as object
(
  obj_num           number,             -- histogram object number
  colname           VARCHAR2(128),      -- column name
  name              VARCHAR2(128),      -- column name (backward compatibility)
  intcol_num        number,             -- internal column number
  col_num           number,             -- column number
  property          number,             -- column property
  nested_table      number,             -- 0 if no, 1 if yes
  attr_colname      varchar2(4000),     -- col name from attrcol$
  default_val       varchar2(4000)      -- virtual column expression text
)
not persistable
/

create or replace type ku$_tab_col_list_t
 force as table of (ku$_tab_col_t)
not persistable
/

--
-- type for full table statistics
--
create or replace type ku$_tab_stats_t force as object
(
  vers_major        char(1),                    -- UDT major version #
  vers_minor        char(1),                    -- UDT minor version #
  obj_num           number,                     -- object number for table
  base_obj          ku$_schemaobj_t,            -- table information
  nested_tab_name   varchar2(128)               -- nested table name
)
not persistable
/

create or replace type ku$_11_2_tab_stats_t force as object
(
  vers_major        char(1),                    -- UDT major version #
  vers_minor        char(1),                    -- UDT minor version #
  obj_num           number,                     -- object number for table
  base_obj          ku$_schemaobj_t,            -- table information
  nested_tab_name   varchar2(30),               -- nested table name
  column_list       ku$_tab_col_list_t,         -- column list
  tab_info          ku$_tab_ptab_stats_t,       -- table statistics
  ptab_info_list    ku$_ptab_stats_list_t       -- partitioned statistics
)
not persistable
/

--
-- type for full table statistics for 10.1 compatibility
--
create or replace type ku$_10_1_tab_stats_t force as object
(
  vers_major        char(1),                    -- UDT major version #
  vers_minor        char(1),                    -- UDT minor version #
  obj_num           number,                     -- object number for table
  base_obj          ku$_schemaobj_t,            -- table information
  tab_info          ku$_10_1_tab_ptab_stats_t,  -- table statistics
  ptab_info_list    ku$_10_1_ptab_stats_list_t  -- partitioned statistics
)
not persistable
/

--
-- type for index stats values
--
-- type for subpartition portion of index information
--
create or replace type ku$_spind_stats_t force as object
(
  obj_num           number,
  partname          varchar2(128),
  subpartname       varchar2(128),
  bobj_num          number,
  rowcnt            number,
  leafcnt           number,
  distkey           number,
  lblkkey           number,
  dblkkey           number,
  clufac            number,
  blevel            number,
  ind_flags         number,
  obj_flags         number,
  sample_size       number,
  analyzetime       varchar2(19),       -- timestamp when last analyzed
  cache_info        ku$_cached_stats_t              -- cached stats information
)
not persistable
/

create or replace type ku$_spind_stats_list_t
 force as table of (ku$_spind_stats_t)
not persistable
/

--
-- type for subpartition portion of index information for 10.1 compatibility
--
create or replace type ku$_10_1_spind_stats_t force as object
(
  obj_num           number,
  schema_obj        ku$_schemaobj_t,
  bobj_num          number,
  rowcnt            number,
  leafcnt           number,
  distkey           number,
  lblkkey           number,
  dblkkey           number,
  clufac            number,
  blevel            number,
  ind_flags         number,
  obj_flags         number,
  cache_info        ku$_cached_stats_t              -- cached stats information
)
not persistable
/

create or replace type ku$_10_1_spind_stats_list_t
 force as table of (ku$_10_1_spind_stats_t)
not persistable
/

--
-- type for partition portion of index information
--
create or replace type ku$_pind_stats_t force as object
(
  obj_num           number,
  partname          VARCHAR2(128),
  bobj_num          number,
  rowcnt            number,
  leafcnt           number,
  distkey           number,
  lblkkey           number,
  dblkkey           number,
  clufac            number,
  blevel            number,
  ind_flags         number,
  obj_flags         number,
  sample_size       number,
  analyzetime       varchar2(19),       -- timestamp when last analyzed
  cache_info        ku$_cached_stats_t, -- cached stats information
  subpartition_list ku$_spind_stats_list_t
)
not persistable
/

create or replace type ku$_pind_stats_list_t
 force as table of (ku$_pind_stats_t)
not persistable
/

--
-- type for partition portion of index information for 10.1 compatibility
--
create or replace type ku$_10_1_pind_stats_t force as object
(
  obj_num           number,
  schema_obj        ku$_schemaobj_t,
  bobj_num          number,
  rowcnt            number,
  leafcnt           number,
  distkey           number,
  lblkkey           number,
  dblkkey           number,
  clufac            number,
  blevel            number,
  ind_flags         number,
  obj_flags         number,
  cache_info        ku$_cached_stats_t, -- cached stats information
  subpartition_list ku$_10_1_spind_stats_list_t
)
not persistable
/

create or replace type ku$_10_1_pind_stats_list_t
 force as table of (ku$_10_1_pind_stats_t)
not persistable
/

create or replace type ku$_ind_stats_t force as object
(
  vers_major        char(1),                          /* UDT major version # */
  vers_minor        char(1),                          /* UDT minor version # */
  obj_num           number,                                   /* Index obj # */
  base_obj_num      number,                                   /* Table obj # */
  base_tab_obj      ku$_schemaobj_t,
  base_ind_obj      ku$_schemaobj_t,
  type_num          number,                   /* what kind of index is this? */
  property          number         /* immutable flags for life of the index */
)
not persistable
/

create or replace type ku$_11_2_ind_stats_t force as object
(
  vers_major        char(1),                          /* UDT major version # */
  vers_minor        char(1),                          /* UDT minor version # */
  obj_num           number,                                   /* Index obj # */
  base_obj_num      number,                                   /* Table obj # */
  base_tab_obj      ku$_schemaobj_t,
  base_ind_obj      ku$_schemaobj_t,
  type_num          number,                   /* what kind of index is this? */
  property          number,         /* immutable flags for life of the index */
  cols              number,
  rowcnt            number,
  leafcnt           number,
  distkey           number,
  lblkkey           number,
  dblkkey           number,
  clufac            number,
  blevel            number,
  ind_flags         number,
  obj_flags         number,
  sample_size       number,
  analyzetime       varchar2(19),       -- timestamp when last analyzed
  cache_info        ku$_cached_stats_t, -- cached stats information
  partition_list    ku$_pind_stats_list_t,
  cnst_col_list     ku$_tab_col_list_t
)
not persistable
/

-- type for 10.1 compatibility
create or replace type ku$_10_1_ind_stats_t force as object
(
  vers_major        char(1),                          /* UDT major version # */
  vers_minor        char(1),                          /* UDT minor version # */
  obj_num           number,                                   /* Index obj # */
  base_obj_num      number,                                   /* Table obj # */
  base_tab_obj      ku$_schemaobj_t,
  base_ind_obj      ku$_schemaobj_t,
  type_num          number,                   /* what kind of index is this? */
  property          number,         /* immutable flags for life of the index */
  cols              number,
  rowcnt            number,
  leafcnt           number,
  distkey           number,
  lblkkey           number,
  dblkkey           number,
  clufac            number,
  blevel            number,
  ind_flags         number,
  obj_flags         number,
  cache_info        ku$_cached_stats_t, -- cached stats information
  partition_list    ku$_10_1_pind_stats_list_t,
  cnst_col_list     ku$_tab_col_list_t
)
not persistable
/

--
-- These types are used in the kustat.xsl style sheet to determine
-- the index name when an index is system generated.
--

--
-- type for system generated index column information
--
create or replace type ku$_sgi_col_t force as object
(
  obj_num           number,                 -- index object number
  con_num           number,                 -- constraint number if constraint
  name              varchar2(128)           -- column name
)
not persistable
/

create or replace type ku$_sgi_col_list_t
 force as table of (ku$_sgi_col_t)
not persistable
/

create or replace type ku$_find_sgc_t force as object
(
  obj_num               number,                           /* index obj # */
  num_cols              number,                           /* #cols in index */
  index_owner           varchar2(128),
  index_name            varchar2(128),
  table_owner           varchar2(128),
  table_name            varchar2(128),
  col_list              ku$_sgi_col_list_t
)
not persistable
/

-------------------------------------------------------------------------------
--                              USER PREFERENCE STATS
-------------------------------------------------------------------------------
-- 
create or replace type ku$_up_stats_t force as object
(
  obj_num            number,                    -- object number for table
  pname              varchar2(128),
  valnum             number,
  valchar            varchar2(4000),
  chgtime            varchar2(19),
  spare1             NUMBER)
not persistable
/

create or replace type ku$_up_stats_list_t
 force as table of (ku$_up_stats_t)
not persistable
/

create or replace type ku$_user_pref_stats_t force as object
(
  vers_major        char(1),                    -- UDT major version #
  vers_minor        char(1),                    -- UDT minor version # */
  obj_num            number,                    -- object number for table
  base_obj           ku$_schemaobj_t,           -- table information
  up_stats_list      ku$_up_stats_list_t) not persistable;
/

-------------------------------------------------------------------------------
--                              JAVA_CLASS
-------------------------------------------------------------------------------
-- 
create or replace type ku$_java_class_t force as object
(
  vers_major    char(1),                              /* UDT major version # */
  vers_minor    char(1),                              /* UDT minor version # */
  obj_num       number,                         /* java source object number */
  schema_obj    ku$_schemaobj_t,                /* java source schema object */
  long_name     varchar2(4000),                         /* synonym long name */
  java_resource sys.ku$_java_t                               /* source lines */
)
not persistable
/

-------------------------------------------------------------------------------
--                              JAVA_RESOURCE
-------------------------------------------------------------------------------
-- 
create or replace type ku$_java_resource_t force as object
(
  vers_major    char(1),                              /* UDT major version # */
  vers_minor    char(1),                              /* UDT minor version # */
  obj_num       number,                         /* java source object number */
  schema_obj    ku$_schemaobj_t,                /* java source schema object */
  long_name     varchar2(4000),                         /* synonym long name */
  java_resource sys.ku$_java_t                               /* source lines */
)
not persistable
/

-------------------------------------------------------------------------------
--                      REFRESH_GROUP
-------------------------------------------------------------------------------
create or replace type ku$_add_snap_t force as object
(
  REFGROUP       number,                          /* number of refresh group */
  ref_add_user   varchar2(2000),          /* dbms_refresh.add execute string */
  ref_add_dba    varchar2(2000)          /* dbms_irefresh.add execute string */
)
not persistable
/

create or replace type ku$_add_snap_list_t force as TABLE of (ku$_add_snap_t)
not persistable;
/

create or replace type ku$_refgroup_t force as object
(
  vers_major    char(1),                              /* UDT major version # */
  vers_minor    char(1),                              /* UDT minor version # */
  refname       varchar2(128),                      /* name of refresh group */
  owner_num     number,                                 /* owner user number */
  refowner      varchar2(128),                     /* owner of refresh group */
  refgroup      number,                           /* number of refresh group */
  ref_make_user varchar2(2000),     /* executing string of dbms_refresh.make */
  ref_make_dba  varchar2(2000),    /* executing string of dbms_irefresh.make */
  ref_child     ku$_add_snap_list_t              /* refresh group child info */
                                          /* dbms_refresh.add execute string */
)
not persistable
/

-- 
-------------------------------------------------------------------------------
--                      MONITORING
-------------------------------------------------------------------------------
create or replace type ku$_monitor_t force as object
(
  vers_major    char(1),                              /* UDT major version # */
  vers_minor    char(2),                              /* UDT minor version # */
  obj_num       number,                                /* base object number */
  base_obj      ku$_schemaobj_t,                       /* base schema object */
  monitor       number                              /* 1: enable, 0: disable */
)
not persistable
/

--
-------------------------------------------------------------------------------
--                      RMGR_PLAN
-------------------------------------------------------------------------------
-- 
create or replace type ku$_rmgr_plan_t force as object
(
  vers_major    char(1),                              /* UDT major version # */
  vers_minor    char(1),                              /* UDT minor version # */
  obj_num       number,
  schema_obj    ku$_schemaobj_t,
  cpu_method    varchar2(128),/* CPU resource allocation method for the plan */
  mast_method   varchar2(128),    /* maximum active sessions target resource */
                                  /* allocation method for the plan          */
  pdl_method    varchar2(128),             /* parallel degree limit resource */
                                           /* allocation method for the plan */
  num_plan_directives   number,    /* Number of plan directives for the plan */
  description   varchar2(2000),                  /* Text comment on the plan */
  que_method    varchar2(128),                 /* queueing method for groups */
  status        varchar2(128),                          /* PENDING or ACTIVE */
  mandatory     number                      /* Whether the plan is mandatory */
)
not persistable
/

--
-------------------------------------------------------------------------------
--                      RMGR_PLAN_DIRECTIVE
-------------------------------------------------------------------------------
-- 
create or replace type ku$_rmgr_plan_direct_t force as object
(
  vers_major    char(1),                              /* UDT major version # */
  vers_minor    char(1),                              /* UDT minor version # */
  obj_num       number,
  base_obj      ku$_schemaobj_t,
  group_or_subplan  varchar2(128),   /* Name of the consumer group or sub-plan
                                                                 referred to */
  type          number,                     /* 1: plan , 0: GROUP_OR_SUBPLAN */
  cpu_p1        number,           /* 1st parameter for CPU allocation method */
  cpu_p2        number,           /* 2nd parameter for CPU allocation method */
  cpu_p3        number,           /* 3rd parameter for CPU allocation method */
  cpu_p4        number,           /* 4th parameter for CPU allocation method */
  cpu_p5        number,           /* 5th parameter for CPU allocation method */
  cpu_p6        number,           /* 6th parameter for CPU allocation method */
  cpu_p7        number,           /* 7th parameter for CPU allocation method */
  cpu_p8        number,           /* 8th parameter for CPU allocation method */
  active_sess_pool_p1   number,       /* 1st parameter for max active sessions
                                                    target allocation method */
  queueing_p1           number,     /* 1st parameter for the queueing method */
  parallel_degree_limit_p1 number,   /* 1st parameter for the parallel degree
                                            limit resource allocation method */
  switch_group          varchar2(128),  /* group to switch to once switch time
                                                                  is reached */
  switch_time           number,       /* switch time limit for execution within
                                                                     a group */
  switch_estimate       number,   /* use execution estimate to determine
                                                                      group? */
  max_est_exec_time     number,      /* use of max. estimated execution time */
  undo_pool             number,  /* max. undo allocation for consumer groups */
  comments              varchar(2000), /* Text comment on the plan directive */
  status                varchar2(128),                /* PENDING  or ACTIVE  */
  mandatory             number                               /* 1 yes, 0 no  */
)
not persistable
/

--
-------------------------------------------------------------------------------
--                      RMGR_CONSUMER_GROUP
-------------------------------------------------------------------------------
-- 
create or replace type ku$_rmgr_consumer_t force as object
(
  vers_major    char(1),                              /* UDT major version # */
  vers_minor    char(1),                              /* UDT minor version # */
  obj_num       number,
  schema_obj    ku$_schemaobj_t,
  cpu_method    varchar2(128),     /* CPU resource alloc method for the plan */
  description   varchar2(2000),        /* Text comment on the consumer group */
  status        varchar2(128),                          /* pending or active */
  mandatory     number                                      /* 1:yes , 0: no */
)
not persistable
/

--
-------------------------------------------------------------------------------
--                      RMGR_INITIAL_CONSUMER_GROUP
-------------------------------------------------------------------------------
-- 
create or replace type ku$_rmgr_init_consumer_t force as object
(
  vers_major    char(1),                              /* UDT major version # */
  vers_minor    char(1),                              /* UDT minor version # */
  user_num      number,
  grantee       varchar2(128),
  granted_group varchar2(128),/*consumer groups to which the user can switch */
  grant_option  number,                  /* mod(a.option$) =1 yes, others no */
                       /* whether the user can grant the privilege to others */
  defschclass   VARCHAR2(128)                               /* initial group */
)
not persistable
/

--
-------------------------------------------------------------------------------
--                      PASSWORD_HISTORY
-------------------------------------------------------------------------------
-- 
create or replace type ku$_psw_hist_item_t force as object
(
  user_id       number,                    /* pws history user object number */
  uname         varchar2(128),                                  /* user name */
  password      varchar2(4000),                                  /* password */
  password_date varchar2(19)                                   /* start date */
)
not persistable
/

create or replace type ku$_psw_hist_list_t force
as TABLE of (ku$_psw_hist_item_t)
not persistable
/

create or replace type ku$_psw_hist_t force as object
(
  vers_major    char(1),                             /* UDT major version # */
  vers_minor    char(1),                             /* UDT minor version # */
  user_id       number,
  name          varchar2(128),
  hist_list     ku$_psw_hist_list_t                     /* password history */
)
not persistable
/

--
-------------------------------------------------------------------------------
--                      PROC_SYSTEM_GRANT
-- (procedural system privilege grant)
-- corresponds to the grant_sysprivs_exp function of a package in exppkgobj$
-------------------------------------------------------------------------------
--
create or replace type ku$_objpkg_t force as object
(
  tag           varchar2(128),                             /* procedural tag */
  cmnt          varchar2(2000),                        /* procedural comment */
  package       varchar2(128),                    /* procedural package name */
  schema        varchar2(128)                              /* package schema */
)
not persistable
/

create or replace type ku$_objpkg_privs_t force as object
(
  vers_major    char(1),                              /* UDT major version # */
  vers_minor    char(1),                              /* UDT minor version # */
  tag           varchar2(128),                             /* procedural tag */
  cmnt          varchar2(2000),                        /* procedural comment */
  package       varchar2(128),                 /* procedural package objects */
  schema        varchar2(128),                             /* package schema */
  plsql         ku$_procobj_lines      /* PL/SQL code for proc sys privilege */
)
not persistable
/

--
-------------------------------------------------------------------------------
--                      PROCOBJ
-- (system/schema procedural objects) - corresponds to the create_exp function
-- of a package in exppkgobj$ where the class is 1 (system) or 2 (schema)
-------------------------------------------------------------------------------
--
create or replace type ku$_procobj_t force as object
(
  vers_major    char(1),                              /* UDT major version # */
  vers_minor    char(1),                              /* UDT minor version # */
  obj_num       number,                              /* schema object number */
  schema_obj    ku$_schemaobj_t,                            /* schema object */
  class         number,                         /* 1:sys,2:schema,3:instance */
  prepost       number,                         /* 0:preaction, 1:postaction */
  type_num      number,                                           /* type id */
  level_num     number,                                             /* level */
  tag           varchar2(128),                             /* procedural tag */
  cmnt          varchar2(2000),                        /* procedural comment */
  package       varchar2(128),                         /* procedural package */
  pkg_schema    varchar2(128),                             /* package schema */
  plsql         ku$_procobj_lines      /* PL/SQL code for procedural objects */
)
not persistable
/

--
-------------------------------------------------------------------------------
--                      PROCOBJ_GRANT
-- (grants on system/schema procedural objects) - corresponds to the
-- grant_exp function of a package in exppkgobj$ where the class is 1 (system)
-- or 2 (schema).
-------------------------------------------------------------------------------
--
create or replace type ku$_procobj_grant_t force as object
(
  vers_major    char(1),                              /* UDT major version # */
  vers_minor    char(1),                              /* UDT minor version # */
  obj_num       number,                              /* schema object number */
  base_obj      ku$_schemaobj_t,                            /* schema object */
  class         number,                         /* 1:sys,2:schema,3:instance */
  prepost       number,                         /* 0:preaction, 1:postaction */
  type_num      number,                                           /* type id */
  level_num     number,                                             /* level */
  tag           varchar2(128),                             /* procedural tag */
  cmnt          varchar2(2000),                        /* procedural comment */
  package       varchar2(128),                         /* procedural package */
  pkg_schema    varchar2(128),                             /* package schema */
  plsql         ku$_procobj_lines      /* PL/SQL code for procedural objects */
)
not persistable
/

--
-------------------------------------------------------------------------------
--                      PROCOBJ_AUDIT
-- (audits on system/schema procedural objects) - corresponds to the
-- audit_exp function of a package in exppkgobj$ where the class is 1 (system)
-- or 2 (schema).
-------------------------------------------------------------------------------
--
create or replace type ku$_procobj_audit_t force as object
(
  vers_major    char(1),                              /* UDT major version # */
  vers_minor    char(1),                              /* UDT minor version # */
  obj_num       number,                              /* schema object number */
  base_obj      ku$_schemaobj_t,                            /* schema object */
  class         number,                      /* 1: sys, 2:schema, 3:instance */
  prepost       number,                          /* 0:praction, 1:postaction */
  type_num      number,                                           /* type id */
  level_num     number,                                             /* level */
  tag           varchar2(128),                             /* procedural tag */
  cmnt          varchar2(2000),                        /* procedural comment */
  package       varchar2(128),                         /* procedural package */
  pkg_schema    varchar2(128),                             /* package schema */
  plsql         ku$_procobj_lines      /* PL/SQL code for procedural objects */
)
not persistable
/

--
-------------------------------------------------------------------------------
--                      PROCDEPOBJ
-- (instance procedural objects) - corresponds to the create_exp function
-- of a package in exppkgobj$ where the class is 3 (instance)
-- and where there is a corresponding row in expdepobj$.
-------------------------------------------------------------------------------
--
create or replace type ku$_procdepobj_t force as object
(
  vers_major    char(1),                              /* UDT major version # */
  vers_minor    char(1),                              /* UDT minor version # */
  obj_num       number,                                     /* object number */
  schema_obj    ku$_schemaobj_t,                            /* schema object */
  class         number,                                             /* class */
  prepost       number,                         /* 0:preaction, 1:postaction */
  type_num      number,                                              /* type */
  level_num     number,                                             /* level */
  tag           varchar2(128),                                        /* tag */
  cmnt          varchar2(2000),                                   /* comment */
  package       varchar2(128),                                    /* package */
  pkg_schema    varchar2(128),                             /* package schema */
  base_obj_num  number,                                /* base object number */
  base_obj      ku$_schemaobj_t,                          /* base schema obj */
  plsql         ku$_procobj_lines      /* PL/SQL code for procedural objects */
)
not persistable
/

--
-------------------------------------------------------------------------------
--                      PROCDEPOBJ_GRANT
-- (grants on instance procedural objects) - corresponds to the
-- grant_exp function of a package in exppkgobj$ where the class is 3 (instance)
-- and where there is a corresponding row in expdepobj$.
-------------------------------------------------------------------------------
--
create or replace type ku$_procdepobjg_t force as object
(
  vers_major    char(1),                              /* UDT major version # */
  vers_minor    char(1),                              /* UDT minor version # */
  obj_num       number,                                     /* object number */
  base_obj      ku$_schemaobj_t,                            /* base object */
  class         number,                                             /* class */
  prepost       number,                         /* 0:preaction, 1:postaction */
  type_num      number,                                              /* type */
  level_num     number,                                             /* level */
  tag           varchar2(128),                                        /* tag */
  cmnt          varchar2(2000),                                   /* comment */
  package       varchar2(128),                                    /* package */
  pkg_schema    varchar2(128),                             /* package schema */
  anc_obj       ku$_schemaobj_t,                      /* ancestor schema obj */
  plsql         ku$_procobj_lines      /* PL/SQL code for procedural objects */
)
not persistable
/

--
-------------------------------------------------------------------------------
--                      PROCDEPOBJ_AUDIT
-- (audits on instance procedural objects) - corresponds to the
-- audit_exp function of a package in exppkgobj$ where the class is 3 (instance)
-- and where there is a corresponding row in expdepobj$.
-------------------------------------------------------------------------------
--
create or replace type ku$_procdepobja_t force as object
(
  vers_major    char(1),                              /* UDT major version # */
  vers_minor    char(1),                              /* UDT minor version # */
  obj_num       number,                                     /* object number */
  base_obj      ku$_schemaobj_t,                            /* base object */
  class         number,                                             /* class */
  prepost       number,                         /* 0:preaction, 1:postaction */
  type_num      number,                                              /* type */
  level_num     number,                                             /* level */
  tag           varchar2(128),                                        /* tag */
  cmnt          varchar2(2000),                                   /* comment */
  package       varchar2(128),                                    /* package */
  pkg_schema    varchar2(128),                             /* package schema */
  anc_obj       ku$_schemaobj_t,                      /* ancestor schema obj */
  plsql         ku$_procobj_lines      /* PL/SQL code for procedural objects */
)
not persistable
/

--
-------------------------------------------------------------------------------
--                      PROCACT_SYSTEM
-- (system procedural actions) - corresponds to the system_info_exp function
-- of a package in exppkgact$ where the class is 1 (system).
------------------------------------------------------------------------------
--
create or replace type ku$_procobjact_t force as object
(
  package       varchar2(128),                    /* procedural package name */
  schema        varchar2(128)                              /* package schema */
)
not persistable
/

create or replace type ku$_procact_t force as object
(
  vers_major    char(1),                              /* UDT major version # */
  vers_minor    char(1),                              /* UDT minor version # */
  tag           varchar2(128),                             /* procedural tag */
  cmnt          varchar2(2000),                        /* procedural comment */
  package       varchar2(128),                         /* procedural package */
  schema        varchar2(128),                             /* package schema */
  level_num     number,                                             /* level */
  class         number,                                             /* class */
  prepost       number,                         /* 0:preaction, 1:postaction */
  plsql         ku$_procobj_lines      /* PL/SQL code for procedural objects */
)
not persistable
/

--
------------------------------------------------------------------------------
---                     PROCACT_SCHEMA
-- (schema procedural actions) - corresponds to the schema_info_exp function
-- of a package in exppkgact$ where the class is 2 (schema)
-------------------------------------------------------------------------------
--
create or replace type ku$_procact_schema_t force as object
(
  vers_major    char(1),                              /* UDT major version # */
  vers_minor    char(1),                              /* UDT minor version # */
  user_name     varchar2(128),                                  /* user name */
  tag           varchar2(128),                             /* procedural tag */
  cmnt          varchar2(2000),                        /* procedural comment */
  package       varchar2(128),                         /* procedural package */
  schema        varchar2(128),                           /* procedual schema */
  level_num     number,                                             /* level */
  class         number,                                             /* class */
  prepost       number,                         /* 0:preaction, 1:postaction */
  plsql         ku$_procobj_lines      /* PL/SQL code for procedural objects */
)
not persistable
/

--
-------------------------------------------------------------------------------
--                      PROCACT_INSTANCE
-- (instance procedural actions) - corresponds to the instance_info_exp function
-- of a package in exppkgact$ where the class is 3 (instance) and where there is
-- a corresponding row in expdepact$.  
-------------------------------------------------------------------------------
--
create or replace type ku$_procact_instance_t force as object
(
  vers_major    char(1),                              /* UDT major version # */
  vers_minor    char(1),                              /* UDT minor version # */
  obj_num       number,                                     /* object number */
  base_obj      ku$_schemaobj_t,                            /* schema object */
  schema_obj    ku$_schemaobj_t,                            /* schema object */
  level_num     number,                                             /* level */
  tag           varchar2(128),                             /* procedural tag */
  cmnt          varchar2(2000),                        /* procedural comment */
  package       varchar2(128),                         /* procedural package */
  pkg_schema    varchar2(128),                             /* package schema */
  class         number,                                             /* class */
  prepost       number,                        /* 0: preaction, 1:postaction */
  plsql         ku$_procobj_lines      /* PL/SQL code for procedural objects */
)
not persistable
/
create or replace type ku$_procact_instance_tbl_t force as
 table OF (sys.ku$_procact_instance_t)
not persistable
/

--
-------------------------------------------------------------------------------
--                      PRE_TABLE_ACTION
-------------------------------------------------------------------------------
--
create or replace type ku$_prepost_table_t force as object
(
  vers_major    char(1),                              /* UDT major version # */
  vers_minor    char(1),                              /* UDT minor version # */
  obj_num       number,
  base_obj      ku$_schemaobj_t,
  action_str    sys.ku$_taction_list_t
)
not persistable
/

-------------------------------------------------------------------------------
--                      (SYSTEM, SCHEMA, INSTANCE) CALLOUT
--                      TRANSPORTABLE CALLS TO DBMS_PLUGTS
------------------------------------------------------------------------------

-- views use a common UDT

create or replace type ku$_callout_t force as object
(
  vers_major    char(1),                              /* UDT major version # */
  vers_minor    char(1),                              /* UDT minor version # */
  user_name     varchar2(128),                                  /* user name */
  obj_num       number,                                     /* object number */
  base_obj      ku$_schemaobj_t,                            /* schema object */
  tag           varchar2(128),             /* used for extensibility tracing */
  package       varchar2(128),                         /* procedural package */
  pkg_schema    varchar2(128),                             /* package schema */
  level_num     number,                                             /* level */
  class         number,                                             /* class */
  prepost       number,                         /* 0:preaction, 1:postaction */
  -- for dbms_plugts
  ts_name       varchar2(128),                            /* tablespace name */
  ts_num        number,                                 /* tablespace number */
  incl_const    number,
  incl_trig     number,
  incl_grant    number,
  tts_full_chk  number,
  tts_closure_chk number,
  idx_prop      number               /* index properties - for plugts_tsname */
)
not persistable
/

-- PLUGTS_BLK

create or replace type ku$_plugts_blk_t force as object
(
  vers_major    char(1),                              /* UDT major version # */
  vers_minor    char(1),                              /* UDT minor version # */
  prepost       number,                        /* 0: preaction, 1:postaction */
  plsql         ku$_procobj_lines      /* PL/SQL code for procedural objects */
)
not persistable
/

-- View for fetching tablespace name and other characteristics
--  intended for selection by a set of tsnum's

create or replace type ku$_plugts_tablespace_t force as object
(
  vers_major    char(1),                              /* UDT major version # */
  vers_minor    char(1),                              /* UDT minor version # */
  ts_num        number,                                 /* tablespace number */
  bitmapped     number,      /* If not bitmapped, 0 else unit size in blocks */
  flags         number,                                     /* various flags */
                                     /* 0x01 = system managed allocation     */
                                     /* 0x02 = uniform allocation            */
                                /* if above 2 bits not set then user managed */
                                     /* 0x04 = migrated tablespace           */
                                     /* 0x08 = tablespace being migrated     */
                                     /* 0x10 = undo tablespace               */
                                     /* 0x20 = auto segment space management */
                       /* if above bit not set then freelist segment managed */
                                     /* 0x40 (64) = COMPRESS                 */
                                     /* 0x80 = ROW MOVEMENT                  */
                                     /* 0x100 = SFT                          */
                                     /* 0x200 = undo retention guarantee     */
                                    /* 0x400 = tablespace belongs to a group */
                                  /* 0x800 = this actually describes a group */
                                   /* 0x1000 = tablespace has MAXSIZE set */
                                   /* 0x2000 = enc property initialized */
                                   /* 0x4000 = encrypted tablespace */
            /* 0x8000 = has its own key and not using the default DB enc key */
                                  /* 0x10000 = OLTP Compression */
                                  /* 0x20000 (131072) = ARCH1_COMPRESSION */
                                  /* 0x40000 (262144) = ARCH2_COMPRESSION */
                                  /* 0x80000 (524288) = ARCH3_COMPRESSION */
  ts_name       varchar2(128)                             /* tablespace name */
)
not persistable
/


-------------------------------------------------------------------------------
--            HCS ATTRIBUTE DIMENSION / HIERARCHY / ANALYTIC VIEW 
-------------------------------------------------------------------------------

-- source for hier dim or analytic view
create or replace type ku$_hcs_src_t force as object
(
  hcs_obj#       number,            /* obj# of the hier dim or analytic view */
  src_id         number,    /* id of the source in hier dim or analytic view */
  owner          varchar2(128),      /* owner of the source (hcs_src$.owner) */
  owner_in_ddl   number(1),                      /* whether owner was in DDL */
  name           varchar2(128),        /* name of the source (hcs_src$.name) */
  alias          varchar2(128),      /* alias of the source (hcs_src$.alias) */
  order_num      number                        /* order number of the soruce */
)
not persistable
/ 

create or replace type ku$_hcs_src_list_t force as table of (ku$_hcs_src_t)
not persistable
/

-- source column for attribute dim or analytic view 
create or replace type ku$_hcs_src_col_t force as object
(
  obj#           number,          /* top lvl object id containing the srcCol */
  src_col#       number,                          /* id of the source column */
  obj_type       number,                /* object type containing the srcCol */
  table_alias    varchar2(128),/* owner of column (hcs_src_col$.table_alias) */
  src_col_name   varchar2(128) /* name of column (hcs_src_col$.src_col_name) */
)
not persistable
/

create or replace type ku$_hcs_src_col_list_t force
as table of (ku$_hcs_src_col_t)
not persistable
/

-- classification
create or replace type ku$_hcs_clsfctn_t force as object
(
  obj#            number, /* top lvl object id containing the classification */
  sub_obj#        number,    /*  sub object id containing the classification */
  obj_type        number,                                  /* type of object */
  clsfction_name  varchar2(128),  /* classification name (from hcs_clsfctn$) */
  clsfction_lang  varchar2(64),          /* optional classification language */
  clsfction_value clob,                              /* classification value */
  order_num       number                   /* order number of classification */
)
not persistable
/

create or replace type ku$_hcs_clsfctn_list_t force
as table of (ku$_hcs_clsfctn_t)
not persistable
/

-- hier dim join path
create or replace type ku$_attr_dim_join_path_t force as object
(
  dim_obj#       number,                             /* obj# of the hier dim */
  join_path_id   number,                     /* join path id in the hier dim */
  name           varchar2(128),  /* name (hcs_dim_join_path$.join_path_name) */
  on_condition   varchar2(4000),      /* condition of the hier dim join path */
  order_num      number                        /* order number of attributes */
)
not persistable
/

create or replace type ku$_attr_dim_join_path_list_t 
 force as table of (ku$_attr_dim_join_path_t)
not persistable
/

-- hier join path
create or replace type ku$_hier_join_path_t force as object
(
  hier_obj#      number,                                 /* obj# of the hier */
  name           varchar2(128), /* name (hcs_hier_join_path$.join_path_name) */
  order_num      number                        /* order number of attributes */
)
not persistable
/

create or replace type ku$_hier_join_path_list_t 
 force as table of (ku$_hier_join_path_t)
not persistable
/

-- attribute dimension attr
create or replace type ku$_attr_dim_attr_t force as object
(
  dim_obj#       number,                             /* obj# of the hier dim */
  attr_id        number,                          /* attr id in the hier dim */
  name           varchar2(128),       /* attr name (hcs_dim_attr$.attr_name) */
  table_alias    varchar2(128),/* owner of column (hcs_src_col$.table_alias) */
  src_col_name   varchar2(128),/* name of column (hcs_src_col$.src_col_name) */
  clsfctn_list   ku$_hcs_clsfctn_list_t,                  /* classifications */
  order_num      number                        /* order number of attributes */
)
not persistable
/

create or replace type ku$_attr_dim_attr_list_t 
 force as table of (ku$_attr_dim_attr_t)
not persistable
/

-- attribute dim level key
create or replace type ku$_attr_dim_lvl_key_t force as object
(
  dim_obj#       number,                             /* obj# of the hier dim */
  lvl_id         number,               /* level number within this dimension */
  key_id         number,                       /* lvl key id in the hier dim */
  attr_list      ku$_attr_dim_attr_list_t,                  /* list of attrs */
  order_num      number                       /* order number of the lvl key */
)
not persistable
/

create or replace type ku$_attr_dim_lvl_key_list_t 
 force as table of (ku$_attr_dim_lvl_key_t)
not persistable
/

-- attribute dim level order by
create or replace type ku$_attr_dim_lvl_ordby_t force as object
(
  dim_obj#       number,                             /* obj# of the attr dim */
  lvl_id         number,                         /* level id in the attr dim */
  agg_func       varchar2(3),             /* aggregation function MIN or MAX */
  attribute_name varchar2(128),                            /* attribute name */
  order_num      number,                                     /* order number */
  criteria       varchar2(4),                       /* criteria: ASC or DESC */
  nulls_position varchar2(5)                          /* NULLS FIRST or LAST */
)
not persistable
/  

create or replace type ku$_attr_dim_lvl_ordby_list_t 
 force as table of (ku$_attr_dim_lvl_ordby_t)
not persistable
/

-- attribute dim level
create or replace type ku$_attr_dim_lvl_t force as object
(
  dim_obj#       number,                             /* obj# of the attr dim */
  lvl_id         number,                         /* level id in the attr dim */
  name           varchar2(128),        /* level name (hcs_dim_lvl$.lvl_name) */
  member_name    clob,              /* member name (hcs_dim_lvl$.member_name */
  member_caption clob,        /* member caption (hcs_dim_lvl$.member_caption */
  member_desc    clob,/* member description (hcs_dim_lvl$.member_description */
  skip_when_null varchar2(1),                              /* skip when null */
  level_type     varchar2(16),                                 /* level type */
  clsfctn_list   ku$_hcs_clsfctn_list_t,                  /* classifications */
  key_list       ku$_attr_dim_lvl_key_list_t,          /* list of level keys */
  ordby_list     ku$_attr_dim_lvl_ordby_list_t,                 /* order bys */
  dtm_attr_list  ku$_attr_dim_attr_list_t,       /* list of determined attrs */
  order_num      number                         /* order number of the level */
)
not persistable
/  

create or replace type ku$_attr_dim_lvl_list_t 
 force as table of (ku$_attr_dim_lvl_t)
not persistable
/

-- hier level
create or replace type ku$_hier_lvl_t force as object
(
  hier_obj#      number,                                 /* obj# of the hier */
  name           varchar2(128),         /* level name (hcs_hr_lvl$.lvl_name) */
  order_num      number                         /* order number of the level */
)
not persistable
/

create or replace type ku$_hier_lvl_list_t 
 force as table of (ku$_hier_lvl_t)
not persistable
/

-- hier attr
create or replace type ku$_hier_hier_attr_t force as object
(
  hier_obj#      number,                                 /* obj# of the hier */
  name           varchar2(128), /* attr name (hcs_hier_attr$.hier_attr_name) */
  expr           clob,             /* expression (NULL for system-generated) */
  clsfctn_list   ku$_hcs_clsfctn_list_t,                  /* classifications */
  order_num      number                          /* order number of the attr */
)
not persistable
/

create or replace type ku$_hier_hier_attr_list_t 
 force as table of (ku$_hier_hier_attr_t)
not persistable
/

-- analytic view keys
create or replace type ku$_analytic_view_keys_t force as object
(
  av_obj#         number,                       /* obj# of the analytic view */
  dim_obj#        number,                            /* obj# of the hier dim */
  key_col_name    varchar2(128),/* key column name(hcs_src_col$.src_col_name)*/
  ref_attr_name   varchar2(128),/* ref attr name (hcs_av_key$.ref_attr_name) */
  order_num       number                   /* order number of the key column */
)
not persistable
/

create or replace type ku$_analytic_view_keys_list_t 
 force as table of (ku$_analytic_view_keys_t)
not persistable
/

-- analytic view hiers
create or replace type ku$_analytic_view_hiers_t force as object
(
  av_obj#         number,                       /* obj# of the analytic view */
  dim_obj#        number,                            /* obj# of the hier dim */
  hier_owner      varchar2(128),     /* hier owner (hcs_av_hier$.hier_owner) */
  owner_in_ddl    number(1),                     /* whether owner was in DDL */
  hier_name       varchar2(128),       /* hier name (hcs_av_hier$.hier_name) */
  hier_alias      varchar2(128),    /* hier alias  (hcs_av_hier$.hier_alias) */
  is_default      varchar2(1),                                 /* is default */
  order_num       number                         /* order number of the hier */
)
not persistable
/

create or replace type ku$_analytic_view_hiers_list_t 
 force as table of (ku$_analytic_view_hiers_t)
not persistable
/

-- analytic view dim
create or replace type ku$_analytic_view_dim_t force as object
(
  av_obj#         number,                       /* obj# of the analytic view */
  dim_obj#        number,                            /* obj# of the hier dim */
  dim_owner       varchar2(128),         /* dim owner (hcs_av_dim$.dim_owner */
  owner_in_ddl    number(1),                     /* whether owner was in DDL */
  name            varchar2(128),          /* dim name (hcs_av_dim$.dim_name) */
  dim_alias       varchar2(128),            /* alias name (hcs_av_dim$.alias */
  ref_distinct    number(1),                      /* is references distinct? */
  key_list        ku$_analytic_view_keys_list_t,       /* analytic view keys */
  hier_list       ku$_analytic_view_hiers_list_t,                   /* hiers */
  clsfctn_list    ku$_hcs_clsfctn_list_t,                 /* classifications */
  order_num       number                          /* order number of the dim */
)
not persistable
/  

create or replace type ku$_analytic_view_dim_list_t 
 force as table of (ku$_analytic_view_dim_t)
not persistable
/

-- analytic view measures
create or replace type ku$_analytic_view_meas_t force as object
(
  av_obj#         number,                       /* obj# of the analytic view */
  meas_id         number,                               /* id of the measure */
  meas_type       number,                                    /* base or calc */
  name            varchar2(128),    /* measure name (hcs_av_meas$.meas_name) */
  src_col_name    varchar2(128),  /* column name (hcs_src_col$.src_col_name) */
  expr            clob,                     /* calculated measure expression */
  aggr            varchar2(128),        /* aggr_function (hcs_av_meas$.aggr) */
  clsfctn_list    ku$_hcs_clsfctn_list_t,                 /* classifications */
  order_num       number                      /* order number of the measure */
)
not persistable
/  

create or replace type ku$_analytic_view_meas_list_t 
 force as table of (ku$_analytic_view_meas_t)
not persistable
/

-- analytic view cache

-- measures in measure lists
create or replace type ku$_hcs_av_cache_meas_t force as object
(
  av_obj#         number,                       /* obj# of the analytic view */
  measlst#        number,                                   /* id of measlst */
  meas_name       varchar2(128),                      /* name of the measure */
  order_num       number                      /* order number of the measure */
)
not persistable
/

create or replace type ku$_hcs_av_cache_meas_list_t 
 force as table of (ku$_hcs_av_cache_meas_t)
not persistable
/

-- levels in level groups
create or replace type ku$_hcs_av_cache_lvl_t force as object
(
  av_obj#         number,                       /* obj# of the analytic view */
  lvlgrp#         number,                                    /* id of lvlgrp */
  dim_alias       varchar2(128),                    /* name of the dim alias */
  hier_alias      varchar2(128),                   /* name of the hier alias */
  level_name      varchar2(128),                        /* name of the level */
  order_num       number                        /* order number of the level */
)
not persistable
/

create or replace type ku$_hcs_av_cache_lvl_list_t 
 force as table of (ku$_hcs_av_cache_lvl_t)
not persistable
/

-- level groups
create or replace type ku$_hcs_av_cache_lvgp_t force as object
(
  av_obj#         number,                       /* obj# of the analytic view */
  measlst#        number,                                   /* id of measlst */
  lvlgrp#         number,                                /* id of the lvlgrp */
  cache_type      varchar2(128),                               /* cache type */
  lvl_list        ku$_hcs_av_cache_lvl_list_t,                     /* levels */
  order_num       number                              /* order of the lvlgrp */
)
not persistable
/

create or replace type ku$_hcs_av_cache_lvgp_list_t 
 force as table of (ku$_hcs_av_cache_lvgp_t)
not persistable
/

-- measure lists
create or replace type ku$_hcs_av_cache_mlst_t force as object
(
  av_obj#         number,                       /* obj# of the analytic view */
  measlst#        number,                                   /* id of measlst */
  meas_list       ku$_hcs_av_cache_meas_list_t,                  /* measures */
  lvlgrp_list     ku$_hcs_av_cache_lvgp_list_t               /* level groups */
)
not persistable
/

create or replace type ku$_hcs_av_cache_mlst_list_t 
 force as table of (ku$_hcs_av_cache_mlst_t)
not persistable
/

-- end analytic view cache

-- hier dim
create or replace type ku$_attribute_dimension_t force as object
(
  obj_num            number,           /* object number of the attribute dim */
  schema_obj         ku$_schemaobj_t,                       /* schema object */
  dimension_type     varchar2(8),                          /* dimension type */
  all_member_name    clob,                                /* all member name */
  all_member_caption clob,                             /* all member caption */
  all_member_desc    clob,                         /* all member description */
  src_list           ku$_hcs_src_list_t,                  /* list of sources */
  attr_list          ku$_attr_dim_attr_list_t,        /* dimension attr list */
  lvl_list           ku$_attr_dim_lvl_list_t,        /* dimension level list */
  clsfctn_list       ku$_hcs_clsfctn_list_t,              /* classifications */
  join_path_list     ku$_attr_dim_join_path_list_t             /* join paths */
)
not persistable
/

-- hierarchy
create or replace type ku$_hierarchy_t force as object
(
  obj_num         number,                       /* object number of the hier */
  schema_obj      ku$_schemaobj_t,                          /* schema object */
  dim_owner       varchar2(128),                          /* dimension owner */
  owner_in_ddl    number(1),                     /* whether owner was in DDL */
  dim_name        varchar2(128),                           /* dimension name */
  lvl_list        ku$_hier_lvl_list_t,           /* list of hierarchy levels */
  clsfctn_list    ku$_hcs_clsfctn_list_t,                 /* classifications */
  join_path_list  ku$_hier_join_path_list_t,                   /* join paths */
  hr_attr_list    ku$_hier_hier_attr_list_t   /* hier attr w/classifications */
)
not persistable
/

-- analytic view
create or replace type ku$_analytic_view_t force as object
(
  obj_num         number,              /* object number of the analytic view */
  schema_obj      ku$_schemaobj_t,                          /* schema object */
  def_meas        varchar2(128),                          /* default measure */
  def_aggr        varchar2(128),                      /* default aggregation */
  src_list        ku$_hcs_src_list_t,                     /* list of sources */
  dim_list        ku$_analytic_view_dim_list_t,                /* dimensions */
  meas_list       ku$_analytic_view_meas_list_t,                 /* measures */
  clsfctn_list    ku$_hcs_clsfctn_list_t,                 /* classifications */
  cache_meas_list ku$_hcs_av_cache_mlst_list_t,           /* cache meas list */
  dyn_all_cache   number(1)                     /* dynamic all cache enabled */
)
not persistable
/

@?/rdbms/admin/sqlsessend.sql

OHA YOOOO