<?xml version="1.0"?>
<!-- Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved. -->
<miv>

<miv_schemas type="SQLStatement" default="true">
        SELECT rtrim(name) name
        FROM sys.schemas  
</miv_schemas>


<miv_tables type="SQLStatement" default="true">
        SELECT rtrim(table_name) table_name 
        FROM INFORMATION_SCHEMA.TABLES  
        WHERE table_schema = <Parameter name="owner"/> 
              AND table_type = 'BASE TABLE'   
</miv_tables>

<miv_views type="SQLStatement" default="true">
        SELECT rtrim(table_name) view_name,
	       rtrim(table_name) business_name,
               '' description,
               view_definition
        FROM INFORMATION_SCHEMA.VIEWS  
        WHERE table_schema = <Parameter name="owner"/> 
</miv_views>

<miv_columns type="SQLStatement" default="true">
        SELECT rtrim(t.table_name) entity_name, 
               c.ordinal_position position, 
               rtrim(c.column_name) column_name, 
               c.data_type, 
               c.character_maximum_length, 
               c.numeric_precision, 
               c.numeric_scale, 
               c.collation_name, 
               SUBSTRING(c.is_nullable,1,1) nullable,
               null datatypeowner,
               c.column_default,
               CAST(COLLATIONPROPERTY(c.collation_name,'CodePage') AS varchar(45)) CHARSET,
               NULLIF(c.character_octet_length,1)/NULLIF(c.character_maximum_length,1) BYTES_PER_CHAR,
               'N' USE_CHAR_SEMANTICS
        FROM INFORMATION_SCHEMA.TABLES t, 
             INFORMATION_SCHEMA.COLUMNS c 
        WHERE t.table_schema = <Parameter name="owner"/>
        AND   t.table_name = c.table_name
        AND   t.table_schema = c.table_schema
</miv_columns>

<miv_unique_keys type="SQLStatement" default="true">
       SELECT rtrim(table_name) entity_name, 
              rtrim(constraint_name) key_name,
              rtrim(constraint_name) business_name,
              rtrim(constraint_name) description,
              rtrim(constraint_type) constraint_type
      FROM    INFORMATION_SCHEMA.TABLE_CONSTRAINTS
      WHERE   upper(constraint_type) IN ('PRIMARY KEY','CHECK','UNIQUE')
      AND     table_schema = <Parameter name="owner"/> 
</miv_unique_keys>

<miv_foreign_keys type="SQLStatement" default="true">
      SELECT rtrim(tab.table_name) entity_name, 
             rtrim(refcon.constraint_name) key_name, 
             rtrim(refcon.constraint_name) business_name,
             rtrim(refcon.constraint_name) description,
             rtrim(refcon.unique_constraint_name) uk_constraint_name
      FROM   INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS refcon, 
             INFORMATION_SCHEMA.CONSTRAINT_TABLE_USAGE tab 
      WHERE  tab.constraint_name = refcon.constraint_name 
      AND    tab.constraint_schema = refcon.constraint_schema 
      AND    tab.constraint_catalog = refcon.constraint_catalog 
      AND    tab.table_schema = <Parameter name="owner"/>
</miv_foreign_keys>

<miv_key_columns type="SQLStatement" default="true">
      SELECT rtrim(cons.constraint_name) key_name, 
             rtrim(cons.column_name) column_name,
             col.ordinal_position position,
             rtrim(cons.table_name) entity_name
      FROM   INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE cons, 
             INFORMATION_SCHEMA.COLUMNS col
      WHERE  col.COLUMN_NAME = cons.COLUMN_NAME
      AND    col.table_name = cons.table_name
      AND    col.table_schema = cons.table_schema
      AND    col.column_name = cons.column_name
      AND    cons.table_schema = <Parameter name="owner"/> 
</miv_key_columns>

<miv_fk_tables type="SQLStatement" default="true">
      SELECT  rtrim(refkeys.table_name) orig_table_name,
              rtrim(cols.table_name) foreign_table_name,
              cols.constraint_name foreign_table_description
      FROM    INFORMATION_SCHEMA.TABLE_CONSTRAINTS cons,
              INFORMATION_SCHEMA.KEY_COLUMN_USAGE cols,
              INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS ref,
              INFORMATION_SCHEMA.KEY_COLUMN_USAGE refkeys
      WHERE   cons.CONSTRAINT_CATALOG = cols.CONSTRAINT_CATALOG
      AND     cons.CONSTRAINT_SCHEMA = cols.CONSTRAINT_SCHEMA
      AND     cons.CONSTRAINT_NAME = cols.CONSTRAINT_NAME
      AND     cons.CONSTRAINT_TYPE ='FOREIGN KEY'
      AND     ref.constraint_name = cons.constraint_name
      AND     ref.CONSTRAINT_CATALOG = cons.CONSTRAINT_CATALOG
      AND     ref.CONSTRAINT_SCHEMA = cons.CONSTRAINT_SCHEMA
      AND     ref.unique_constraint_name = refkeys.constraint_name
      AND     ref.CONSTRAINT_CATALOG = refkeys.CONSTRAINT_CATALOG
      AND     ref.CONSTRAINT_SCHEMA = refkeys.CONSTRAINT_SCHEMA
      AND     cols.ORDINAL_POSITION = refkeys.ORDINAL_POSITION
      AND     cons.table_schema = <Parameter name="owner"/>
</miv_fk_tables>

<miv_functions type="SQLStatement" default="true">
      SELECT  object_name(p.object_id), p.object_id, p.name,
              type_name(p.system_type_id), p.is_output, p.parameter_id
      FROM    sys.all_parameters AS p
      JOIN    sys.all_objects AS o
      ON      p.object_id = o.object_id 
      AND     o.schema_id = schema_id(<Parameter name="owner"/>) 
      AND     o.type = 'FN' 
      AND     o.name LIKE <Parameter name="filter"/>
      ORDER BY p.object_id
</miv_functions>

<miv_parameters type="SQLStatement" default="true">
      SELECT  object_name(object_id), name, type_name(system_type_id), 
              is_output, parameter_id
      FROM    sys.all_parameters
      WHERE   object_id = <Parameter name="object"/>
      ORDER BY parameter_id
</miv_parameters>

<miv_implementations type="SQLStatement" default="true">
      SELECT  object_name(object_id), Definition
      FROM    sys.all_sql_modules 
      WHERE   object_id = <Parameter name="object"/>
</miv_implementations>

<miv_function_overloading_supported type="SQLStatement" default="true">false</miv_function_overloading_supported>

<miv_capabilities type="ResultSet">
	<table_supported>true</table_supported>
	<view_supported>true</view_supported>
	<sequence_supported>false</sequence_supported>
	<table_name_filter_supported>true</table_name_filter_supported>
	<view_name_filter_supported>true</view_name_filter_supported>
	<sequence_name_filter_supported>false</sequence_name_filter_supported>
	<business_area_supported>false</business_area_supported>	
	<business_area_table_supported>false</business_area_table_supported>	
	<business_area_view_supported>false</business_area_view_supported>	
	<business_area_sequence_supported>false</business_area_sequence_supported>	
	<application_owner_supported>true</application_owner_supported>
	<table_fklevel_supported>false</table_fklevel_supported>
	<reimport_supported>true</reimport_supported>
	<data_object_at_leaf_levels>false</data_object_at_leaf_levels>
	<multiple_tree_supported>false</multiple_tree_supported>
        <function_supported>true</function_supported>
        <function_name_filter_supported>true</function_name_filter_supported>
</miv_capabilities>

</miv>
