teradata.xml 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!--
  3. Licensed Materials - Property of IBM
  4. IBM Cognos Products: relmd
  5. (C) Copyright IBM Corp. 2008, 2015
  6. US Government Users Restricted Rights - Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
  7. -->
  8. <!--
  9. Copyright (C) 2008 Cognos ULC, an IBM Company. All rights reserved.
  10. Cognos (R) is a trademark of Cognos ULC, (formerly Cognos Incorporated).
  11. relational metadata extraction rules for teradata.
  12. -->
  13. <relmd:vendorRules xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:relmd="http://www.ibm.com/xmlns/prod/cognos/relmd/1/0" xsi:schemaLocation="http://www.ibm.com/xmlns/prod/cognos/relmd/1/0 ../../webcontent/relmd/vendor/relmdVendorRules.xsd">
  14. <relmd:caseSensitivityRules relmd:storage="upper" relmd:conversionType="java"/>
  15. <relmd:defaultCatalogSchemaQueryRules>
  16. <relmd:sql>SELECT DISTINCT '' catalogName, trim(A.DatabaseName) schemaName FROM dbc.tablesV A WHERE A.databasename = DATABASE</relmd:sql>
  17. </relmd:defaultCatalogSchemaQueryRules>
  18. <relmd:tablesImportRules>
  19. <relmd:sql>select '' parentCatalog, trim(A.DatabaseName) parentSchema, trim(A.TableName) tableName, CASE A.TableKind WHEN 'T' then 'table' END tabletype, '' description from dbc.tablesV A where A.TableKind in ('T') order by parentSchema, tableName</relmd:sql>
  20. <relmd:objectSelectionsInclusion relmd:sqlFragment="where A.TableKind in ('T')" relmd:insertLocation="after" relmd:insertPrefix="AND">
  21. <relmd:objectSelectionsCondition relmd:schemaExpression="A.DatabaseName" relmd:objectExpression="A.TableName"/>
  22. </relmd:objectSelectionsInclusion>
  23. </relmd:tablesImportRules>
  24. <relmd:viewsImportRules>
  25. <relmd:sql>select '' parentCatalog, trim(A.DatabaseName) parentSchema, trim(A.TableName) tableName, CASE A.TableKind WHEN 'V' THEN 'view' END tabletype, '' description from dbc.tablesV A where A.TableKind in ('V') order by parentSchema, tableName</relmd:sql>
  26. <relmd:objectSelectionsInclusion relmd:sqlFragment="where A.TableKind in ('V')" relmd:insertLocation="after" relmd:insertPrefix="AND">
  27. <relmd:objectSelectionsCondition relmd:schemaExpression="A.DatabaseName" relmd:objectExpression="A.TableName"/>
  28. </relmd:objectSelectionsInclusion>
  29. </relmd:viewsImportRules>
  30. <relmd:columnsImportRules relmd:extractionFailureFallback="com.ibm.cognos.internal.relmd.metadata.import_.functions.TeradataGetColumnsFunction">
  31. <relmd:sql>
  32. SELECT '' parentCatalog, TRIM(A.DatabaseName) parentSchema, TRIM(A.TableName) parentTable, TRIM(A.ColumnName) parentColumn
  33. , TRIM(A.ColumnType)
  34. || CASE WHEN A.CharType IS NULL THEN '' WHEN A.CharType = 0 THEN '' ELSE ' ' || TRIM(A.CharType) END
  35. || CASE WHEN A.ColumnFormat IS NULL THEN '' ELSE ' ' || TRIM(A.ColumnFormat) END
  36. , CASE WHEN A.ColumnType='D' THEN A.DecimalTotalDigits ELSE A.ColumnLength END "length"
  37. , 10 "precision", A.DecimalFractionalDigits scale, TRIM(A.Nullable) nullableFlag, TRIM(A.DefaultValue) defaultValue
  38. , '' collationSequence, '' description
  39. FROM DBC.ColumnsV A, dbc.tablesV B
  40. WHERE A.DatabaseName = B.DatabaseName AND A.TableName = B.TableName AND B.TableKind IN ('V','T')
  41. ORDER BY parentSchema, parentTable, A.ColumnId
  42. </relmd:sql>
  43. <relmd:objectSelectionsInclusion relmd:sqlFragment="AND B.TableKind IN ('V','T')" relmd:insertLocation="after" relmd:insertPrefix="AND">
  44. <relmd:objectSelectionsCondition relmd:schemaExpression="A.DatabaseName" relmd:objectExpression="A.TableName" relmd:columnExpression="A.ColumnName"/>
  45. </relmd:objectSelectionsInclusion>
  46. </relmd:columnsImportRules>
  47. <relmd:uniqueKeysImportRules>
  48. <relmd:sql>select '' parentCatalog, trim(A.DatabaseName) parentSchema, trim(A.TableName) parentTable, trim(A.IndexName) keyName, trim(A.ColumnName) refColumnName, A.ColumnPosition refColumnSequence, '' description from dbc.IndicesV A WHERE A.IndexType = 'K' and A.IndexName is not null order by parentSchema, parentTable, keyName, refColumnSequence</relmd:sql>
  49. <relmd:objectSelectionsInclusion relmd:sqlFragment="WHERE A.IndexType = 'K'" relmd:insertLocation="after" relmd:insertPrefix="AND">
  50. <relmd:objectSelectionsCondition relmd:schemaExpression="A.DatabaseName" relmd:objectExpression="A.TableName"/>
  51. </relmd:objectSelectionsInclusion>
  52. </relmd:uniqueKeysImportRules>
  53. <relmd:foreignKeysImportRules>
  54. <relmd:sql>
  55. SELECT '' parentCatalog, trim(FK.ChildDB) parentSchema, trim(FK.ChildTable) parentTable, trim(FK.IndexName) foreignKeyName, trim(FK.ChildKeyColumn) exportedColumn, IMPKEY.ColumnPosition columnSequence, '' importedCatalog, trim(IMPTAB.DatabaseName) importedSchema, trim(IMPTAB.TableName) importedTable, trim(IMPKEY.IndexName) importedKey , trim(FK.ChildKeyColumn), '' description
  56. FROM "DBC"."All_RI_ParentsV" FK, "DBC"."TablesV" IMPTAB, "DBC"."IndicesV" IMPKEY
  57. WHERE FK.ParentDB = IMPTAB.DatabaseName
  58. AND FK.ParentTable = IMPTAB.TableName
  59. AND FK.ParentDB = IMPKEY.DatabaseName
  60. AND FK.ParentTable = IMPKEY.TableName
  61. AND FK.ParentKeyColumn = IMPKEY.ColumnName
  62. AND IMPKEY.DatabaseName = IMPTAB.DatabaseName
  63. AND IMPKEY.TableName = IMPTAB.TableName
  64. AND IMPKEY.IndexType IN ('K')
  65. ORDER BY parentSchema, parentTable, foreignKeyName, columnSequence
  66. </relmd:sql>
  67. <relmd:objectSelectionsInclusion relmd:sqlFragment="AND IMPKEY.IndexType IN ('K')" relmd:insertLocation="after" relmd:insertPrefix="AND">
  68. <relmd:objectSelectionsCondition relmd:schemaExpression="FK.ChildDB" relmd:objectExpression="FK.ChildTable"/>
  69. <relmd:objectSelectionsCondition relmd:schemaExpression="IMPTAB.DatabaseName" relmd:objectExpression="IMPTAB.TableName"/>
  70. </relmd:objectSelectionsInclusion>
  71. </relmd:foreignKeysImportRules>
  72. <relmd:indexesImportRules>
  73. <relmd:sql>
  74. SELECT '' tableCatalog, trim(IDX.DatabaseName) tableSchema, trim(IDX.TableName) refTable, trim(IDX.IndexName) indexName
  75. , trim(IDX.UniqueFlag) isUnique, CASE IDX.IndexType WHEN 'N' THEN 'hash' WHEN 'H' THEN 'hash' ELSE 'regular' END indexType
  76. , '' parentCatalog, trim(IDX.DatabaseName) parentSchema, IDX.ColumnPosition refColumnSequence, trim(IDX.ColumnName) refColumnName
  77. , 'A' sortOrder, '' description
  78. FROM DBC.IndicesV IDX
  79. WHERE IDX.IndexType NOT IN ('K')
  80. ORDER BY parentSchema, indexName, refTable, refColumnSequence</relmd:sql>
  81. <relmd:objectSelectionsInclusion relmd:sqlFragment="WHERE IDX.IndexType NOT IN ('K')" relmd:insertLocation="after" relmd:insertPrefix="AND">
  82. <relmd:objectSelectionsCondition relmd:schemaExpression="IDX.DatabaseName" relmd:objectExpression="IDX.TableName"/>
  83. </relmd:objectSelectionsInclusion>
  84. </relmd:indexesImportRules>
  85. <relmd:synonymsImportRules>
  86. <relmd:sql>TBD</relmd:sql>
  87. </relmd:synonymsImportRules>
  88. <relmd:routinesImportRules>
  89. <relmd:sql>
  90. SELECT '' parentCatalog, trim(A.DatabaseName) parentSchema, trim(A.TableName) tableName, '' description
  91. , CASE A.TableKind WHEN 'M' then 'procedure' WHEN 'P' then 'procedure' WHEN 'F' THEN 'function' END proceduretype
  92. FROM dbc.tablesV A
  93. WHERE A.TableKind IN ('P','F','M')
  94. ORDER BY parentCatalog, parentSchema, tableName
  95. </relmd:sql>
  96. <relmd:objectSelectionsInclusion relmd:sqlFragment="WHERE A.TableKind IN ('P','F','M')" relmd:insertLocation="after" relmd:insertPrefix="AND">
  97. <relmd:objectSelectionsCondition relmd:schemaExpression="A.DatabaseName" relmd:objectExpression="A.TableName"/>
  98. </relmd:objectSelectionsInclusion>
  99. </relmd:routinesImportRules>
  100. <relmd:proceduresImportRules>
  101. <relmd:sql>
  102. SELECT '' parentCatalog, trim(A.DatabaseName) parentSchema, trim(A.TableName) tableName, '' description
  103. , CASE A.TableKind WHEN 'M' then 'procedure' WHEN 'P' then 'procedure' END proceduretype
  104. FROM dbc.tablesV A
  105. WHERE A.TableKind IN ('P','M')
  106. ORDER BY parentCatalog, parentSchema, tableName
  107. </relmd:sql>
  108. <relmd:objectSelectionsInclusion relmd:sqlFragment="WHERE A.TableKind IN ('P','M')" relmd:insertLocation="after" relmd:insertPrefix="AND">
  109. <relmd:objectSelectionsCondition relmd:schemaExpression="A.DatabaseName" relmd:objectExpression="A.TableName"/>
  110. </relmd:objectSelectionsInclusion>
  111. </relmd:proceduresImportRules>
  112. <relmd:functionsImportRules>
  113. <relmd:sql>
  114. SELECT '' parentCatalog, trim(A.DatabaseName) parentSchema, trim(A.TableName) tableName, '' description
  115. , CASE A.TableKind WHEN 'F' THEN 'function' END proceduretype
  116. FROM dbc.tablesV A
  117. WHERE A.TableKind IN ('F')
  118. ORDER BY parentCatalog, parentSchema, tableName
  119. </relmd:sql>
  120. <relmd:objectSelectionsInclusion relmd:sqlFragment="WHERE A.TableKind IN ('F')" relmd:insertLocation="after" relmd:insertPrefix="AND">
  121. <relmd:objectSelectionsCondition relmd:schemaExpression="A.DatabaseName" relmd:objectExpression="A.TableName"/>
  122. </relmd:objectSelectionsInclusion>
  123. </relmd:functionsImportRules>
  124. <relmd:routineArgumentsImportRules>
  125. <relmd:sql>
  126. SELECT '' parentCatalog, trim(A.DatabaseName) parentSchema, trim(A.TableName) parentTable, trim(A.ColumnName) parentColumn
  127. , TRIM(A.ColumnType)
  128. || CASE WHEN A.CharType IS NULL THEN '' WHEN A.CharType = 0 THEN '' ELSE ' ' || TRIM(A.CharType) END
  129. || CASE WHEN A.ColumnFormat IS NULL THEN '' ELSE ' ' || TRIM(A.ColumnFormat) END
  130. , CASE WHEN A.ColumnType='D' THEN A.DecimalTotalDigits ELSE A.ColumnLength END "length"
  131. , 10 "precision", A.DecimalFractionalDigits scale, TRIM(A.Nullable) nullableFlag, TRIM(A.DefaultValue) defaultValue
  132. , '' collationSequence, '' description, '0' signatureIndex, 'in' parameterMode, '0' occurs, '0' ordinal, '0' parameterSequence, '0' dataLevel, '0' dataLeveLPosition
  133. FROM DBC.ColumnsV A, dbc.tablesV B
  134. WHERE A.DatabaseName = B.DatabaseName and A.TableName = B.TableName
  135. AND B.TableKind in ('P','F','M')
  136. ORDER BY parentSchema, parentTable, A.ColumnId
  137. </relmd:sql>
  138. <relmd:objectSelectionsInclusion relmd:sqlFragment="AND B.TableKind in ('P','F','M')" relmd:insertLocation="after" relmd:insertPrefix="AND">
  139. <relmd:objectSelectionsCondition relmd:schemaExpression="A.DatabaseName" relmd:objectExpression="A.TableName"/>
  140. </relmd:objectSelectionsInclusion>
  141. </relmd:routineArgumentsImportRules>
  142. <relmd:procedureRoutineArgusImportRules>
  143. <relmd:sql>
  144. SELECT '' parentCatalog, trim(A.DatabaseName) parentSchema, trim(A.TableName) parentTable, trim(A.ColumnName) parentColumn
  145. , TRIM(A.ColumnType)
  146. || CASE WHEN A.CharType IS NULL THEN '' WHEN A.CharType = 0 THEN '' ELSE ' ' || TRIM(A.CharType) END
  147. || CASE WHEN A.ColumnFormat IS NULL THEN '' ELSE ' ' || TRIM(A.ColumnFormat) END
  148. , CASE WHEN A.ColumnType='D' THEN A.DecimalTotalDigits ELSE A.ColumnLength END "length"
  149. , 10 "precision", A.DecimalFractionalDigits scale, TRIM(A.Nullable) nullableFlag, TRIM(A.DefaultValue) defaultValue
  150. , '' collationSequence, '' description, '0' signatureIndex, 'in' parameterMode, '0' occurs, '0' ordinal, '0' parameterSequence, '0' dataLevel, '0' dataLeveLPosition
  151. FROM DBC.ColumnsV A, dbc.tablesV B
  152. WHERE A.DatabaseName = B.DatabaseName and A.TableName = B.TableName
  153. AND B.TableKind in ('P','M')
  154. ORDER BY parentSchema, parentTable, A.ColumnId
  155. </relmd:sql>
  156. <relmd:objectSelectionsInclusion relmd:sqlFragment="AND B.TableKind in ('P','M')" relmd:insertLocation="after" relmd:insertPrefix="AND">
  157. <relmd:objectSelectionsCondition relmd:schemaExpression="A.DatabaseName" relmd:objectExpression="A.TableName"/>
  158. </relmd:objectSelectionsInclusion>
  159. </relmd:procedureRoutineArgusImportRules>
  160. <relmd:functionRoutineArgusImportRules>
  161. <relmd:sql>
  162. SELECT '' parentCatalog, trim(A.DatabaseName) parentSchema, trim(A.TableName) parentTable, trim(A.ColumnName) parentColumn
  163. , TRIM(A.ColumnType)
  164. || CASE WHEN A.CharType IS NULL THEN '' WHEN A.CharType = 0 THEN '' ELSE ' ' || TRIM(A.CharType) END
  165. || CASE WHEN A.ColumnFormat IS NULL THEN '' ELSE ' ' || TRIM(A.ColumnFormat) END
  166. , CASE WHEN A.ColumnType='D' THEN A.DecimalTotalDigits ELSE A.ColumnLength END "length"
  167. , 10 "precision", A.DecimalFractionalDigits scale, TRIM(A.Nullable) nullableFlag, TRIM(A.DefaultValue) defaultValue
  168. , '' collationSequence, '' description, '0' signatureIndex, 'in' parameterMode, '0' occurs, '0' ordinal, '0' parameterSequence, '0' dataLevel, '0' dataLeveLPosition
  169. FROM DBC.ColumnsV A, dbc.tablesV B
  170. WHERE A.DatabaseName = B.DatabaseName and A.TableName = B.TableName
  171. AND B.TableKind in ('F')
  172. ORDER BY parentSchema, parentTable, A.ColumnId
  173. </relmd:sql>
  174. <relmd:objectSelectionsInclusion relmd:sqlFragment="AND B.TableKind in ('F')" relmd:insertLocation="after" relmd:insertPrefix="AND">
  175. <relmd:objectSelectionsCondition relmd:schemaExpression="A.DatabaseName" relmd:objectExpression="A.TableName"/>
  176. </relmd:objectSelectionsInclusion>
  177. </relmd:functionRoutineArgusImportRules>
  178. <relmd:sqlObjectImportRules>
  179. <relmd:sql>SELECT '' parentCatalog, TRIM(A.DatabaseName) parentSchema, TRIM(A.TableName) tableName, A.TableKind objectType, '' targetHostRef, '' targetCatalogRef, '' targetSchemaRef, '' targetObjectName, '' targetObjectType, '' description
  180. FROM dbc.tablesV A WHERE A.TableKind IN ('V','T') ORDER BY parentSchema, tableName</relmd:sql>
  181. <relmd:objectSelectionsInclusion relmd:insertLocation="after" relmd:sqlFragment="A.TableKind IN ('V','T')" relmd:insertPrefix="AND">
  182. <relmd:objectSelectionsCondition relmd:schemaExpression="trim(A.DatabaseName)" relmd:objectExpression="trim(A.TableName)"/>
  183. </relmd:objectSelectionsInclusion>
  184. </relmd:sqlObjectImportRules>
  185. <relmd:schemasBrowseRules>
  186. <relmd:sql>
  187. SELECT trim(A.DatabaseName) objectName, '' description
  188. FROM dbc.tablesV A
  189. GROUP BY A.DatabaseName
  190. ORDER BY objectName
  191. </relmd:sql>
  192. <relmd:systemObjectFilter relmd:insertLocation="after" relmd:sqlFragment="FROM dbc.tablesV A" relmd:insertPrefix="WHERE" relmd:objectExpression="A.DatabaseName">
  193. <relmd:systemObject relmd:name="td12"/>
  194. <relmd:systemObject relmd:name="DBC"/>
  195. <relmd:systemObject relmd:name="Crashdumps"/>
  196. <relmd:systemObject relmd:name="SysCalendar"/>
  197. <relmd:systemObject relmd:name="SysAdmin"/>
  198. <relmd:systemObject relmd:name="SYSDBA"/>
  199. <relmd:systemObject relmd:name="SystemFe"/>
  200. </relmd:systemObjectFilter>
  201. </relmd:schemasBrowseRules>
  202. <relmd:tablesBrowseRules>
  203. <relmd:schemaGrainSql>
  204. SELECT trim(A.TableName) objectName, '' description
  205. FROM dbc.tablesV A
  206. WHERE A.DatabaseName = '<relmd:schemaSubstitution/>'
  207. AND A.TableKind = 'T'
  208. ORDER BY objectName
  209. </relmd:schemaGrainSql>
  210. </relmd:tablesBrowseRules>
  211. <relmd:viewsBrowseRules>
  212. <relmd:schemaGrainSql>
  213. SELECT trim(A.TableName) objectName, '' description
  214. FROM dbc.tablesV A
  215. WHERE A.DatabaseName = '<relmd:schemaSubstitution/>'
  216. AND A.TableKind = 'V'
  217. ORDER BY objectName
  218. </relmd:schemaGrainSql>
  219. </relmd:viewsBrowseRules>
  220. <relmd:columnsBrowseRules>
  221. <relmd:objectGrainSql>
  222. SELECT trim(A.ColumnName) objectName, '' description
  223. FROM DBC.ColumnsV A, dbc.tablesV B
  224. WHERE A.DatabaseName = '<relmd:schemaSubstitution/>'
  225. AND A.TableName = '<relmd:objectSubstitution/>'
  226. AND A.DatabaseName = B.DatabaseName
  227. AND A.TableName = B.TableName
  228. AND B.TableKind in ('V','M','T')
  229. ORDER BY A.ColumnId
  230. </relmd:objectGrainSql>
  231. </relmd:columnsBrowseRules>
  232. <relmd:synonymsBrowseRules>
  233. <relmd:schemaGrainSql>TBD<relmd:schemaSubstitution/>
  234. </relmd:schemaGrainSql>
  235. </relmd:synonymsBrowseRules>
  236. <relmd:proceduresBrowseRules>
  237. <relmd:schemaGrainSql>
  238. SELECT trim(A.TableName) objectName, '' description
  239. FROM dbc.tablesV A
  240. WHERE A.DatabaseName = '<relmd:schemaSubstitution/>'
  241. AND A.TableKind IN ('P','M')
  242. ORDER BY objectName
  243. </relmd:schemaGrainSql>
  244. </relmd:proceduresBrowseRules>
  245. <relmd:functionsBrowseRules>
  246. <relmd:schemaGrainSql>
  247. SELECT trim(A.TableName) objectName, '' description
  248. FROM dbc.tablesV A
  249. WHERE A.DatabaseName = '<relmd:schemaSubstitution/>'
  250. AND A.TableKind = 'F'
  251. ORDER BY objectName
  252. </relmd:schemaGrainSql>
  253. </relmd:functionsBrowseRules>
  254. <relmd:objectListingsRules>
  255. <relmd:sql>select '' parentCatalog, A.DatabaseName parentSchema, A.TableName objectName, CASE A.TableKind WHEN 'T' then 'table' WHEN 'M' then 'table' WHEN 'V' THEN 'view' WHEN 'P' then 'procedure' WHEN 'F' THEN 'function' END objectType, '' description from dbc.tablesV A WHERE A.TableKind in ('V','M', 'T', 'P', 'F')
  256. order by parentSchema, objectName</relmd:sql>
  257. </relmd:objectListingsRules>
  258. <relmd:driverClass relmd:className="com.ncr.teradata.TeraDriver"/>
  259. </relmd:vendorRules>