]
Johnathon Lee updated TEIID-4732:
---------------------------------
Fix Version/s: 8.7.12.6_2
Teiid Server does not honor columns name in external materialization
--------------------------------------------------------------------
Key: TEIID-4732
URL:
https://issues.jboss.org/browse/TEIID-4732
Project: Teiid
Issue Type: Bug
Components: Common
Affects Versions: 9.1.2
Environment: * WildFly 10
* Teiid Server 9.1.2
* CentOs 7
* MySQL 5.6.35
Reporter: Pedro InĂ¡cio
Assignee: Steven Hawkins
Fix For: 9.0.6, 9.1.3, 8.7.12.6_2
Attachments: NumberingPlan.csv, externalMaterializationOrderProblem-vdb.xml,
mySqlCreateTable.sql, numberingPlan-vdb.xml
When defining a View with external materialization, if the view does not specify the
columns in the same order as they are defined in the Materialized Table, Teiid Server
inserts data in the wrong columns (in the order that is defined in the view). It appears
that Teiid Server does not use the columns names but instead uses the column indexes.
Example:
If the view is defined like this:
{code:sql}
CREATE VIEW my_view (
cns varchar(400),
country_code varchar(400)
)
{code}
And the tables in the database are defined like this:
{code:sql}
CREATE TABLE my_view_cache_staging (
country_code VARCHAR(400),
cns VARCHAR(400)
);
CREATE TABLE my_view_cache (
country_code VARCHAR(400),
cns VARCHAR(400)
);
{code}
Then when loadMatView runs, it will insert in country_code column in database the values
from cns (view) and in cns column in database the values from country_code (view).
But if the view is defined like this:
{code:sql}
CREATE VIEW my_view (
country_code varchar(400),
cns varchar(400)
)
{code}
Then Teiid will insert the data "correctly".
It appears that loadMatView is using indexes instead of column names to insert the data.