[
https://issues.jboss.org/browse/TEIID-3621?page=com.atlassian.jira.plugin...
]
Kylin Soong commented on TEIID-3621:
------------------------------------
For each Table in Phoenix, it have to contain a primary key, the PK are indexed and used
to map with HBase table row id, but it not related with unique constraint, what this is a
little bit difference with PK in RDBMS. Also each UPSERT relate with a PK column.
Do we need define a pk to map to Phoenix table's pk? I removed the pk validation
logic, probably we need add a note to document that HBase translator are limited in
INSERT/UPDATE.
HBase translator - UPDATE statement requires primary key
--------------------------------------------------------
Key: TEIID-3621
URL:
https://issues.jboss.org/browse/TEIID-3621
Project: Teiid
Issue Type: Bug
Affects Versions: 8.7.1.6_2
Environment: Hbase: 1.1.1
Phoenix: 4.5.0-HBase-1.1
Reporter: Juraj DurĂ¡ni
Assignee: Kylin Soong
The HBase translator requires table to have a primary key defined. Is the PK really
needed? If the table has no PK defined, then all columns are PK. E.g. query *UPDATE
hbase.SmallA SET StringNum = '555' WHERE hbase.SmallA.StringNum IS NULL* is
translated as *UPSERT INTO smalla (stringnum, intkey) SELECT '555', smalla.intkey
FROM smalla WHERE smalla.stringnum IS NULL* (intkey is PK). Teiid can simply add all
columns (except those defined in 'SET').
Yes, I know that HBase requires the PK to be defined, but what happen if a user decide to
change PK in VDB [1]? It could be a problem whether PK is in VDB defined or not.
I suggest to add a hbase-translator-specific execution property which define PK in the
source table and remove AssertionError [2].
[1]
*HBase table:* create table mytable(id integer primary key, nickname varchar(1))
*Teiid table:* create table mytable(id integer, username varchar(1) primary key)
Both, id and username, are valid PK (artificial/natural).
[2]
https://github.com/teiid/teiid/blob/master/connectors/translator-hbase/sr...
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)