Create table/index option with HBASE_OPTIONS (COMPRESSION = '<val>') does not work well when <val> is a compression option that is not installed or enabled for HBase on the cluster. The 5 allowed values are GZ, LZO, LZ4, NONE, SNAPPY. If one of the 4 allowed compression settings is either not installed or available to HBase, then while creating a table it can either
a) hang or take a long time to error out OR
b) succeed, but have problems while inserting rows later.
Non-existent compression library should be detected early and CREATE statement should error out. Same is true for ALTER table.
As suggested by Dave in review comments to the previous PR, following fixes are added to the JIRA
1) Better validation of HBASE_OPTIONS attribute values (COMPRESSION = 'SNAP' will now raise an error early in execution, before we get to Java)
2) Specifying the same attribute twice will cause an error to be raised
3) Error SQLCODE for incorrect attribute/value is changed from 8448 to 8449 for all errors originating in C++ side. Value of attribute is part of message string
4) Two more attributes (CACHE_DATA_IN_L1, PREFETCH_BLOCKS_ON_OPEN) can now be specified in HBASE_OPTIONS. seabase/test002 has an example with all options that are supported.