You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@phoenix.apache.org by "James Taylor (JIRA)" <ji...@apache.org> on 2015/04/21 21:32:00 UTC

[jira] [Comment Edited] (PHOENIX-1835) Adjust MetaDataEndPointImpl timestamps if table is transactional

    [ 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)