All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.bigdata.btree.ITupleCursor2 Maven / Gradle / Ivy

/*

Copyright (C) SYSTAP, LLC DBA Blazegraph 2006-2016.  All rights reserved.

Contact:
     SYSTAP, LLC DBA Blazegraph
     2501 Calvert ST NW #106
     Washington, DC 20008
     [email protected]

This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; version 2 of the License.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA

*/
/*
 * Created on Aug 9, 2008
 */

package com.bigdata.btree;

/**
 * Extended interface.
 * 

* When {@link #first()}, {@link #last()}, or * {@link ITupleCursor#seek(byte[])} return null it is an * indication that there is no visitable tuple in the index corresponding to * that request. Likewise {@link #tuple()} will return null if * the cursor position does not correspond to a tuple in the index or if the * tuple at that cursor position has since been deleted. * * @author Bryan Thompson * @version $Id$ */ public interface ITupleCursor2 extends ITupleCursor { /** * The optional inclusive lower bound imposed by the {@link ITupleCursor}. */ byte[] getFromKey(); /** * The optional exclusive upper bound imposed by the {@link ITupleCursor}. */ byte[] getToKey(); /** * Return true if the cursor is willing to visit deleted * tuples. In order to observe deleted tuples the index must have been * provisioned with support for delete markers enabled. *

* Note: When delete markers are enabled in the index and a tuple is * deleted, the tuple is NOT removed from the index. Instead a "delete" * marker is set and the value associated with the key is cleared to * null. * * @see IndexMetadata#getDeleteMarkers() */ public boolean isDeletedTupleVisitor(); /** * Return true if the cursor position is defined. *

* Note: Use {@link #currentKey()} to obtain the key corresponding to the * current cursor position and {@link #tuple()} to obtain the visitable * tuple in the index corresponding to that cursor position (if any). */ boolean isCursorPositionDefined(); /** * Return the key corresponding to the current cursor position (even if * there is no tuple in the index for that key). * * @return The key corresponding to the current current position -or- * null iff the cursor position is undefined. */ byte[] currentKey(); /** * Position the cursor on the first visitable tuple in the natural index * order for the index or index partition over which the cursor is defined. * If there are no visitable tuples then the cursor position will be * undefined. * * @return The current tuple -or- null iff there is no * visitable tuple corresponding to the current cursor position. */ ITuple first(); /** * Position the cursor on the last visitable tuple in the natural index * order for the index or index partition over which the cursor is defined. * If there are no visitable tuples then the cursor position will be * undefined. * * @return true if the cursor was positioned on a tuple. */ ITuple last(); /** * The tuple reflecting the data in the index at the current cursor * position. * * @return The tuple associated with the current cursor position -or- * null either if there is no visitable tuple * corresponding to the current cursor position or if the current * cursor position is undefined. */ ITuple tuple(); /** * Position the cursor on the first visitable tuple ordered greater than the * current cursor position in the natural key order of the index and return * that tuple. * * @return The tuple -or- null iff there is no such visitable * tuple. */ ITuple nextTuple(); /** * Position the cursor on the first visitable tuple ordered less than the * current cursor position in the natural key order of the index and return * that tuple. * * @return The tuple -or- null iff there is no such visitable * tuple. */ ITuple priorTuple(); // /** // * Change the half-open range for the cursor. This can be useful if you want // * to perform a series of key-range scans. If the {@link #currentKey()} is // * no longer within the bounds for the cursor it will not be on a visitable // * tuple after invoking this method and you must {@link #seek(byte[])} to a // * key in the new half-open range before you can use the sequential access // * methods or visit the current tuple. // *

// * Note: The bounds may be constrained or relaxed, but never relaxed beyond // * those given when the cursor was provisioned. For example, if you // * initially specify neither a lower bound nor an upper bound then the // * bounds may be set to any half-open range. However, if there is a lower // * bound then you can never shift the lower bound to a lessor value so as to // * expose additional keys. Likewise, if there is an upper bound then you can // * never shift the upper bound to a greater value so as to expose additional // * keys. // * // * @param fromKey // * The optional inclusive lower bound imposed by the // * {@link ITupleCursor}. // * @param toKey // * The optional exclusive upper bound imposed by the // * {@link ITupleCursor}. // */ // void bounds(byte[] fromKey, byte[] toKey); }





© 2015 - 2025 Weber Informatics LLC | Privacy Policy