[teiid-issues] [JBoss JIRA] (TEIID-4706) PrestoDBMetadataProcessor load metadata failed due to Duplicate Table

Steven Hawkins (JIRA) issues at jboss.org
Thu Jan 19 12:55:00 EST 2017


    [ https://issues.jboss.org/browse/TEIID-4706?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13351285#comment-13351285 ] 

Steven Hawkins commented on TEIID-4706:
---------------------------------------

In a situation like this we can recommend several things:

use a teiid importing option that will use fully qualified teiid/source names
use specific filtering, such as excluding their information_schema

This could just be documented rather than hard coded.

> PrestoDBMetadataProcessor load metadata failed due to Duplicate Table
> ---------------------------------------------------------------------
>
>                 Key: TEIID-4706
>                 URL: https://issues.jboss.org/browse/TEIID-4706
>             Project: Teiid
>          Issue Type: Bug
>          Components: Misc. Connectors
>    Affects Versions: 9.2
>         Environment: Scenario one
> * Presto 0.163 with one mysql catalog added
> * Teiid 9.2.0.Beta2-SNAPSHOT in embedded mode
> Scenario two
> * Presto 0.162 with one mysql catalog added(QE test environment)
> * Teiid 9.2.0.Beta2-SNAPSHOT server
>            Reporter: Kylin Soong
>            Assignee: Kylin Soong
>         Attachments: TEIID4682Presto.java, module.zip, teiid4682-server-vdb.xml, teiid4682-vdb.xml
>
>
> PrestoDBMetadataProcessor use 'SHOW CATALOGS', 'SHOW TABLES FROM ...'  to load tables from presto,  presto default has a system catalog, in my test I only add one mysql catalog
> {code}
> SQL: SHOW CATALOGS
> +---------+
> | Catalog |
> +---------+
> | mysql   |
> | system  |
> +---------+
> {code}
> Note that both mysql and system has schema: *information_schema*:
> {code}
> SQL: SHOW SCHEMAS FROM mysql
> +--------------------+
> |       Schema       |
> +--------------------+
> | information_schema |
> | teiid              |
> +--------------------+
> SQL: SHOW SCHEMAS FROM system
> +--------------------+
> |       Schema       |
> +--------------------+
> | information_schema |
> | jdbc               |
> | metadata           |
> | runtime            |
> +--------------------+
> {code}
> Schema in different catalog contain the same tables
> {code}
> SQL: SHOW TABLES FROM mysql.information_schema
> +-------------------------+
> |          Table          |
> +-------------------------+
> | __internal_partitions__ |
> | columns                 |
> | schemata                |
> | tables                  |
> | views                   |
> +-------------------------+
> SQL: SHOW TABLES FROM system.information_schema
> +-------------------------+
> |          Table          |
> +-------------------------+
> | __internal_partitions__ |
> | columns                 |
> | schemata                |
> | tables                  |
> | views                   |
> +-------------------------+
> {code}
> Due the table name in both system.information_schema and mysql.information_schema has same table name, the *TEIID60013 Duplicate Table* through
> {code}
> Exception in thread "main" org.teiid.metadata.DuplicateRecordException: TEIID60013 Duplicate Table __internal_partitions__
> 	at org.teiid.metadata.Schema.addTable(Schema.java:49)
> 	at org.teiid.metadata.MetadataFactory.addTable(MetadataFactory.java:231)
> 	at org.teiid.translator.jdbc.JDBCMetdataProcessor.addTable(JDBCMetdataProcessor.java:368)
> 	at org.teiid.translator.prestodb.PrestoDBMetadataProcessor.addTable(PrestoDBMetadataProcessor.java:147)
> 	at org.teiid.translator.prestodb.PrestoDBMetadataProcessor.getConnectorMetadata(PrestoDBMetadataProcessor.java:74)
> 	at org.teiid.translator.jdbc.JDBCExecutionFactory.getMetadata(JDBCExecutionFactory.java:306)
> 	at org.teiid.translator.jdbc.JDBCExecutionFactory.getMetadata(JDBCExecutionFactory.java:69)
> 	at org.teiid.query.metadata.NativeMetadataRepository.getMetadata(NativeMetadataRepository.java:96)
> 	at org.teiid.query.metadata.NativeMetadataRepository.loadMetadata(NativeMetadataRepository.java:62)
> 	at org.teiid.query.metadata.ChainingMetadataRepository.loadMetadata(ChainingMetadataRepository.java:55)
> 	at org.teiid.runtime.EmbeddedServer.loadMetadata(EmbeddedServer.java:816)
> 	at org.teiid.runtime.AbstractVDBDeployer.loadMetadata(AbstractVDBDeployer.java:210)
> 	at org.teiid.runtime.EmbeddedServer.deployVDB(EmbeddedServer.java:766)
> 	at org.teiid.runtime.EmbeddedServer.deployVDB(EmbeddedServer.java:707)
> 	at org.teiid.test.teiid4699.TEIID4682Presto.main(TEIID4682Presto.java:41)
> {code}



--
This message was sent by Atlassian JIRA
(v7.2.3#72005)



More information about the teiid-issues mailing list