]
Steve Tran commented on TEIID-3827:
-----------------------------------
After a lot of trial and error, we can close this ticket out as invalid.
I misunderstood what the Multi-source checkbox did on the VDB, which lead to the original
error. My real issue was not using the XA datasources correctly. I have VDB inserting
into two different databases now, with rollback if something erred. Pretty sweet.
I'll try to clean this up and submit it as an example since I didn't see many
examples of this - if anyone thinks it's a good idea. Otherwise, thanks for your
help.
multi-source view insert throwing TEIID30492 error
--------------------------------------------------
Key: TEIID-3827
URL:
https://issues.jboss.org/browse/TEIID-3827
Project: Teiid
Issue Type: Bug
Affects Versions: 8.7.3
Environment: Red Hat JBoss Data Virtualization 6.2 on EAP6.4.0 patched to version
6.4.3,
JBoss Developer Studio 8.1.0GA with Teiid Designer plugin
9.0.3.Final.v20150810-1438-B1157
MySQL 5.7 and Postgres 9.4
64-bit Windows 7 environment
Reporter: Steve Tran
Assignee: Steven Hawkins
Attachments: joined_vdb.vdb
I'm trying to POC this multi-source INSERT. I have a MySQL DB and Postgres DB on my
local machine. Added the drivers, datasource, and created a VBL with 1:1 mapping to my
test tables. I created an EBL that is a join of my two tables. Both VBLs and EBL are set
to support updates. I'm trying to work through this error.
{quote}
insert into "Joined_EBL"."joined2"(idtestm, randomstring, idtestp,
randomint) values(0, 'randomstring', 0, 12345)
org.teiid.runtime.client.TeiidClientException:
org.teiid.api.exception.query.QueryValidatorException: Remote TEIID30492 A multi-source
table, Joined_EBL.joined2, cannot be used in an INSERT with query expression or SELECT
INTO statement.
{quote}
I updated my INSERT tab on the EBL transformation page with the following.
{code}FOR EACH ROW
BEGIN ATOMIC
INSERT INTO Postgres_VBL.testp (Postgres_VBL.testp.idtestp, Postgres_VBL.testp.randomint)
VALUES (0, "NEW".randomint);
INSERT INTO MySQL_VBL.testm (MySQL_VBL.testm.idtestm, MySQL_VBL.testm.randomstring)
VALUES (0, "NEW".randomstring);
END
{code}
Postgres table
{code}
CREATE TABLE testp
(
idtestp integer NOT NULL,
randomint integer,
CONSTRAINT pk_id PRIMARY KEY (idtestp)
)
WITH (
OIDS=FALSE
);
ALTER TABLE testp
OWNER TO postgres;
{code}
MySQL table
{code}
CREATE TABLE `testm` (
`idtestm` int(11) NOT NULL AUTO_INCREMENT,
`randomstring` varchar(45) DEFAULT NULL,
PRIMARY KEY (`idtestm`),
UNIQUE KEY `idtestm_UNIQUE` (`idtestm`)
) ENGINE=InnoDB DEFAULT CHARSET=tis620;
{code}