phoenix-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Alex Loffler <>
Subject RE: Setting a TTL in an upsert
Date Wed, 23 Sep 2015 16:08:25 GMT

Thanks for the response – would this be a viable feature request? We’re moving from using
raw HBase to Phoenix and would like to use this ‘countdown’ feature to allow for different
rows in the same table to have different retention times. Instead of having to index a user
created TTL column and create a script to manually garbage collect the stale rows, we could
continue to leverage HBase’s TTL mechanism to automatically exclude the rows and physically
delete them on the next major compaction.

>From the documentation, Phoenix supports TTL on secondary indexes as long as they are
created with the same value as the base table, which would be perfect!


From: Yuhao Bi [] 
Sent: September 23, 2015 00:31
To: user
Subject: Re: Setting a TTL in an upsert


As I know, we can only set a ttl in create table stage corresponding to HBase table ttl.

CREATE TABLE IF NOT EXISTS my_schema.my_table (
    org_id CHAR(15), entity_id CHAR(15), payload binary(1000),
    CONSTRAINT pk PRIMARY KEY (org_id, entity_id) )
See <>
 for more grammar detail.


2015-09-23 15:11 GMT+08:00 Alex Loffler <>:
Is it possible to define the TTL of a row (or even each cell in the row) during an upsert
upsert into test values(1,2,3) TTL=1442988643355;
Assuming the table has a TTL this would allow per-row retention policies (with automatic garbage-collection
by HBase) by e.g. setting the upsert TTL to a time in the future.
For example if the TTL on the table is set to 60 (seconds), a row with a desired retention
policy of 1 year could be upserted with a TTL=now() + 1 year.
Thanks in advance,

View raw message