Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
 package org.apache.hadoop.hbase.regionserver;
Implementing classes of this interface will be used for the tracking and enforcement of columns and numbers of versions and timeToLive during the course of a Get or Scan operation.

Currently there are two different types of Store/Family-level queries.

 public interface ColumnTracker {

Checks if the column is present in the list of requested columns by returning the match code instance. It does not check against the number of versions for the columns asked for. To do the version check, one has to call checkVersions(byte[],int,int,long,byte,boolean) method based on the return type (INCLUDE) of this method. The values that can be returned by this method are ScanQueryMatcher.MatchCode.INCLUDE, ScanQueryMatcher.MatchCode.SEEK_NEXT_COL and ScanQueryMatcher.MatchCode.SEEK_NEXT_ROW.

type The type of the KeyValue
The match code instance.
Throws: in case there is an internal consistency problem caused by a data corruption.
   ScanQueryMatcher.MatchCode checkColumn(byte[] bytesint offsetint lengthbyte type)
       throws IOException;

Keeps track of the number of versions for the columns asked for. It assumes that the user has already checked if the keyvalue needs to be included by calling the checkColumn(byte[],int,int,byte) method. The enum values returned by this method are ScanQueryMatcher.MatchCode.SKIP, ScanQueryMatcher.MatchCode.INCLUDE, ScanQueryMatcher.MatchCode.INCLUDE_AND_SEEK_NEXT_COL and ScanQueryMatcher.MatchCode.INCLUDE_AND_SEEK_NEXT_ROW. Implementations which include all the columns could just return ScanQueryMatcher.MatchCode.INCLUDE in the checkColumn(byte[],int,int,byte) method and perform all the operations in this checkVersions method.

type the type of the key value (Put/Delete)
ttl The timeToLive to enforce.
ignoreCount indicates if the KV needs to be excluded while counting (used during compactions. We only count KV's that are older than all the scanners' read points.)
the scan query matcher match code instance
Throws: in case there is an internal consistency problem caused by a data corruption.
   ScanQueryMatcher.MatchCode checkVersions(byte[] bytesint offsetint lengthlong ttl,
       byte typeboolean ignoreCountthrows IOException;
Resets the Matcher
   void reset();


true when done.
   boolean done();

Used by matcher and scan/get to get a hint of the next column to seek to after checkColumn() returns SKIP. Returns the next interesting column we want, or NULL there is none (wildcard scanner). Implementations aren't required to return anything useful unless the most recent call was to checkColumn() and the return code was SKIP. This is pretty implementation detail-y, but optimizations are like that.

null, or a ColumnCount that we should seek to
Retrieve the MatchCode for the next row or column
    byte[] bytesint offsetint qualLength

Give the tracker a chance to declare it's done based on only the timestamp to allow an early out.

true to early out based on timestamp.
  boolean isDone(long timestamp);
New to GrepCode? Check out our FAQ X