[ https://issues.apache.org/jira/browse/PHOENIX-1160?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
James Taylor reopened PHOENIX-1160: ----------------------------------- Reopening since declaring an index as immutable would have the same perf benefit as with immutable tables - there'd be no need to look up the old row and issue a delete. We have users that are relying on this already, but by declaring a table as immutable while allowing it to mutate (which works if you avoid certain features, but is a bad practice). > Allow mix of immutable and mutable indexes on the same table > ------------------------------------------------------------ > > Key: PHOENIX-1160 > URL: https://issues.apache.org/jira/browse/PHOENIX-1160 > Project: Phoenix > Issue Type: Improvement > Reporter: James Taylor > > Currently, a table must be marked as immutable, through the > IMMUTABLE_ROWS=true property specified at creation time. In this case, all > indexes added to the table are immutable, while without this property, all > indexes are mutable. > Instead, we should support a mix of immutable and mutable indexes. We already > have an INDEX_TYPE field on our metadata row. We can add a new IMMUTABLE > keyword and specify an index is immutable like this: > {code} > CREATE IMMUTABLE INDEX foo ON bar(c2, c1); > {code} > It would be up to the application developer to ensure that only columns that > don't mutate are part of an immutable index (we already rely on this anyway). > Related to this is support for deletion of rows when a table has an immutable > index (PHOENIX-619). In this JIRA, we'd throw an exception if a DELETE > statement filters on any columns that aren't contained in *all* immutable > indexes for that table. We currently disallow *any* DELETE on a table that's > marked as immutable. -- This message was sent by Atlassian JIRA (v6.4.14#64029)