[
https://issues.apache.org/jira/browse/PHOENIX-1835?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14503833#comment-14503833
]
James Taylor edited comment on PHOENIX-1835 at 4/21/15 7:31 PM:
----------------------------------------------------------------
FYI, Tephra doesn't support reads over multiple versions currently (see
TEPHRA-88), so until they do we should just raise an exception if a
transactional table is queried when there's a CURRENT_SCN specified on the
connection. For now, let's just implement PHOENIX-1898 to detect and throw
instead.
was (Author: jamestaylor):
FYI, Tephra doesn't support reads over multiple versions currently (see
TEPHRA-88), so until they do we should just raise an exception if a
transactional table is queried when there's a CURRENT_SCN specified on the
connection.
> Adjust MetaDataEndPointImpl timestamps if table is transactional
> ----------------------------------------------------------------
>
> Key: PHOENIX-1835
> URL: https://issues.apache.org/jira/browse/PHOENIX-1835
> Project: Phoenix
> Issue Type: Sub-task
> Reporter: James Taylor
> Assignee: Thomas D'Silva
>
> Phoenix correlates table metadata with the table data based on timestamp.
> Since Tephra is adjusting timestamps for the data, we need to do the same for
> the metadata operations (which aren't transactional through Tephra). Take a
> look at MetaDataEndPointImpl and the MetaDataMutationResult where we return
> the server timestamp (i.e. MetaDataMutationResult.getTable() for example).
> This timestamp should be run through the TransactionUtil.translateTimestamp()
> method).
> Add a point-in-time test with a table being altered, but your connection
> being before that time (with CURRENT_SCN) as a test. We'll need to make sure
> the Puts to the SYSTEM.CATALOG get timestamped correctly (but I think the
> above will cause that).
> Also, my other hack in PostDDLCompiler, should not be necessary after this:
> {code}
> // FIXME: DDL operations aren't transactional, so
> we're basing the timestamp on a server timestamp.
> // Not sure what the fix should be. We don't need
> conflict detection nor filtering of invalid transactions
> // in this case, so maybe this is ok.
> if (tableRef.getTable().isTransactional()) {
> ts = TransactionUtil.translateMillis(ts);
> }
> {code}
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)