[ 
https://issues.apache.org/jira/browse/PHOENIX-1674?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15005518#comment-15005518
 ] 

ASF GitHub Bot commented on PHOENIX-1674:
-----------------------------------------

Github user JamesRTaylor commented on a diff in the pull request:

    https://github.com/apache/phoenix/pull/127#discussion_r44861647
  
    --- Diff: 
phoenix-core/src/main/java/org/apache/phoenix/schema/MetaDataClient.java ---
    @@ -415,24 +425,47 @@ private long getClientTimeStamp() {
             long clientTimeStamp = scn == null ? HConstants.LATEST_TIMESTAMP : 
scn;
             return clientTimeStamp;
         }
    -
    +    
    +    private long getCurrentScn() {
    +           Long scn = connection.getSCN();
    +        long currentScn = scn == null ? HConstants.LATEST_TIMESTAMP : scn;
    +        return currentScn;
    +    }
    +    
         private MetaDataMutationResult updateCache(PName tenantId, String 
schemaName, String tableName,
    -            boolean alwaysHitServer) throws SQLException { // TODO: pass 
byte[] herez
    -        long clientTimeStamp = getClientTimeStamp();
    +            boolean alwaysHitServer, Long resolvedTimestamp) throws 
SQLException { // TODO: pass byte[] herez
             boolean systemTable = SYSTEM_CATALOG_SCHEMA.equals(schemaName);
             // System tables must always have a null tenantId
             tenantId = systemTable ? null : tenantId;
             PTable table = null;
    +        PTableRef tableRef = null;
             String fullTableName = SchemaUtil.getTableName(schemaName, 
tableName);
             long tableTimestamp = HConstants.LATEST_TIMESTAMP;
    +        long tableResolvedTimestamp = HConstants.LATEST_TIMESTAMP;
             try {
    -            table = connection.getTable(new PTableKey(tenantId, 
fullTableName));
    +            tableRef = connection.getTableRef(new PTableKey(tenantId, 
fullTableName));
    +            table = tableRef.getTable();
                 tableTimestamp = table.getTimeStamp();
    +            tableResolvedTimestamp = tableRef.getResolvedTimeStamp();
             } catch (TableNotFoundException e) {
             }
    -        // Don't bother with server call: we can't possibly find a newer 
table
    -        if (table != null && !alwaysHitServer && (systemTable || 
tableTimestamp == clientTimeStamp - 1)) {
    -            return new 
MetaDataMutationResult(MutationCode.TABLE_ALREADY_EXISTS,QueryConstants.UNSET_TIMESTAMP,table);
    +        
    --- End diff --
    
    Another idea for CURRENT_DATE() against transactional tables - just do a 
checkpoint prior to running the statement. That way you can consistently use 
the write pointer as the current time.


> Snapshot isolation transaction support through Tephra
> -----------------------------------------------------
>
>                 Key: PHOENIX-1674
>                 URL: https://issues.apache.org/jira/browse/PHOENIX-1674
>             Project: Phoenix
>          Issue Type: Improvement
>            Reporter: James Taylor
>              Labels: SFDC
>
> Tephra (http://tephra.io/ and https://github.com/caskdata/tephra) is one 
> option for getting transaction support in Phoenix. Let's use this JIRA to 
> discuss the way in which this could be integrated along with the pros and 
> cons.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to