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

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

package com.bigdata.btree;

import com.bigdata.util.BytesUtil;

/**
 * Utility class to dump an index in a variety of ways.
 * 
 * @author thompsonbry
 * 
 *         FIXME GIST : Generalize this for non-B+Tree indices.
 * 
 * @see  GIST
 *      
 * */
public class DumpIndex {

	/**
	 * Utility method using an {@link ITupleIterator} to dump the keys and
	 * values in an {@link AbstractBTree}.
	 * 
	 * @param ndx
	 *            The index.
	 * @param showTuples
	 *            When true the data for the keys and values will
	 *            be displayed. Otherwise the scan will simply exercise the
	 *            iterator.
	 */
	public static void dumpIndex(final AbstractBTree ndx,
			final boolean showTuples) {

		// Note: reused for each tuple to avoid heap churn.
		final StringBuilder sb = new StringBuilder();

		// @todo offer the version metadata also if the index supports
		// isolation.
		final ITupleIterator itr = ndx.rangeIterator(null, null);

		final long begin = System.currentTimeMillis();

		int i = 0;

		while (itr.hasNext()) {

			final ITuple tuple = itr.next();

			if (showTuples) {

				dumpTuple(i, sb, tuple);

			}

			i++;

		}

		final long elapsed = System.currentTimeMillis() - begin;

		System.out.println("Visited " + i + " tuples in " + elapsed + "ms");

	}

	private static void dumpTuple(final int recno, final StringBuilder tupleSB,
			final ITuple tuple) {

		final ITupleSerializer tupleSer = tuple.getTupleSerializer();

		tupleSB.setLength(0); // reset.

		tupleSB.append("rec=" + recno);

		try {

			tupleSB.append("\nkey=" + tupleSer.deserializeKey(tuple));

		} catch (Throwable t) {

			tupleSB.append("\nkey=" + BytesUtil.toString(tuple.getKey()));

		}

		try {

			tupleSB.append("\nval=" + tupleSer.deserialize(tuple));

		} catch (Throwable t) {

			tupleSB.append("\nval=" + BytesUtil.toString(tuple.getValue()));

		}

		System.out.println(tupleSB);

	}

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy