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

Reply via email to