I added a new record in hbase (programatically) via
val row = new Put(rowKey, hTimestamp)
and via hbase shell
put 't1', 'r1', 'c1', 'value', 1470412800000
with a future timestamp.
In both instances, in Phoenix CLI, it doesn't show the record. But there's a record in HBase.
Is it not supported in Phoenix?
This is by design; Phoenix queries, through JDBC and presumably the CLI, use the current timestamp by default as the maximum timestamp associated with a HBase record. This is how Phoenix allows for retrieval of multi-versioned records.
See https://phoenix.apache.org/faq.html#Can_phoenix_work_on_tables_with_arbitrary_timestamp_as_flexible_as_HBase_API for how to modify the "current timestamp" of the Phoenix connection - if you set this to a timestamp after your future timestamp value, you'll be able to retrieve your future-dated record. Presumably the CurrentSCN value can be supplied to the CLI as well?