HBase translator - boolean and biginteger values are not translated
correctly
-----------------------------------------------------------------------------
Key: TEIID-3623
URL:
https://issues.jboss.org/browse/TEIID-3623
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: Steven Hawkins
Fix For: 8.7.1.6_2, 8.12
Attachments: insert_biginteger.log, inser_boolean.log
*1. Boolean values:* The Teiid translates the value true/false as 1/0, but HBase does not
support integer representation of boolean values [1].
*2. BigInteger values ( <= -2):* Teiid's bigInteger data type is wider than
HBase's bigint (as wide as long) type, so it make sense to define column in HBase as
e.g. _decimal(30,0)_ and map it to Teiid's biginteger type.
From Teiid's point of view: There is no problem if inserted value is greater than or
equal to -1. But if the value is less than -1, then a ClassCastException is thrown [2].
Phoenix driver require something like "UPSERT INTO smalla (intkey, bigintegervalue)
VALUES (1, -10 *.0*)"
[1]
*Query:* insert into hbase.smalla (intkey, booleanvalue) values (55, true)
*Column definition:*
- source: booleanvalue boolean
- VDB: BooleanValue boolean OPTIONS (nameinsource 'booleanvalue', NATIVE_TYPE
'boolean')
*Stack trace:*
insert_boolean.log
[2]
*Query:* insert into hbase.smalla (intkey, bigintegervalue) values (55, -10)
*Column definition:*
- source: bigintegervalue decimal(20,0)
- VDB: BigIntegerValue biginteger OPTIONS (nameinsource 'bigintegervalue',
NATIVE_TYPE 'decimal')
*Stack trace:*
insert_biginteger.log