http://git-wip-us.apache.org/repos/asf/hbase-site/blob/991224b9/devapidocs/src-html/org/apache/hadoop/hbase/PrivateCellUtil.EmptyByteBufferExtendedCell.html ---------------------------------------------------------------------- diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/PrivateCellUtil.EmptyByteBufferExtendedCell.html b/devapidocs/src-html/org/apache/hadoop/hbase/PrivateCellUtil.EmptyByteBufferExtendedCell.html index d143ef8..4583895 100644 --- a/devapidocs/src-html/org/apache/hadoop/hbase/PrivateCellUtil.EmptyByteBufferExtendedCell.html +++ b/devapidocs/src-html/org/apache/hadoop/hbase/PrivateCellUtil.EmptyByteBufferExtendedCell.html @@ -258,7 +258,7 @@ <span class="sourceLineNo">250</span><a name="line.250"></a> <span class="sourceLineNo">251</span> @Override<a name="line.251"></a> <span class="sourceLineNo">252</span> public long heapSize() {<a name="line.252"></a> -<span class="sourceLineNo">253</span> long sum = HEAP_SIZE_OVERHEAD + estimatedHeapSizeOf(cell);<a name="line.253"></a> +<span class="sourceLineNo">253</span> long sum = HEAP_SIZE_OVERHEAD + estimatedSizeOfCell(cell);<a name="line.253"></a> <span class="sourceLineNo">254</span> if (this.tags != null) {<a name="line.254"></a> <span class="sourceLineNo">255</span> sum += ClassSize.sizeOf(this.tags);<a name="line.255"></a> <span class="sourceLineNo">256</span> }<a name="line.256"></a> @@ -454,7 +454,7 @@ <span class="sourceLineNo">446</span><a name="line.446"></a> <span class="sourceLineNo">447</span> @Override<a name="line.447"></a> <span class="sourceLineNo">448</span> public long heapSize() {<a name="line.448"></a> -<span class="sourceLineNo">449</span> long sum = HEAP_SIZE_OVERHEAD + estimatedHeapSizeOf(cell);<a name="line.449"></a> +<span class="sourceLineNo">449</span> long sum = HEAP_SIZE_OVERHEAD + estimatedSizeOfCell(cell);<a name="line.449"></a> <span class="sourceLineNo">450</span> // this.tags is on heap byte[]<a name="line.450"></a> <span class="sourceLineNo">451</span> if (this.tags != null) {<a name="line.451"></a> <span class="sourceLineNo">452</span> sum += ClassSize.sizeOf(this.tags);<a name="line.452"></a> @@ -2791,192 +2791,193 @@ <span class="sourceLineNo">2783</span> * {@link HeapSize} we call {@link HeapSize#heapSize()} so cell can give a correct value. In other<a name="line.2783"></a> <span class="sourceLineNo">2784</span> * cases we just consider the bytes occupied by the cell components ie. row, CF, qualifier,<a name="line.2784"></a> <span class="sourceLineNo">2785</span> * timestamp, type, value and tags.<a name="line.2785"></a> -<span class="sourceLineNo">2786</span> * @param cell<a name="line.2786"></a> -<span class="sourceLineNo">2787</span> * @return estimate of the heap space<a name="line.2787"></a> -<span class="sourceLineNo">2788</span> */<a name="line.2788"></a> -<span class="sourceLineNo">2789</span> public static long estimatedHeapSizeOf(final Cell cell) {<a name="line.2789"></a> -<span class="sourceLineNo">2790</span> if (cell instanceof HeapSize) {<a name="line.2790"></a> -<span class="sourceLineNo">2791</span> return ((HeapSize) cell).heapSize();<a name="line.2791"></a> -<span class="sourceLineNo">2792</span> }<a name="line.2792"></a> -<span class="sourceLineNo">2793</span> // TODO: Add sizing of references that hold the row, family, etc., arrays.<a name="line.2793"></a> -<span class="sourceLineNo">2794</span> return estimatedSerializedSizeOf(cell);<a name="line.2794"></a> -<span class="sourceLineNo">2795</span> }<a name="line.2795"></a> -<span class="sourceLineNo">2796</span><a name="line.2796"></a> -<span class="sourceLineNo">2797</span> /**<a name="line.2797"></a> -<span class="sourceLineNo">2798</span> * This method exists just to encapsulate how we serialize keys. To be replaced by a factory that<a name="line.2798"></a> -<span class="sourceLineNo">2799</span> * we query to figure what the Cell implementation is and then, what serialization engine to use<a name="line.2799"></a> -<span class="sourceLineNo">2800</span> * and further, how to serialize the key for inclusion in hfile index. TODO.<a name="line.2800"></a> -<span class="sourceLineNo">2801</span> * @param cell<a name="line.2801"></a> -<span class="sourceLineNo">2802</span> * @return The key portion of the Cell serialized in the old-school KeyValue way or null if passed<a name="line.2802"></a> -<span class="sourceLineNo">2803</span> * a null <code>cell</code><a name="line.2803"></a> -<span class="sourceLineNo">2804</span> */<a name="line.2804"></a> -<span class="sourceLineNo">2805</span> public static byte[] getCellKeySerializedAsKeyValueKey(final Cell cell) {<a name="line.2805"></a> -<span class="sourceLineNo">2806</span> if (cell == null) return null;<a name="line.2806"></a> -<span class="sourceLineNo">2807</span> byte[] b = new byte[KeyValueUtil.keyLength(cell)];<a name="line.2807"></a> -<span class="sourceLineNo">2808</span> KeyValueUtil.appendKeyTo(cell, b, 0);<a name="line.2808"></a> -<span class="sourceLineNo">2809</span> return b;<a name="line.2809"></a> -<span class="sourceLineNo">2810</span> }<a name="line.2810"></a> -<span class="sourceLineNo">2811</span><a name="line.2811"></a> -<span class="sourceLineNo">2812</span> /**<a name="line.2812"></a> -<span class="sourceLineNo">2813</span> * Create a Cell that is smaller than all other possible Cells for the given Cell's row.<a name="line.2813"></a> -<span class="sourceLineNo">2814</span> * @param cell<a name="line.2814"></a> -<span class="sourceLineNo">2815</span> * @return First possible Cell on passed Cell's row.<a name="line.2815"></a> -<span class="sourceLineNo">2816</span> */<a name="line.2816"></a> -<span class="sourceLineNo">2817</span> public static Cell createFirstOnRow(final Cell cell) {<a name="line.2817"></a> -<span class="sourceLineNo">2818</span> if (cell instanceof ByteBufferExtendedCell) {<a name="line.2818"></a> -<span class="sourceLineNo">2819</span> return new FirstOnRowByteBufferExtendedCell(<a name="line.2819"></a> -<span class="sourceLineNo">2820</span> ((ByteBufferExtendedCell) cell).getRowByteBuffer(),<a name="line.2820"></a> -<span class="sourceLineNo">2821</span> ((ByteBufferExtendedCell) cell).getRowPosition(), cell.getRowLength());<a name="line.2821"></a> -<span class="sourceLineNo">2822</span> }<a name="line.2822"></a> -<span class="sourceLineNo">2823</span> return new FirstOnRowCell(cell.getRowArray(), cell.getRowOffset(), cell.getRowLength());<a name="line.2823"></a> -<span class="sourceLineNo">2824</span> }<a name="line.2824"></a> -<span class="sourceLineNo">2825</span><a name="line.2825"></a> -<span class="sourceLineNo">2826</span> public static Cell createFirstOnRow(final byte[] row, int roffset, short rlength) {<a name="line.2826"></a> -<span class="sourceLineNo">2827</span> return new FirstOnRowCell(row, roffset, rlength);<a name="line.2827"></a> -<span class="sourceLineNo">2828</span> }<a name="line.2828"></a> -<span class="sourceLineNo">2829</span><a name="line.2829"></a> -<span class="sourceLineNo">2830</span> public static Cell createFirstOnRow(final byte[] row, final byte[] family, final byte[] col) {<a name="line.2830"></a> -<span class="sourceLineNo">2831</span> return createFirstOnRow(row, 0, (short) row.length, family, 0, (byte) family.length, col, 0,<a name="line.2831"></a> -<span class="sourceLineNo">2832</span> col.length);<a name="line.2832"></a> -<span class="sourceLineNo">2833</span> }<a name="line.2833"></a> -<span class="sourceLineNo">2834</span><a name="line.2834"></a> -<span class="sourceLineNo">2835</span> public static Cell createFirstOnRow(final byte[] row, int roffset, short rlength,<a name="line.2835"></a> -<span class="sourceLineNo">2836</span> final byte[] family, int foffset, byte flength, final byte[] col, int coffset, int clength) {<a name="line.2836"></a> -<span class="sourceLineNo">2837</span> return new FirstOnRowColCell(row, roffset, rlength, family, foffset, flength, col, coffset,<a name="line.2837"></a> -<span class="sourceLineNo">2838</span> clength);<a name="line.2838"></a> -<span class="sourceLineNo">2839</span> }<a name="line.2839"></a> -<span class="sourceLineNo">2840</span><a name="line.2840"></a> -<span class="sourceLineNo">2841</span> public static Cell createFirstOnRow(final byte[] row) {<a name="line.2841"></a> -<span class="sourceLineNo">2842</span> return createFirstOnRow(row, 0, (short) row.length);<a name="line.2842"></a> -<span class="sourceLineNo">2843</span> }<a name="line.2843"></a> -<span class="sourceLineNo">2844</span><a name="line.2844"></a> -<span class="sourceLineNo">2845</span> public static Cell createFirstOnRowFamily(Cell cell, byte[] fArray, int foff, int flen) {<a name="line.2845"></a> -<span class="sourceLineNo">2846</span> if (cell instanceof ByteBufferExtendedCell) {<a name="line.2846"></a> -<span class="sourceLineNo">2847</span> return new FirstOnRowColByteBufferExtendedCell(<a name="line.2847"></a> -<span class="sourceLineNo">2848</span> ((ByteBufferExtendedCell) cell).getRowByteBuffer(),<a name="line.2848"></a> -<span class="sourceLineNo">2849</span> ((ByteBufferExtendedCell) cell).getRowPosition(), cell.getRowLength(),<a name="line.2849"></a> -<span class="sourceLineNo">2850</span> ByteBuffer.wrap(fArray), foff, (byte) flen, HConstants.EMPTY_BYTE_BUFFER, 0, 0);<a name="line.2850"></a> -<span class="sourceLineNo">2851</span> }<a name="line.2851"></a> -<span class="sourceLineNo">2852</span> return new FirstOnRowColCell(cell.getRowArray(), cell.getRowOffset(), cell.getRowLength(),<a name="line.2852"></a> -<span class="sourceLineNo">2853</span> fArray, foff, (byte) flen, HConstants.EMPTY_BYTE_ARRAY, 0, 0);<a name="line.2853"></a> -<span class="sourceLineNo">2854</span> }<a name="line.2854"></a> -<span class="sourceLineNo">2855</span><a name="line.2855"></a> -<span class="sourceLineNo">2856</span> public static Cell createFirstOnRowCol(final Cell cell) {<a name="line.2856"></a> -<span class="sourceLineNo">2857</span> if (cell instanceof ByteBufferExtendedCell) {<a name="line.2857"></a> -<span class="sourceLineNo">2858</span> return new FirstOnRowColByteBufferExtendedCell(<a name="line.2858"></a> -<span class="sourceLineNo">2859</span> ((ByteBufferExtendedCell) cell).getRowByteBuffer(),<a name="line.2859"></a> -<span class="sourceLineNo">2860</span> ((ByteBufferExtendedCell) cell).getRowPosition(), cell.getRowLength(),<a name="line.2860"></a> -<span class="sourceLineNo">2861</span> HConstants.EMPTY_BYTE_BUFFER, 0, (byte) 0,<a name="line.2861"></a> -<span class="sourceLineNo">2862</span> ((ByteBufferExtendedCell) cell).getQualifierByteBuffer(),<a name="line.2862"></a> -<span class="sourceLineNo">2863</span> ((ByteBufferExtendedCell) cell).getQualifierPosition(), cell.getQualifierLength());<a name="line.2863"></a> -<span class="sourceLineNo">2864</span> }<a name="line.2864"></a> -<span class="sourceLineNo">2865</span> return new FirstOnRowColCell(cell.getRowArray(), cell.getRowOffset(), cell.getRowLength(),<a name="line.2865"></a> -<span class="sourceLineNo">2866</span> HConstants.EMPTY_BYTE_ARRAY, 0, (byte) 0, cell.getQualifierArray(),<a name="line.2866"></a> -<span class="sourceLineNo">2867</span> cell.getQualifierOffset(), cell.getQualifierLength());<a name="line.2867"></a> -<span class="sourceLineNo">2868</span> }<a name="line.2868"></a> -<span class="sourceLineNo">2869</span><a name="line.2869"></a> -<span class="sourceLineNo">2870</span> public static Cell createFirstOnNextRow(final Cell cell) {<a name="line.2870"></a> -<span class="sourceLineNo">2871</span> byte[] nextRow = new byte[cell.getRowLength() + 1];<a name="line.2871"></a> -<span class="sourceLineNo">2872</span> CellUtil.copyRowTo(cell, nextRow, 0);<a name="line.2872"></a> -<span class="sourceLineNo">2873</span> nextRow[nextRow.length - 1] = 0;// maybe not necessary<a name="line.2873"></a> -<span class="sourceLineNo">2874</span> return new FirstOnRowCell(nextRow, 0, (short) nextRow.length);<a name="line.2874"></a> -<span class="sourceLineNo">2875</span> }<a name="line.2875"></a> -<span class="sourceLineNo">2876</span><a name="line.2876"></a> -<span class="sourceLineNo">2877</span> /**<a name="line.2877"></a> -<span class="sourceLineNo">2878</span> * Create a Cell that is smaller than all other possible Cells for the given Cell's rk:cf and<a name="line.2878"></a> -<span class="sourceLineNo">2879</span> * passed qualifier.<a name="line.2879"></a> -<span class="sourceLineNo">2880</span> * @param cell<a name="line.2880"></a> -<span class="sourceLineNo">2881</span> * @param qArray<a name="line.2881"></a> -<span class="sourceLineNo">2882</span> * @param qoffest<a name="line.2882"></a> -<span class="sourceLineNo">2883</span> * @param qlength<a name="line.2883"></a> -<span class="sourceLineNo">2884</span> * @return Last possible Cell on passed Cell's rk:cf and passed qualifier.<a name="line.2884"></a> -<span class="sourceLineNo">2885</span> */<a name="line.2885"></a> -<span class="sourceLineNo">2886</span> public static Cell createFirstOnRowCol(final Cell cell, byte[] qArray, int qoffest, int qlength) {<a name="line.2886"></a> -<span class="sourceLineNo">2887</span> if (cell instanceof ByteBufferExtendedCell) {<a name="line.2887"></a> -<span class="sourceLineNo">2888</span> return new FirstOnRowColByteBufferExtendedCell(<a name="line.2888"></a> -<span class="sourceLineNo">2889</span> ((ByteBufferExtendedCell) cell).getRowByteBuffer(),<a name="line.2889"></a> -<span class="sourceLineNo">2890</span> ((ByteBufferExtendedCell) cell).getRowPosition(), cell.getRowLength(),<a name="line.2890"></a> -<span class="sourceLineNo">2891</span> ((ByteBufferExtendedCell) cell).getFamilyByteBuffer(),<a name="line.2891"></a> -<span class="sourceLineNo">2892</span> ((ByteBufferExtendedCell) cell).getFamilyPosition(), cell.getFamilyLength(),<a name="line.2892"></a> -<span class="sourceLineNo">2893</span> ByteBuffer.wrap(qArray), qoffest, qlength);<a name="line.2893"></a> -<span class="sourceLineNo">2894</span> }<a name="line.2894"></a> -<span class="sourceLineNo">2895</span> return new FirstOnRowColCell(cell.getRowArray(), cell.getRowOffset(), cell.getRowLength(),<a name="line.2895"></a> -<span class="sourceLineNo">2896</span> cell.getFamilyArray(), cell.getFamilyOffset(), cell.getFamilyLength(), qArray, qoffest,<a name="line.2896"></a> -<span class="sourceLineNo">2897</span> qlength);<a name="line.2897"></a> -<span class="sourceLineNo">2898</span> }<a name="line.2898"></a> -<span class="sourceLineNo">2899</span><a name="line.2899"></a> -<span class="sourceLineNo">2900</span> /**<a name="line.2900"></a> -<span class="sourceLineNo">2901</span> * Creates the first cell with the row/family/qualifier of this cell and the given timestamp. Uses<a name="line.2901"></a> -<span class="sourceLineNo">2902</span> * the "maximum" type that guarantees that the new cell is the lowest possible for this<a name="line.2902"></a> -<span class="sourceLineNo">2903</span> * combination of row, family, qualifier, and timestamp. This cell's own timestamp is ignored.<a name="line.2903"></a> -<span class="sourceLineNo">2904</span> * @param cell - cell<a name="line.2904"></a> -<span class="sourceLineNo">2905</span> * @param ts<a name="line.2905"></a> -<span class="sourceLineNo">2906</span> */<a name="line.2906"></a> -<span class="sourceLineNo">2907</span> public static Cell createFirstOnRowColTS(Cell cell, long ts) {<a name="line.2907"></a> -<span class="sourceLineNo">2908</span> if (cell instanceof ByteBufferExtendedCell) {<a name="line.2908"></a> -<span class="sourceLineNo">2909</span> return new FirstOnRowColTSByteBufferExtendedCell(<a name="line.2909"></a> -<span class="sourceLineNo">2910</span> ((ByteBufferExtendedCell) cell).getRowByteBuffer(),<a name="line.2910"></a> -<span class="sourceLineNo">2911</span> ((ByteBufferExtendedCell) cell).getRowPosition(), cell.getRowLength(),<a name="line.2911"></a> -<span class="sourceLineNo">2912</span> ((ByteBufferExtendedCell) cell).getFamilyByteBuffer(),<a name="line.2912"></a> -<span class="sourceLineNo">2913</span> ((ByteBufferExtendedCell) cell).getFamilyPosition(), cell.getFamilyLength(),<a name="line.2913"></a> -<span class="sourceLineNo">2914</span> ((ByteBufferExtendedCell) cell).getQualifierByteBuffer(),<a name="line.2914"></a> -<span class="sourceLineNo">2915</span> ((ByteBufferExtendedCell) cell).getQualifierPosition(), cell.getQualifierLength(), ts);<a name="line.2915"></a> -<span class="sourceLineNo">2916</span> }<a name="line.2916"></a> -<span class="sourceLineNo">2917</span> return new FirstOnRowColTSCell(cell.getRowArray(), cell.getRowOffset(), cell.getRowLength(),<a name="line.2917"></a> -<span class="sourceLineNo">2918</span> cell.getFamilyArray(), cell.getFamilyOffset(), cell.getFamilyLength(),<a name="line.2918"></a> -<span class="sourceLineNo">2919</span> cell.getQualifierArray(), cell.getQualifierOffset(), cell.getQualifierLength(), ts);<a name="line.2919"></a> -<span class="sourceLineNo">2920</span> }<a name="line.2920"></a> -<span class="sourceLineNo">2921</span><a name="line.2921"></a> -<span class="sourceLineNo">2922</span> /**<a name="line.2922"></a> -<span class="sourceLineNo">2923</span> * Create a Cell that is larger than all other possible Cells for the given Cell's row.<a name="line.2923"></a> -<span class="sourceLineNo">2924</span> * @param cell<a name="line.2924"></a> -<span class="sourceLineNo">2925</span> * @return Last possible Cell on passed Cell's row.<a name="line.2925"></a> -<span class="sourceLineNo">2926</span> */<a name="line.2926"></a> -<span class="sourceLineNo">2927</span> public static Cell createLastOnRow(final Cell cell) {<a name="line.2927"></a> -<span class="sourceLineNo">2928</span> if (cell instanceof ByteBufferExtendedCell) {<a name="line.2928"></a> -<span class="sourceLineNo">2929</span> return new LastOnRowByteBufferExtendedCell(((ByteBufferExtendedCell) cell).getRowByteBuffer(),<a name="line.2929"></a> -<span class="sourceLineNo">2930</span> ((ByteBufferExtendedCell) cell).getRowPosition(), cell.getRowLength());<a name="line.2930"></a> -<span class="sourceLineNo">2931</span> }<a name="line.2931"></a> -<span class="sourceLineNo">2932</span> return new LastOnRowCell(cell.getRowArray(), cell.getRowOffset(), cell.getRowLength());<a name="line.2932"></a> -<span class="sourceLineNo">2933</span> }<a name="line.2933"></a> -<span class="sourceLineNo">2934</span><a name="line.2934"></a> -<span class="sourceLineNo">2935</span> public static Cell createLastOnRow(final byte[] row) {<a name="line.2935"></a> -<span class="sourceLineNo">2936</span> return new LastOnRowCell(row, 0, (short) row.length);<a name="line.2936"></a> -<span class="sourceLineNo">2937</span> }<a name="line.2937"></a> -<span class="sourceLineNo">2938</span><a name="line.2938"></a> -<span class="sourceLineNo">2939</span> /**<a name="line.2939"></a> -<span class="sourceLineNo">2940</span> * Create a Cell that is larger than all other possible Cells for the given Cell's rk:cf:q. Used<a name="line.2940"></a> -<span class="sourceLineNo">2941</span> * in creating "fake keys" for the multi-column Bloom filter optimization to skip the row/column<a name="line.2941"></a> -<span class="sourceLineNo">2942</span> * we already know is not in the file.<a name="line.2942"></a> -<span class="sourceLineNo">2943</span> * @param cell<a name="line.2943"></a> -<span class="sourceLineNo">2944</span> * @return Last possible Cell on passed Cell's rk:cf:q.<a name="line.2944"></a> -<span class="sourceLineNo">2945</span> */<a name="line.2945"></a> -<span class="sourceLineNo">2946</span> public static Cell createLastOnRowCol(final Cell cell) {<a name="line.2946"></a> -<span class="sourceLineNo">2947</span> if (cell instanceof ByteBufferExtendedCell) {<a name="line.2947"></a> -<span class="sourceLineNo">2948</span> return new LastOnRowColByteBufferExtendedCell(<a name="line.2948"></a> -<span class="sourceLineNo">2949</span> ((ByteBufferExtendedCell) cell).getRowByteBuffer(),<a name="line.2949"></a> -<span class="sourceLineNo">2950</span> ((ByteBufferExtendedCell) cell).getRowPosition(), cell.getRowLength(),<a name="line.2950"></a> -<span class="sourceLineNo">2951</span> ((ByteBufferExtendedCell) cell).getFamilyByteBuffer(),<a name="line.2951"></a> -<span class="sourceLineNo">2952</span> ((ByteBufferExtendedCell) cell).getFamilyPosition(), cell.getFamilyLength(),<a name="line.2952"></a> -<span class="sourceLineNo">2953</span> ((ByteBufferExtendedCell) cell).getQualifierByteBuffer(),<a name="line.2953"></a> -<span class="sourceLineNo">2954</span> ((ByteBufferExtendedCell) cell).getQualifierPosition(), cell.getQualifierLength());<a name="line.2954"></a> -<span class="sourceLineNo">2955</span> }<a name="line.2955"></a> -<span class="sourceLineNo">2956</span> return new LastOnRowColCell(cell.getRowArray(), cell.getRowOffset(), cell.getRowLength(),<a name="line.2956"></a> -<span class="sourceLineNo">2957</span> cell.getFamilyArray(), cell.getFamilyOffset(), cell.getFamilyLength(),<a name="line.2957"></a> -<span class="sourceLineNo">2958</span> cell.getQualifierArray(), cell.getQualifierOffset(), cell.getQualifierLength());<a name="line.2958"></a> -<span class="sourceLineNo">2959</span> }<a name="line.2959"></a> -<span class="sourceLineNo">2960</span><a name="line.2960"></a> -<span class="sourceLineNo">2961</span> /**<a name="line.2961"></a> -<span class="sourceLineNo">2962</span> * Create a Delete Family Cell for the specified row and family that would be smaller than all<a name="line.2962"></a> -<span class="sourceLineNo">2963</span> * other possible Delete Family KeyValues that have the same row and family. Used for seeking.<a name="line.2963"></a> -<span class="sourceLineNo">2964</span> * @param row - row key (arbitrary byte array)<a name="line.2964"></a> -<span class="sourceLineNo">2965</span> * @param fam - family name<a name="line.2965"></a> -<span class="sourceLineNo">2966</span> * @return First Delete Family possible key on passed <code>row</code>.<a name="line.2966"></a> -<span class="sourceLineNo">2967</span> */<a name="line.2967"></a> -<span class="sourceLineNo">2968</span> public static Cell createFirstDeleteFamilyCellOnRow(final byte[] row, final byte[] fam) {<a name="line.2968"></a> -<span class="sourceLineNo">2969</span> return new FirstOnRowDeleteFamilyCell(row, fam);<a name="line.2969"></a> -<span class="sourceLineNo">2970</span> }<a name="line.2970"></a> -<span class="sourceLineNo">2971</span>}<a name="line.2971"></a> +<span class="sourceLineNo">2786</span> * Note that this can be the JVM heap space (on-heap) or the OS heap (off-heap)<a name="line.2786"></a> +<span class="sourceLineNo">2787</span> * @param cell<a name="line.2787"></a> +<span class="sourceLineNo">2788</span> * @return estimate of the heap space<a name="line.2788"></a> +<span class="sourceLineNo">2789</span> */<a name="line.2789"></a> +<span class="sourceLineNo">2790</span> public static long estimatedSizeOfCell(final Cell cell) {<a name="line.2790"></a> +<span class="sourceLineNo">2791</span> if (cell instanceof HeapSize) {<a name="line.2791"></a> +<span class="sourceLineNo">2792</span> return ((HeapSize) cell).heapSize();<a name="line.2792"></a> +<span class="sourceLineNo">2793</span> }<a name="line.2793"></a> +<span class="sourceLineNo">2794</span> // TODO: Add sizing of references that hold the row, family, etc., arrays.<a name="line.2794"></a> +<span class="sourceLineNo">2795</span> return estimatedSerializedSizeOf(cell);<a name="line.2795"></a> +<span class="sourceLineNo">2796</span> }<a name="line.2796"></a> +<span class="sourceLineNo">2797</span><a name="line.2797"></a> +<span class="sourceLineNo">2798</span> /**<a name="line.2798"></a> +<span class="sourceLineNo">2799</span> * This method exists just to encapsulate how we serialize keys. To be replaced by a factory that<a name="line.2799"></a> +<span class="sourceLineNo">2800</span> * we query to figure what the Cell implementation is and then, what serialization engine to use<a name="line.2800"></a> +<span class="sourceLineNo">2801</span> * and further, how to serialize the key for inclusion in hfile index. TODO.<a name="line.2801"></a> +<span class="sourceLineNo">2802</span> * @param cell<a name="line.2802"></a> +<span class="sourceLineNo">2803</span> * @return The key portion of the Cell serialized in the old-school KeyValue way or null if passed<a name="line.2803"></a> +<span class="sourceLineNo">2804</span> * a null <code>cell</code><a name="line.2804"></a> +<span class="sourceLineNo">2805</span> */<a name="line.2805"></a> +<span class="sourceLineNo">2806</span> public static byte[] getCellKeySerializedAsKeyValueKey(final Cell cell) {<a name="line.2806"></a> +<span class="sourceLineNo">2807</span> if (cell == null) return null;<a name="line.2807"></a> +<span class="sourceLineNo">2808</span> byte[] b = new byte[KeyValueUtil.keyLength(cell)];<a name="line.2808"></a> +<span class="sourceLineNo">2809</span> KeyValueUtil.appendKeyTo(cell, b, 0);<a name="line.2809"></a> +<span class="sourceLineNo">2810</span> return b;<a name="line.2810"></a> +<span class="sourceLineNo">2811</span> }<a name="line.2811"></a> +<span class="sourceLineNo">2812</span><a name="line.2812"></a> +<span class="sourceLineNo">2813</span> /**<a name="line.2813"></a> +<span class="sourceLineNo">2814</span> * Create a Cell that is smaller than all other possible Cells for the given Cell's row.<a name="line.2814"></a> +<span class="sourceLineNo">2815</span> * @param cell<a name="line.2815"></a> +<span class="sourceLineNo">2816</span> * @return First possible Cell on passed Cell's row.<a name="line.2816"></a> +<span class="sourceLineNo">2817</span> */<a name="line.2817"></a> +<span class="sourceLineNo">2818</span> public static Cell createFirstOnRow(final Cell cell) {<a name="line.2818"></a> +<span class="sourceLineNo">2819</span> if (cell instanceof ByteBufferExtendedCell) {<a name="line.2819"></a> +<span class="sourceLineNo">2820</span> return new FirstOnRowByteBufferExtendedCell(<a name="line.2820"></a> +<span class="sourceLineNo">2821</span> ((ByteBufferExtendedCell) cell).getRowByteBuffer(),<a name="line.2821"></a> +<span class="sourceLineNo">2822</span> ((ByteBufferExtendedCell) cell).getRowPosition(), cell.getRowLength());<a name="line.2822"></a> +<span class="sourceLineNo">2823</span> }<a name="line.2823"></a> +<span class="sourceLineNo">2824</span> return new FirstOnRowCell(cell.getRowArray(), cell.getRowOffset(), cell.getRowLength());<a name="line.2824"></a> +<span class="sourceLineNo">2825</span> }<a name="line.2825"></a> +<span class="sourceLineNo">2826</span><a name="line.2826"></a> +<span class="sourceLineNo">2827</span> public static Cell createFirstOnRow(final byte[] row, int roffset, short rlength) {<a name="line.2827"></a> +<span class="sourceLineNo">2828</span> return new FirstOnRowCell(row, roffset, rlength);<a name="line.2828"></a> +<span class="sourceLineNo">2829</span> }<a name="line.2829"></a> +<span class="sourceLineNo">2830</span><a name="line.2830"></a> +<span class="sourceLineNo">2831</span> public static Cell createFirstOnRow(final byte[] row, final byte[] family, final byte[] col) {<a name="line.2831"></a> +<span class="sourceLineNo">2832</span> return createFirstOnRow(row, 0, (short) row.length, family, 0, (byte) family.length, col, 0,<a name="line.2832"></a> +<span class="sourceLineNo">2833</span> col.length);<a name="line.2833"></a> +<span class="sourceLineNo">2834</span> }<a name="line.2834"></a> +<span class="sourceLineNo">2835</span><a name="line.2835"></a> +<span class="sourceLineNo">2836</span> public static Cell createFirstOnRow(final byte[] row, int roffset, short rlength,<a name="line.2836"></a> +<span class="sourceLineNo">2837</span> final byte[] family, int foffset, byte flength, final byte[] col, int coffset, int clength) {<a name="line.2837"></a> +<span class="sourceLineNo">2838</span> return new FirstOnRowColCell(row, roffset, rlength, family, foffset, flength, col, coffset,<a name="line.2838"></a> +<span class="sourceLineNo">2839</span> clength);<a name="line.2839"></a> +<span class="sourceLineNo">2840</span> }<a name="line.2840"></a> +<span class="sourceLineNo">2841</span><a name="line.2841"></a> +<span class="sourceLineNo">2842</span> public static Cell createFirstOnRow(final byte[] row) {<a name="line.2842"></a> +<span class="sourceLineNo">2843</span> return createFirstOnRow(row, 0, (short) row.length);<a name="line.2843"></a> +<span class="sourceLineNo">2844</span> }<a name="line.2844"></a> +<span class="sourceLineNo">2845</span><a name="line.2845"></a> +<span class="sourceLineNo">2846</span> public static Cell createFirstOnRowFamily(Cell cell, byte[] fArray, int foff, int flen) {<a name="line.2846"></a> +<span class="sourceLineNo">2847</span> if (cell instanceof ByteBufferExtendedCell) {<a name="line.2847"></a> +<span class="sourceLineNo">2848</span> return new FirstOnRowColByteBufferExtendedCell(<a name="line.2848"></a> +<span class="sourceLineNo">2849</span> ((ByteBufferExtendedCell) cell).getRowByteBuffer(),<a name="line.2849"></a> +<span class="sourceLineNo">2850</span> ((ByteBufferExtendedCell) cell).getRowPosition(), cell.getRowLength(),<a name="line.2850"></a> +<span class="sourceLineNo">2851</span> ByteBuffer.wrap(fArray), foff, (byte) flen, HConstants.EMPTY_BYTE_BUFFER, 0, 0);<a name="line.2851"></a> +<span class="sourceLineNo">2852</span> }<a name="line.2852"></a> +<span class="sourceLineNo">2853</span> return new FirstOnRowColCell(cell.getRowArray(), cell.getRowOffset(), cell.getRowLength(),<a name="line.2853"></a> +<span class="sourceLineNo">2854</span> fArray, foff, (byte) flen, HConstants.EMPTY_BYTE_ARRAY, 0, 0);<a name="line.2854"></a> +<span class="sourceLineNo">2855</span> }<a name="line.2855"></a> +<span class="sourceLineNo">2856</span><a name="line.2856"></a> +<span class="sourceLineNo">2857</span> public static Cell createFirstOnRowCol(final Cell cell) {<a name="line.2857"></a> +<span class="sourceLineNo">2858</span> if (cell instanceof ByteBufferExtendedCell) {<a name="line.2858"></a> +<span class="sourceLineNo">2859</span> return new FirstOnRowColByteBufferExtendedCell(<a name="line.2859"></a> +<span class="sourceLineNo">2860</span> ((ByteBufferExtendedCell) cell).getRowByteBuffer(),<a name="line.2860"></a> +<span class="sourceLineNo">2861</span> ((ByteBufferExtendedCell) cell).getRowPosition(), cell.getRowLength(),<a name="line.2861"></a> +<span class="sourceLineNo">2862</span> HConstants.EMPTY_BYTE_BUFFER, 0, (byte) 0,<a name="line.2862"></a> +<span class="sourceLineNo">2863</span> ((ByteBufferExtendedCell) cell).getQualifierByteBuffer(),<a name="line.2863"></a> +<span class="sourceLineNo">2864</span> ((ByteBufferExtendedCell) cell).getQualifierPosition(), cell.getQualifierLength());<a name="line.2864"></a> +<span class="sourceLineNo">2865</span> }<a name="line.2865"></a> +<span class="sourceLineNo">2866</span> return new FirstOnRowColCell(cell.getRowArray(), cell.getRowOffset(), cell.getRowLength(),<a name="line.2866"></a> +<span class="sourceLineNo">2867</span> HConstants.EMPTY_BYTE_ARRAY, 0, (byte) 0, cell.getQualifierArray(),<a name="line.2867"></a> +<span class="sourceLineNo">2868</span> cell.getQualifierOffset(), cell.getQualifierLength());<a name="line.2868"></a> +<span class="sourceLineNo">2869</span> }<a name="line.2869"></a> +<span class="sourceLineNo">2870</span><a name="line.2870"></a> +<span class="sourceLineNo">2871</span> public static Cell createFirstOnNextRow(final Cell cell) {<a name="line.2871"></a> +<span class="sourceLineNo">2872</span> byte[] nextRow = new byte[cell.getRowLength() + 1];<a name="line.2872"></a> +<span class="sourceLineNo">2873</span> CellUtil.copyRowTo(cell, nextRow, 0);<a name="line.2873"></a> +<span class="sourceLineNo">2874</span> nextRow[nextRow.length - 1] = 0;// maybe not necessary<a name="line.2874"></a> +<span class="sourceLineNo">2875</span> return new FirstOnRowCell(nextRow, 0, (short) nextRow.length);<a name="line.2875"></a> +<span class="sourceLineNo">2876</span> }<a name="line.2876"></a> +<span class="sourceLineNo">2877</span><a name="line.2877"></a> +<span class="sourceLineNo">2878</span> /**<a name="line.2878"></a> +<span class="sourceLineNo">2879</span> * Create a Cell that is smaller than all other possible Cells for the given Cell's rk:cf and<a name="line.2879"></a> +<span class="sourceLineNo">2880</span> * passed qualifier.<a name="line.2880"></a> +<span class="sourceLineNo">2881</span> * @param cell<a name="line.2881"></a> +<span class="sourceLineNo">2882</span> * @param qArray<a name="line.2882"></a> +<span class="sourceLineNo">2883</span> * @param qoffest<a name="line.2883"></a> +<span class="sourceLineNo">2884</span> * @param qlength<a name="line.2884"></a> +<span class="sourceLineNo">2885</span> * @return Last possible Cell on passed Cell's rk:cf and passed qualifier.<a name="line.2885"></a> +<span class="sourceLineNo">2886</span> */<a name="line.2886"></a> +<span class="sourceLineNo">2887</span> public static Cell createFirstOnRowCol(final Cell cell, byte[] qArray, int qoffest, int qlength) {<a name="line.2887"></a> +<span class="sourceLineNo">2888</span> if (cell instanceof ByteBufferExtendedCell) {<a name="line.2888"></a> +<span class="sourceLineNo">2889</span> return new FirstOnRowColByteBufferExtendedCell(<a name="line.2889"></a> +<span class="sourceLineNo">2890</span> ((ByteBufferExtendedCell) cell).getRowByteBuffer(),<a name="line.2890"></a> +<span class="sourceLineNo">2891</span> ((ByteBufferExtendedCell) cell).getRowPosition(), cell.getRowLength(),<a name="line.2891"></a> +<span class="sourceLineNo">2892</span> ((ByteBufferExtendedCell) cell).getFamilyByteBuffer(),<a name="line.2892"></a> +<span class="sourceLineNo">2893</span> ((ByteBufferExtendedCell) cell).getFamilyPosition(), cell.getFamilyLength(),<a name="line.2893"></a> +<span class="sourceLineNo">2894</span> ByteBuffer.wrap(qArray), qoffest, qlength);<a name="line.2894"></a> +<span class="sourceLineNo">2895</span> }<a name="line.2895"></a> +<span class="sourceLineNo">2896</span> return new FirstOnRowColCell(cell.getRowArray(), cell.getRowOffset(), cell.getRowLength(),<a name="line.2896"></a> +<span class="sourceLineNo">2897</span> cell.getFamilyArray(), cell.getFamilyOffset(), cell.getFamilyLength(), qArray, qoffest,<a name="line.2897"></a> +<span class="sourceLineNo">2898</span> qlength);<a name="line.2898"></a> +<span class="sourceLineNo">2899</span> }<a name="line.2899"></a> +<span class="sourceLineNo">2900</span><a name="line.2900"></a> +<span class="sourceLineNo">2901</span> /**<a name="line.2901"></a> +<span class="sourceLineNo">2902</span> * Creates the first cell with the row/family/qualifier of this cell and the given timestamp. Uses<a name="line.2902"></a> +<span class="sourceLineNo">2903</span> * the "maximum" type that guarantees that the new cell is the lowest possible for this<a name="line.2903"></a> +<span class="sourceLineNo">2904</span> * combination of row, family, qualifier, and timestamp. This cell's own timestamp is ignored.<a name="line.2904"></a> +<span class="sourceLineNo">2905</span> * @param cell - cell<a name="line.2905"></a> +<span class="sourceLineNo">2906</span> * @param ts<a name="line.2906"></a> +<span class="sourceLineNo">2907</span> */<a name="line.2907"></a> +<span class="sourceLineNo">2908</span> public static Cell createFirstOnRowColTS(Cell cell, long ts) {<a name="line.2908"></a> +<span class="sourceLineNo">2909</span> if (cell instanceof ByteBufferExtendedCell) {<a name="line.2909"></a> +<span class="sourceLineNo">2910</span> return new FirstOnRowColTSByteBufferExtendedCell(<a name="line.2910"></a> +<span class="sourceLineNo">2911</span> ((ByteBufferExtendedCell) cell).getRowByteBuffer(),<a name="line.2911"></a> +<span class="sourceLineNo">2912</span> ((ByteBufferExtendedCell) cell).getRowPosition(), cell.getRowLength(),<a name="line.2912"></a> +<span class="sourceLineNo">2913</span> ((ByteBufferExtendedCell) cell).getFamilyByteBuffer(),<a name="line.2913"></a> +<span class="sourceLineNo">2914</span> ((ByteBufferExtendedCell) cell).getFamilyPosition(), cell.getFamilyLength(),<a name="line.2914"></a> +<span class="sourceLineNo">2915</span> ((ByteBufferExtendedCell) cell).getQualifierByteBuffer(),<a name="line.2915"></a> +<span class="sourceLineNo">2916</span> ((ByteBufferExtendedCell) cell).getQualifierPosition(), cell.getQualifierLength(), ts);<a name="line.2916"></a> +<span class="sourceLineNo">2917</span> }<a name="line.2917"></a> +<span class="sourceLineNo">2918</span> return new FirstOnRowColTSCell(cell.getRowArray(), cell.getRowOffset(), cell.getRowLength(),<a name="line.2918"></a> +<span class="sourceLineNo">2919</span> cell.getFamilyArray(), cell.getFamilyOffset(), cell.getFamilyLength(),<a name="line.2919"></a> +<span class="sourceLineNo">2920</span> cell.getQualifierArray(), cell.getQualifierOffset(), cell.getQualifierLength(), ts);<a name="line.2920"></a> +<span class="sourceLineNo">2921</span> }<a name="line.2921"></a> +<span class="sourceLineNo">2922</span><a name="line.2922"></a> +<span class="sourceLineNo">2923</span> /**<a name="line.2923"></a> +<span class="sourceLineNo">2924</span> * Create a Cell that is larger than all other possible Cells for the given Cell's row.<a name="line.2924"></a> +<span class="sourceLineNo">2925</span> * @param cell<a name="line.2925"></a> +<span class="sourceLineNo">2926</span> * @return Last possible Cell on passed Cell's row.<a name="line.2926"></a> +<span class="sourceLineNo">2927</span> */<a name="line.2927"></a> +<span class="sourceLineNo">2928</span> public static Cell createLastOnRow(final Cell cell) {<a name="line.2928"></a> +<span class="sourceLineNo">2929</span> if (cell instanceof ByteBufferExtendedCell) {<a name="line.2929"></a> +<span class="sourceLineNo">2930</span> return new LastOnRowByteBufferExtendedCell(((ByteBufferExtendedCell) cell).getRowByteBuffer(),<a name="line.2930"></a> +<span class="sourceLineNo">2931</span> ((ByteBufferExtendedCell) cell).getRowPosition(), cell.getRowLength());<a name="line.2931"></a> +<span class="sourceLineNo">2932</span> }<a name="line.2932"></a> +<span class="sourceLineNo">2933</span> return new LastOnRowCell(cell.getRowArray(), cell.getRowOffset(), cell.getRowLength());<a name="line.2933"></a> +<span class="sourceLineNo">2934</span> }<a name="line.2934"></a> +<span class="sourceLineNo">2935</span><a name="line.2935"></a> +<span class="sourceLineNo">2936</span> public static Cell createLastOnRow(final byte[] row) {<a name="line.2936"></a> +<span class="sourceLineNo">2937</span> return new LastOnRowCell(row, 0, (short) row.length);<a name="line.2937"></a> +<span class="sourceLineNo">2938</span> }<a name="line.2938"></a> +<span class="sourceLineNo">2939</span><a name="line.2939"></a> +<span class="sourceLineNo">2940</span> /**<a name="line.2940"></a> +<span class="sourceLineNo">2941</span> * Create a Cell that is larger than all other possible Cells for the given Cell's rk:cf:q. Used<a name="line.2941"></a> +<span class="sourceLineNo">2942</span> * in creating "fake keys" for the multi-column Bloom filter optimization to skip the row/column<a name="line.2942"></a> +<span class="sourceLineNo">2943</span> * we already know is not in the file.<a name="line.2943"></a> +<span class="sourceLineNo">2944</span> * @param cell<a name="line.2944"></a> +<span class="sourceLineNo">2945</span> * @return Last possible Cell on passed Cell's rk:cf:q.<a name="line.2945"></a> +<span class="sourceLineNo">2946</span> */<a name="line.2946"></a> +<span class="sourceLineNo">2947</span> public static Cell createLastOnRowCol(final Cell cell) {<a name="line.2947"></a> +<span class="sourceLineNo">2948</span> if (cell instanceof ByteBufferExtendedCell) {<a name="line.2948"></a> +<span class="sourceLineNo">2949</span> return new LastOnRowColByteBufferExtendedCell(<a name="line.2949"></a> +<span class="sourceLineNo">2950</span> ((ByteBufferExtendedCell) cell).getRowByteBuffer(),<a name="line.2950"></a> +<span class="sourceLineNo">2951</span> ((ByteBufferExtendedCell) cell).getRowPosition(), cell.getRowLength(),<a name="line.2951"></a> +<span class="sourceLineNo">2952</span> ((ByteBufferExtendedCell) cell).getFamilyByteBuffer(),<a name="line.2952"></a> +<span class="sourceLineNo">2953</span> ((ByteBufferExtendedCell) cell).getFamilyPosition(), cell.getFamilyLength(),<a name="line.2953"></a> +<span class="sourceLineNo">2954</span> ((ByteBufferExtendedCell) cell).getQualifierByteBuffer(),<a name="line.2954"></a> +<span class="sourceLineNo">2955</span> ((ByteBufferExtendedCell) cell).getQualifierPosition(), cell.getQualifierLength());<a name="line.2955"></a> +<span class="sourceLineNo">2956</span> }<a name="line.2956"></a> +<span class="sourceLineNo">2957</span> return new LastOnRowColCell(cell.getRowArray(), cell.getRowOffset(), cell.getRowLength(),<a name="line.2957"></a> +<span class="sourceLineNo">2958</span> cell.getFamilyArray(), cell.getFamilyOffset(), cell.getFamilyLength(),<a name="line.2958"></a> +<span class="sourceLineNo">2959</span> cell.getQualifierArray(), cell.getQualifierOffset(), cell.getQualifierLength());<a name="line.2959"></a> +<span class="sourceLineNo">2960</span> }<a name="line.2960"></a> +<span class="sourceLineNo">2961</span><a name="line.2961"></a> +<span class="sourceLineNo">2962</span> /**<a name="line.2962"></a> +<span class="sourceLineNo">2963</span> * Create a Delete Family Cell for the specified row and family that would be smaller than all<a name="line.2963"></a> +<span class="sourceLineNo">2964</span> * other possible Delete Family KeyValues that have the same row and family. Used for seeking.<a name="line.2964"></a> +<span class="sourceLineNo">2965</span> * @param row - row key (arbitrary byte array)<a name="line.2965"></a> +<span class="sourceLineNo">2966</span> * @param fam - family name<a name="line.2966"></a> +<span class="sourceLineNo">2967</span> * @return First Delete Family possible key on passed <code>row</code>.<a name="line.2967"></a> +<span class="sourceLineNo">2968</span> */<a name="line.2968"></a> +<span class="sourceLineNo">2969</span> public static Cell createFirstDeleteFamilyCellOnRow(final byte[] row, final byte[] fam) {<a name="line.2969"></a> +<span class="sourceLineNo">2970</span> return new FirstOnRowDeleteFamilyCell(row, fam);<a name="line.2970"></a> +<span class="sourceLineNo">2971</span> }<a name="line.2971"></a> +<span class="sourceLineNo">2972</span>}<a name="line.2972"></a>
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/991224b9/devapidocs/src-html/org/apache/hadoop/hbase/PrivateCellUtil.EmptyCell.html ---------------------------------------------------------------------- diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/PrivateCellUtil.EmptyCell.html b/devapidocs/src-html/org/apache/hadoop/hbase/PrivateCellUtil.EmptyCell.html index d143ef8..4583895 100644 --- a/devapidocs/src-html/org/apache/hadoop/hbase/PrivateCellUtil.EmptyCell.html +++ b/devapidocs/src-html/org/apache/hadoop/hbase/PrivateCellUtil.EmptyCell.html @@ -258,7 +258,7 @@ <span class="sourceLineNo">250</span><a name="line.250"></a> <span class="sourceLineNo">251</span> @Override<a name="line.251"></a> <span class="sourceLineNo">252</span> public long heapSize() {<a name="line.252"></a> -<span class="sourceLineNo">253</span> long sum = HEAP_SIZE_OVERHEAD + estimatedHeapSizeOf(cell);<a name="line.253"></a> +<span class="sourceLineNo">253</span> long sum = HEAP_SIZE_OVERHEAD + estimatedSizeOfCell(cell);<a name="line.253"></a> <span class="sourceLineNo">254</span> if (this.tags != null) {<a name="line.254"></a> <span class="sourceLineNo">255</span> sum += ClassSize.sizeOf(this.tags);<a name="line.255"></a> <span class="sourceLineNo">256</span> }<a name="line.256"></a> @@ -454,7 +454,7 @@ <span class="sourceLineNo">446</span><a name="line.446"></a> <span class="sourceLineNo">447</span> @Override<a name="line.447"></a> <span class="sourceLineNo">448</span> public long heapSize() {<a name="line.448"></a> -<span class="sourceLineNo">449</span> long sum = HEAP_SIZE_OVERHEAD + estimatedHeapSizeOf(cell);<a name="line.449"></a> +<span class="sourceLineNo">449</span> long sum = HEAP_SIZE_OVERHEAD + estimatedSizeOfCell(cell);<a name="line.449"></a> <span class="sourceLineNo">450</span> // this.tags is on heap byte[]<a name="line.450"></a> <span class="sourceLineNo">451</span> if (this.tags != null) {<a name="line.451"></a> <span class="sourceLineNo">452</span> sum += ClassSize.sizeOf(this.tags);<a name="line.452"></a> @@ -2791,192 +2791,193 @@ <span class="sourceLineNo">2783</span> * {@link HeapSize} we call {@link HeapSize#heapSize()} so cell can give a correct value. In other<a name="line.2783"></a> <span class="sourceLineNo">2784</span> * cases we just consider the bytes occupied by the cell components ie. row, CF, qualifier,<a name="line.2784"></a> <span class="sourceLineNo">2785</span> * timestamp, type, value and tags.<a name="line.2785"></a> -<span class="sourceLineNo">2786</span> * @param cell<a name="line.2786"></a> -<span class="sourceLineNo">2787</span> * @return estimate of the heap space<a name="line.2787"></a> -<span class="sourceLineNo">2788</span> */<a name="line.2788"></a> -<span class="sourceLineNo">2789</span> public static long estimatedHeapSizeOf(final Cell cell) {<a name="line.2789"></a> -<span class="sourceLineNo">2790</span> if (cell instanceof HeapSize) {<a name="line.2790"></a> -<span class="sourceLineNo">2791</span> return ((HeapSize) cell).heapSize();<a name="line.2791"></a> -<span class="sourceLineNo">2792</span> }<a name="line.2792"></a> -<span class="sourceLineNo">2793</span> // TODO: Add sizing of references that hold the row, family, etc., arrays.<a name="line.2793"></a> -<span class="sourceLineNo">2794</span> return estimatedSerializedSizeOf(cell);<a name="line.2794"></a> -<span class="sourceLineNo">2795</span> }<a name="line.2795"></a> -<span class="sourceLineNo">2796</span><a name="line.2796"></a> -<span class="sourceLineNo">2797</span> /**<a name="line.2797"></a> -<span class="sourceLineNo">2798</span> * This method exists just to encapsulate how we serialize keys. To be replaced by a factory that<a name="line.2798"></a> -<span class="sourceLineNo">2799</span> * we query to figure what the Cell implementation is and then, what serialization engine to use<a name="line.2799"></a> -<span class="sourceLineNo">2800</span> * and further, how to serialize the key for inclusion in hfile index. TODO.<a name="line.2800"></a> -<span class="sourceLineNo">2801</span> * @param cell<a name="line.2801"></a> -<span class="sourceLineNo">2802</span> * @return The key portion of the Cell serialized in the old-school KeyValue way or null if passed<a name="line.2802"></a> -<span class="sourceLineNo">2803</span> * a null <code>cell</code><a name="line.2803"></a> -<span class="sourceLineNo">2804</span> */<a name="line.2804"></a> -<span class="sourceLineNo">2805</span> public static byte[] getCellKeySerializedAsKeyValueKey(final Cell cell) {<a name="line.2805"></a> -<span class="sourceLineNo">2806</span> if (cell == null) return null;<a name="line.2806"></a> -<span class="sourceLineNo">2807</span> byte[] b = new byte[KeyValueUtil.keyLength(cell)];<a name="line.2807"></a> -<span class="sourceLineNo">2808</span> KeyValueUtil.appendKeyTo(cell, b, 0);<a name="line.2808"></a> -<span class="sourceLineNo">2809</span> return b;<a name="line.2809"></a> -<span class="sourceLineNo">2810</span> }<a name="line.2810"></a> -<span class="sourceLineNo">2811</span><a name="line.2811"></a> -<span class="sourceLineNo">2812</span> /**<a name="line.2812"></a> -<span class="sourceLineNo">2813</span> * Create a Cell that is smaller than all other possible Cells for the given Cell's row.<a name="line.2813"></a> -<span class="sourceLineNo">2814</span> * @param cell<a name="line.2814"></a> -<span class="sourceLineNo">2815</span> * @return First possible Cell on passed Cell's row.<a name="line.2815"></a> -<span class="sourceLineNo">2816</span> */<a name="line.2816"></a> -<span class="sourceLineNo">2817</span> public static Cell createFirstOnRow(final Cell cell) {<a name="line.2817"></a> -<span class="sourceLineNo">2818</span> if (cell instanceof ByteBufferExtendedCell) {<a name="line.2818"></a> -<span class="sourceLineNo">2819</span> return new FirstOnRowByteBufferExtendedCell(<a name="line.2819"></a> -<span class="sourceLineNo">2820</span> ((ByteBufferExtendedCell) cell).getRowByteBuffer(),<a name="line.2820"></a> -<span class="sourceLineNo">2821</span> ((ByteBufferExtendedCell) cell).getRowPosition(), cell.getRowLength());<a name="line.2821"></a> -<span class="sourceLineNo">2822</span> }<a name="line.2822"></a> -<span class="sourceLineNo">2823</span> return new FirstOnRowCell(cell.getRowArray(), cell.getRowOffset(), cell.getRowLength());<a name="line.2823"></a> -<span class="sourceLineNo">2824</span> }<a name="line.2824"></a> -<span class="sourceLineNo">2825</span><a name="line.2825"></a> -<span class="sourceLineNo">2826</span> public static Cell createFirstOnRow(final byte[] row, int roffset, short rlength) {<a name="line.2826"></a> -<span class="sourceLineNo">2827</span> return new FirstOnRowCell(row, roffset, rlength);<a name="line.2827"></a> -<span class="sourceLineNo">2828</span> }<a name="line.2828"></a> -<span class="sourceLineNo">2829</span><a name="line.2829"></a> -<span class="sourceLineNo">2830</span> public static Cell createFirstOnRow(final byte[] row, final byte[] family, final byte[] col) {<a name="line.2830"></a> -<span class="sourceLineNo">2831</span> return createFirstOnRow(row, 0, (short) row.length, family, 0, (byte) family.length, col, 0,<a name="line.2831"></a> -<span class="sourceLineNo">2832</span> col.length);<a name="line.2832"></a> -<span class="sourceLineNo">2833</span> }<a name="line.2833"></a> -<span class="sourceLineNo">2834</span><a name="line.2834"></a> -<span class="sourceLineNo">2835</span> public static Cell createFirstOnRow(final byte[] row, int roffset, short rlength,<a name="line.2835"></a> -<span class="sourceLineNo">2836</span> final byte[] family, int foffset, byte flength, final byte[] col, int coffset, int clength) {<a name="line.2836"></a> -<span class="sourceLineNo">2837</span> return new FirstOnRowColCell(row, roffset, rlength, family, foffset, flength, col, coffset,<a name="line.2837"></a> -<span class="sourceLineNo">2838</span> clength);<a name="line.2838"></a> -<span class="sourceLineNo">2839</span> }<a name="line.2839"></a> -<span class="sourceLineNo">2840</span><a name="line.2840"></a> -<span class="sourceLineNo">2841</span> public static Cell createFirstOnRow(final byte[] row) {<a name="line.2841"></a> -<span class="sourceLineNo">2842</span> return createFirstOnRow(row, 0, (short) row.length);<a name="line.2842"></a> -<span class="sourceLineNo">2843</span> }<a name="line.2843"></a> -<span class="sourceLineNo">2844</span><a name="line.2844"></a> -<span class="sourceLineNo">2845</span> public static Cell createFirstOnRowFamily(Cell cell, byte[] fArray, int foff, int flen) {<a name="line.2845"></a> -<span class="sourceLineNo">2846</span> if (cell instanceof ByteBufferExtendedCell) {<a name="line.2846"></a> -<span class="sourceLineNo">2847</span> return new FirstOnRowColByteBufferExtendedCell(<a name="line.2847"></a> -<span class="sourceLineNo">2848</span> ((ByteBufferExtendedCell) cell).getRowByteBuffer(),<a name="line.2848"></a> -<span class="sourceLineNo">2849</span> ((ByteBufferExtendedCell) cell).getRowPosition(), cell.getRowLength(),<a name="line.2849"></a> -<span class="sourceLineNo">2850</span> ByteBuffer.wrap(fArray), foff, (byte) flen, HConstants.EMPTY_BYTE_BUFFER, 0, 0);<a name="line.2850"></a> -<span class="sourceLineNo">2851</span> }<a name="line.2851"></a> -<span class="sourceLineNo">2852</span> return new FirstOnRowColCell(cell.getRowArray(), cell.getRowOffset(), cell.getRowLength(),<a name="line.2852"></a> -<span class="sourceLineNo">2853</span> fArray, foff, (byte) flen, HConstants.EMPTY_BYTE_ARRAY, 0, 0);<a name="line.2853"></a> -<span class="sourceLineNo">2854</span> }<a name="line.2854"></a> -<span class="sourceLineNo">2855</span><a name="line.2855"></a> -<span class="sourceLineNo">2856</span> public static Cell createFirstOnRowCol(final Cell cell) {<a name="line.2856"></a> -<span class="sourceLineNo">2857</span> if (cell instanceof ByteBufferExtendedCell) {<a name="line.2857"></a> -<span class="sourceLineNo">2858</span> return new FirstOnRowColByteBufferExtendedCell(<a name="line.2858"></a> -<span class="sourceLineNo">2859</span> ((ByteBufferExtendedCell) cell).getRowByteBuffer(),<a name="line.2859"></a> -<span class="sourceLineNo">2860</span> ((ByteBufferExtendedCell) cell).getRowPosition(), cell.getRowLength(),<a name="line.2860"></a> -<span class="sourceLineNo">2861</span> HConstants.EMPTY_BYTE_BUFFER, 0, (byte) 0,<a name="line.2861"></a> -<span class="sourceLineNo">2862</span> ((ByteBufferExtendedCell) cell).getQualifierByteBuffer(),<a name="line.2862"></a> -<span class="sourceLineNo">2863</span> ((ByteBufferExtendedCell) cell).getQualifierPosition(), cell.getQualifierLength());<a name="line.2863"></a> -<span class="sourceLineNo">2864</span> }<a name="line.2864"></a> -<span class="sourceLineNo">2865</span> return new FirstOnRowColCell(cell.getRowArray(), cell.getRowOffset(), cell.getRowLength(),<a name="line.2865"></a> -<span class="sourceLineNo">2866</span> HConstants.EMPTY_BYTE_ARRAY, 0, (byte) 0, cell.getQualifierArray(),<a name="line.2866"></a> -<span class="sourceLineNo">2867</span> cell.getQualifierOffset(), cell.getQualifierLength());<a name="line.2867"></a> -<span class="sourceLineNo">2868</span> }<a name="line.2868"></a> -<span class="sourceLineNo">2869</span><a name="line.2869"></a> -<span class="sourceLineNo">2870</span> public static Cell createFirstOnNextRow(final Cell cell) {<a name="line.2870"></a> -<span class="sourceLineNo">2871</span> byte[] nextRow = new byte[cell.getRowLength() + 1];<a name="line.2871"></a> -<span class="sourceLineNo">2872</span> CellUtil.copyRowTo(cell, nextRow, 0);<a name="line.2872"></a> -<span class="sourceLineNo">2873</span> nextRow[nextRow.length - 1] = 0;// maybe not necessary<a name="line.2873"></a> -<span class="sourceLineNo">2874</span> return new FirstOnRowCell(nextRow, 0, (short) nextRow.length);<a name="line.2874"></a> -<span class="sourceLineNo">2875</span> }<a name="line.2875"></a> -<span class="sourceLineNo">2876</span><a name="line.2876"></a> -<span class="sourceLineNo">2877</span> /**<a name="line.2877"></a> -<span class="sourceLineNo">2878</span> * Create a Cell that is smaller than all other possible Cells for the given Cell's rk:cf and<a name="line.2878"></a> -<span class="sourceLineNo">2879</span> * passed qualifier.<a name="line.2879"></a> -<span class="sourceLineNo">2880</span> * @param cell<a name="line.2880"></a> -<span class="sourceLineNo">2881</span> * @param qArray<a name="line.2881"></a> -<span class="sourceLineNo">2882</span> * @param qoffest<a name="line.2882"></a> -<span class="sourceLineNo">2883</span> * @param qlength<a name="line.2883"></a> -<span class="sourceLineNo">2884</span> * @return Last possible Cell on passed Cell's rk:cf and passed qualifier.<a name="line.2884"></a> -<span class="sourceLineNo">2885</span> */<a name="line.2885"></a> -<span class="sourceLineNo">2886</span> public static Cell createFirstOnRowCol(final Cell cell, byte[] qArray, int qoffest, int qlength) {<a name="line.2886"></a> -<span class="sourceLineNo">2887</span> if (cell instanceof ByteBufferExtendedCell) {<a name="line.2887"></a> -<span class="sourceLineNo">2888</span> return new FirstOnRowColByteBufferExtendedCell(<a name="line.2888"></a> -<span class="sourceLineNo">2889</span> ((ByteBufferExtendedCell) cell).getRowByteBuffer(),<a name="line.2889"></a> -<span class="sourceLineNo">2890</span> ((ByteBufferExtendedCell) cell).getRowPosition(), cell.getRowLength(),<a name="line.2890"></a> -<span class="sourceLineNo">2891</span> ((ByteBufferExtendedCell) cell).getFamilyByteBuffer(),<a name="line.2891"></a> -<span class="sourceLineNo">2892</span> ((ByteBufferExtendedCell) cell).getFamilyPosition(), cell.getFamilyLength(),<a name="line.2892"></a> -<span class="sourceLineNo">2893</span> ByteBuffer.wrap(qArray), qoffest, qlength);<a name="line.2893"></a> -<span class="sourceLineNo">2894</span> }<a name="line.2894"></a> -<span class="sourceLineNo">2895</span> return new FirstOnRowColCell(cell.getRowArray(), cell.getRowOffset(), cell.getRowLength(),<a name="line.2895"></a> -<span class="sourceLineNo">2896</span> cell.getFamilyArray(), cell.getFamilyOffset(), cell.getFamilyLength(), qArray, qoffest,<a name="line.2896"></a> -<span class="sourceLineNo">2897</span> qlength);<a name="line.2897"></a> -<span class="sourceLineNo">2898</span> }<a name="line.2898"></a> -<span class="sourceLineNo">2899</span><a name="line.2899"></a> -<span class="sourceLineNo">2900</span> /**<a name="line.2900"></a> -<span class="sourceLineNo">2901</span> * Creates the first cell with the row/family/qualifier of this cell and the given timestamp. Uses<a name="line.2901"></a> -<span class="sourceLineNo">2902</span> * the "maximum" type that guarantees that the new cell is the lowest possible for this<a name="line.2902"></a> -<span class="sourceLineNo">2903</span> * combination of row, family, qualifier, and timestamp. This cell's own timestamp is ignored.<a name="line.2903"></a> -<span class="sourceLineNo">2904</span> * @param cell - cell<a name="line.2904"></a> -<span class="sourceLineNo">2905</span> * @param ts<a name="line.2905"></a> -<span class="sourceLineNo">2906</span> */<a name="line.2906"></a> -<span class="sourceLineNo">2907</span> public static Cell createFirstOnRowColTS(Cell cell, long ts) {<a name="line.2907"></a> -<span class="sourceLineNo">2908</span> if (cell instanceof ByteBufferExtendedCell) {<a name="line.2908"></a> -<span class="sourceLineNo">2909</span> return new FirstOnRowColTSByteBufferExtendedCell(<a name="line.2909"></a> -<span class="sourceLineNo">2910</span> ((ByteBufferExtendedCell) cell).getRowByteBuffer(),<a name="line.2910"></a> -<span class="sourceLineNo">2911</span> ((ByteBufferExtendedCell) cell).getRowPosition(), cell.getRowLength(),<a name="line.2911"></a> -<span class="sourceLineNo">2912</span> ((ByteBufferExtendedCell) cell).getFamilyByteBuffer(),<a name="line.2912"></a> -<span class="sourceLineNo">2913</span> ((ByteBufferExtendedCell) cell).getFamilyPosition(), cell.getFamilyLength(),<a name="line.2913"></a> -<span class="sourceLineNo">2914</span> ((ByteBufferExtendedCell) cell).getQualifierByteBuffer(),<a name="line.2914"></a> -<span class="sourceLineNo">2915</span> ((ByteBufferExtendedCell) cell).getQualifierPosition(), cell.getQualifierLength(), ts);<a name="line.2915"></a> -<span class="sourceLineNo">2916</span> }<a name="line.2916"></a> -<span class="sourceLineNo">2917</span> return new FirstOnRowColTSCell(cell.getRowArray(), cell.getRowOffset(), cell.getRowLength(),<a name="line.2917"></a> -<span class="sourceLineNo">2918</span> cell.getFamilyArray(), cell.getFamilyOffset(), cell.getFamilyLength(),<a name="line.2918"></a> -<span class="sourceLineNo">2919</span> cell.getQualifierArray(), cell.getQualifierOffset(), cell.getQualifierLength(), ts);<a name="line.2919"></a> -<span class="sourceLineNo">2920</span> }<a name="line.2920"></a> -<span class="sourceLineNo">2921</span><a name="line.2921"></a> -<span class="sourceLineNo">2922</span> /**<a name="line.2922"></a> -<span class="sourceLineNo">2923</span> * Create a Cell that is larger than all other possible Cells for the given Cell's row.<a name="line.2923"></a> -<span class="sourceLineNo">2924</span> * @param cell<a name="line.2924"></a> -<span class="sourceLineNo">2925</span> * @return Last possible Cell on passed Cell's row.<a name="line.2925"></a> -<span class="sourceLineNo">2926</span> */<a name="line.2926"></a> -<span class="sourceLineNo">2927</span> public static Cell createLastOnRow(final Cell cell) {<a name="line.2927"></a> -<span class="sourceLineNo">2928</span> if (cell instanceof ByteBufferExtendedCell) {<a name="line.2928"></a> -<span class="sourceLineNo">2929</span> return new LastOnRowByteBufferExtendedCell(((ByteBufferExtendedCell) cell).getRowByteBuffer(),<a name="line.2929"></a> -<span class="sourceLineNo">2930</span> ((ByteBufferExtendedCell) cell).getRowPosition(), cell.getRowLength());<a name="line.2930"></a> -<span class="sourceLineNo">2931</span> }<a name="line.2931"></a> -<span class="sourceLineNo">2932</span> return new LastOnRowCell(cell.getRowArray(), cell.getRowOffset(), cell.getRowLength());<a name="line.2932"></a> -<span class="sourceLineNo">2933</span> }<a name="line.2933"></a> -<span class="sourceLineNo">2934</span><a name="line.2934"></a> -<span class="sourceLineNo">2935</span> public static Cell createLastOnRow(final byte[] row) {<a name="line.2935"></a> -<span class="sourceLineNo">2936</span> return new LastOnRowCell(row, 0, (short) row.length);<a name="line.2936"></a> -<span class="sourceLineNo">2937</span> }<a name="line.2937"></a> -<span class="sourceLineNo">2938</span><a name="line.2938"></a> -<span class="sourceLineNo">2939</span> /**<a name="line.2939"></a> -<span class="sourceLineNo">2940</span> * Create a Cell that is larger than all other possible Cells for the given Cell's rk:cf:q. Used<a name="line.2940"></a> -<span class="sourceLineNo">2941</span> * in creating "fake keys" for the multi-column Bloom filter optimization to skip the row/column<a name="line.2941"></a> -<span class="sourceLineNo">2942</span> * we already know is not in the file.<a name="line.2942"></a> -<span class="sourceLineNo">2943</span> * @param cell<a name="line.2943"></a> -<span class="sourceLineNo">2944</span> * @return Last possible Cell on passed Cell's rk:cf:q.<a name="line.2944"></a> -<span class="sourceLineNo">2945</span> */<a name="line.2945"></a> -<span class="sourceLineNo">2946</span> public static Cell createLastOnRowCol(final Cell cell) {<a name="line.2946"></a> -<span class="sourceLineNo">2947</span> if (cell instanceof ByteBufferExtendedCell) {<a name="line.2947"></a> -<span class="sourceLineNo">2948</span> return new LastOnRowColByteBufferExtendedCell(<a name="line.2948"></a> -<span class="sourceLineNo">2949</span> ((ByteBufferExtendedCell) cell).getRowByteBuffer(),<a name="line.2949"></a> -<span class="sourceLineNo">2950</span> ((ByteBufferExtendedCell) cell).getRowPosition(), cell.getRowLength(),<a name="line.2950"></a> -<span class="sourceLineNo">2951</span> ((ByteBufferExtendedCell) cell).getFamilyByteBuffer(),<a name="line.2951"></a> -<span class="sourceLineNo">2952</span> ((ByteBufferExtendedCell) cell).getFamilyPosition(), cell.getFamilyLength(),<a name="line.2952"></a> -<span class="sourceLineNo">2953</span> ((ByteBufferExtendedCell) cell).getQualifierByteBuffer(),<a name="line.2953"></a> -<span class="sourceLineNo">2954</span> ((ByteBufferExtendedCell) cell).getQualifierPosition(), cell.getQualifierLength());<a name="line.2954"></a> -<span class="sourceLineNo">2955</span> }<a name="line.2955"></a> -<span class="sourceLineNo">2956</span> return new LastOnRowColCell(cell.getRowArray(), cell.getRowOffset(), cell.getRowLength(),<a name="line.2956"></a> -<span class="sourceLineNo">2957</span> cell.getFamilyArray(), cell.getFamilyOffset(), cell.getFamilyLength(),<a name="line.2957"></a> -<span class="sourceLineNo">2958</span> cell.getQualifierArray(), cell.getQualifierOffset(), cell.getQualifierLength());<a name="line.2958"></a> -<span class="sourceLineNo">2959</span> }<a name="line.2959"></a> -<span class="sourceLineNo">2960</span><a name="line.2960"></a> -<span class="sourceLineNo">2961</span> /**<a name="line.2961"></a> -<span class="sourceLineNo">2962</span> * Create a Delete Family Cell for the specified row and family that would be smaller than all<a name="line.2962"></a> -<span class="sourceLineNo">2963</span> * other possible Delete Family KeyValues that have the same row and family. Used for seeking.<a name="line.2963"></a> -<span class="sourceLineNo">2964</span> * @param row - row key (arbitrary byte array)<a name="line.2964"></a> -<span class="sourceLineNo">2965</span> * @param fam - family name<a name="line.2965"></a> -<span class="sourceLineNo">2966</span> * @return First Delete Family possible key on passed <code>row</code>.<a name="line.2966"></a> -<span class="sourceLineNo">2967</span> */<a name="line.2967"></a> -<span class="sourceLineNo">2968</span> public static Cell createFirstDeleteFamilyCellOnRow(final byte[] row, final byte[] fam) {<a name="line.2968"></a> -<span class="sourceLineNo">2969</span> return new FirstOnRowDeleteFamilyCell(row, fam);<a name="line.2969"></a> -<span class="sourceLineNo">2970</span> }<a name="line.2970"></a> -<span class="sourceLineNo">2971</span>}<a name="line.2971"></a> +<span class="sourceLineNo">2786</span> * Note that this can be the JVM heap space (on-heap) or the OS heap (off-heap)<a name="line.2786"></a> +<span class="sourceLineNo">2787</span> * @param cell<a name="line.2787"></a> +<span class="sourceLineNo">2788</span> * @return estimate of the heap space<a name="line.2788"></a> +<span class="sourceLineNo">2789</span> */<a name="line.2789"></a> +<span class="sourceLineNo">2790</span> public static long estimatedSizeOfCell(final Cell cell) {<a name="line.2790"></a> +<span class="sourceLineNo">2791</span> if (cell instanceof HeapSize) {<a name="line.2791"></a> +<span class="sourceLineNo">2792</span> return ((HeapSize) cell).heapSize();<a name="line.2792"></a> +<span class="sourceLineNo">2793</span> }<a name="line.2793"></a> +<span class="sourceLineNo">2794</span> // TODO: Add sizing of references that hold the row, family, etc., arrays.<a name="line.2794"></a> +<span class="sourceLineNo">2795</span> return estimatedSerializedSizeOf(cell);<a name="line.2795"></a> +<span class="sourceLineNo">2796</span> }<a name="line.2796"></a> +<span class="sourceLineNo">2797</span><a name="line.2797"></a> +<span class="sourceLineNo">2798</span> /**<a name="line.2798"></a> +<span class="sourceLineNo">2799</span> * This method exists just to encapsulate how we serialize keys. To be replaced by a factory that<a name="line.2799"></a> +<span class="sourceLineNo">2800</span> * we query to figure what the Cell implementation is and then, what serialization engine to use<a name="line.2800"></a> +<span class="sourceLineNo">2801</span> * and further, how to serialize the key for inclusion in hfile index. TODO.<a name="line.2801"></a> +<span class="sourceLineNo">2802</span> * @param cell<a name="line.2802"></a> +<span class="sourceLineNo">2803</span> * @return The key portion of the Cell serialized in the old-school KeyValue way or null if passed<a name="line.2803"></a> +<span class="sourceLineNo">2804</span> * a null <code>cell</code><a name="line.2804"></a> +<span class="sourceLineNo">2805</span> */<a name="line.2805"></a> +<span class="sourceLineNo">2806</span> public static byte[] getCellKeySerializedAsKeyValueKey(final Cell cell) {<a name="line.2806"></a> +<span class="sourceLineNo">2807</span> if (cell == null) return null;<a name="line.2807"></a> +<span class="sourceLineNo">2808</span> byte[] b = new byte[KeyValueUtil.keyLength(cell)];<a name="line.2808"></a> +<span class="sourceLineNo">2809</span> KeyValueUtil.appendKeyTo(cell, b, 0);<a name="line.2809"></a> +<span class="sourceLineNo">2810</span> return b;<a name="line.2810"></a> +<span class="sourceLineNo">2811</span> }<a name="line.2811"></a> +<span class="sourceLineNo">2812</span><a name="line.2812"></a> +<span class="sourceLineNo">2813</span> /**<a name="line.2813"></a> +<span class="sourceLineNo">2814</span> * Create a Cell that is smaller than all other possible Cells for the given Cell's row.<a name="line.2814"></a> +<span class="sourceLineNo">2815</span> * @param cell<a name="line.2815"></a> +<span class="sourceLineNo">2816</span> * @return First possible Cell on passed Cell's row.<a name="line.2816"></a> +<span class="sourceLineNo">2817</span> */<a name="line.2817"></a> +<span class="sourceLineNo">2818</span> public static Cell createFirstOnRow(final Cell cell) {<a name="line.2818"></a> +<span class="sourceLineNo">2819</span> if (cell instanceof ByteBufferExtendedCell) {<a name="line.2819"></a> +<span class="sourceLineNo">2820</span> return new FirstOnRowByteBufferExtendedCell(<a name="line.2820"></a> +<span class="sourceLineNo">2821</span> ((ByteBufferExtendedCell) cell).getRowByteBuffer(),<a name="line.2821"></a> +<span class="sourceLineNo">2822</span> ((ByteBufferExtendedCell) cell).getRowPosition(), cell.getRowLength());<a name="line.2822"></a> +<span class="sourceLineNo">2823</span> }<a name="line.2823"></a> +<span class="sourceLineNo">2824</span> return new FirstOnRowCell(cell.getRowArray(), cell.getRowOffset(), cell.getRowLength());<a name="line.2824"></a> +<span class="sourceLineNo">2825</span> }<a name="line.2825"></a> +<span class="sourceLineNo">2826</span><a name="line.2826"></a> +<span class="sourceLineNo">2827</span> public static Cell createFirstOnRow(final byte[] row, int roffset, short rlength) {<a name="line.2827"></a> +<span class="sourceLineNo">2828</span> return new FirstOnRowCell(row, roffset, rlength);<a name="line.2828"></a> +<span class="sourceLineNo">2829</span> }<a name="line.2829"></a> +<span class="sourceLineNo">2830</span><a name="line.2830"></a> +<span class="sourceLineNo">2831</span> public static Cell createFirstOnRow(final byte[] row, final byte[] family, final byte[] col) {<a name="line.2831"></a> +<span class="sourceLineNo">2832</span> return createFirstOnRow(row, 0, (short) row.length, family, 0, (byte) family.length, col, 0,<a name="line.2832"></a> +<span class="sourceLineNo">2833</span> col.length);<a name="line.2833"></a> +<span class="sourceLineNo">2834</span> }<a name="line.2834"></a> +<span class="sourceLineNo">2835</span><a name="line.2835"></a> +<span class="sourceLineNo">2836</span> public static Cell createFirstOnRow(final byte[] row, int roffset, short rlength,<a name="line.2836"></a> +<span class="sourceLineNo">2837</span> final byte[] family, int foffset, byte flength, final byte[] col, int coffset, int clength) {<a name="line.2837"></a> +<span class="sourceLineNo">2838</span> return new FirstOnRowColCell(row, roffset, rlength, family, foffset, flength, col, coffset,<a name="line.2838"></a> +<span class="sourceLineNo">2839</span> clength);<a name="line.2839"></a> +<span class="sourceLineNo">2840</span> }<a name="line.2840"></a> +<span class="sourceLineNo">2841</span><a name="line.2841"></a> +<span class="sourceLineNo">2842</span> public static Cell createFirstOnRow(final byte[] row) {<a name="line.2842"></a> +<span class="sourceLineNo">2843</span> return createFirstOnRow(row, 0, (short) row.length);<a name="line.2843"></a> +<span class="sourceLineNo">2844</span> }<a name="line.2844"></a> +<span class="sourceLineNo">2845</span><a name="line.2845"></a> +<span class="sourceLineNo">2846</span> public static Cell createFirstOnRowFamily(Cell cell, byte[] fArray, int foff, int flen) {<a name="line.2846"></a> +<span class="sourceLineNo">2847</span> if (cell instanceof ByteBufferExtendedCell) {<a name="line.2847"></a> +<span class="sourceLineNo">2848</span> return new FirstOnRowColByteBufferExtendedCell(<a name="line.2848"></a> +<span class="sourceLineNo">2849</span> ((ByteBufferExtendedCell) cell).getRowByteBuffer(),<a name="line.2849"></a> +<span class="sourceLineNo">2850</span> ((ByteBufferExtendedCell) cell).getRowPosition(), cell.getRowLength(),<a name="line.2850"></a> +<span class="sourceLineNo">2851</span> ByteBuffer.wrap(fArray), foff, (byte) flen, HConstants.EMPTY_BYTE_BUFFER, 0, 0);<a name="line.2851"></a> +<span class="sourceLineNo">2852</span> }<a name="line.2852"></a> +<span class="sourceLineNo">2853</span> return new FirstOnRowColCell(cell.getRowArray(), cell.getRowOffset(), cell.getRowLength(),<a name="line.2853"></a> +<span class="sourceLineNo">2854</span> fArray, foff, (byte) flen, HConstants.EMPTY_BYTE_ARRAY, 0, 0);<a name="line.2854"></a> +<span class="sourceLineNo">2855</span> }<a name="line.2855"></a> +<span class="sourceLineNo">2856</span><a name="line.2856"></a> +<span class="sourceLineNo">2857</span> public static Cell createFirstOnRowCol(final Cell cell) {<a name="line.2857"></a> +<span class="sourceLineNo">2858</span> if (cell instanceof ByteBufferExtendedCell) {<a name="line.2858"></a> +<span class="sourceLineNo">2859</span> return new FirstOnRowColByteBufferExtendedCell(<a name="line.2859"></a> +<span class="sourceLineNo">2860</span> ((ByteBufferExtendedCell) cell).getRowByteBuffer(),<a name="line.2860"></a> +<span class="sourceLineNo">2861</span> ((ByteBufferExtendedCell) cell).getRowPosition(), cell.getRowLength(),<a name="line.2861"></a> +<span class="sourceLineNo">2862</span> HConstants.EMPTY_BYTE_BUFFER, 0, (byte) 0,<a name="line.2862"></a> +<span class="sourceLineNo">2863</span> ((ByteBufferExtendedCell) cell).getQualifierByteBuffer(),<a name="line.2863"></a> +<span class="sourceLineNo">2864</span> ((ByteBufferExtendedCell) cell).getQualifierPosition(), cell.getQualifierLength());<a name="line.2864"></a> +<span class="sourceLineNo">2865</span> }<a name="line.2865"></a> +<span class="sourceLineNo">2866</span> return new FirstOnRowColCell(cell.getRowArray(), cell.getRowOffset(), cell.getRowLength(),<a name="line.2866"></a> +<span class="sourceLineNo">2867</span> HConstants.EMPTY_BYTE_ARRAY, 0, (byte) 0, cell.getQualifierArray(),<a name="line.2867"></a> +<span class="sourceLineNo">2868</span> cell.getQualifierOffset(), cell.getQualifierLength());<a name="line.2868"></a> +<span class="sourceLineNo">2869</span> }<a name="line.2869"></a> +<span class="sourceLineNo">2870</span><a name="line.2870"></a> +<span class="sourceLineNo">2871</span> public static Cell createFirstOnNextRow(final Cell cell) {<a name="line.2871"></a> +<span class="sourceLineNo">2872</span> byte[] nextRow = new byte[cell.getRowLength() + 1];<a name="line.2872"></a> +<span class="sourceLineNo">2873</span> CellUtil.copyRowTo(cell, nextRow, 0);<a name="line.2873"></a> +<span class="sourceLineNo">2874</span> nextRow[nextRow.length - 1] = 0;// maybe not necessary<a name="line.2874"></a> +<span class="sourceLineNo">2875</span> return new FirstOnRowCell(nextRow, 0, (short) nextRow.length);<a name="line.2875"></a> +<span class="sourceLineNo">2876</span> }<a name="line.2876"></a> +<span class="sourceLineNo">2877</span><a name="line.2877"></a> +<span class="sourceLineNo">2878</span> /**<a name="line.2878"></a> +<span class="sourceLineNo">2879</span> * Create a Cell that is smaller than all other possible Cells for the given Cell's rk:cf and<a name="line.2879"></a> +<span class="sourceLineNo">2880</span> * passed qualifier.<a name="line.2880"></a> +<span class="sourceLineNo">2881</span> * @param cell<a name="line.2881"></a> +<span class="sourceLineNo">2882</span> * @param qArray<a name="line.2882"></a> +<span class="sourceLineNo">2883</span> * @param qoffest<a name="line.2883"></a> +<span class="sourceLineNo">2884</span> * @param qlength<a name="line.2884"></a> +<span class="sourceLineNo">2885</span> * @return Last possible Cell on passed Cell's rk:cf and passed qualifier.<a name="line.2885"></a> +<span class="sourceLineNo">2886</span> */<a name="line.2886"></a> +<span class="sourceLineNo">2887</span> public static Cell createFirstOnRowCol(final Cell cell, byte[] qArray, int qoffest, int qlength) {<a name="line.2887"></a> +<span class="sourceLineNo">2888</span> if (cell instanceof ByteBufferExtendedCell) {<a name="line.2888"></a> +<span class="sourceLineNo">2889</span> return new FirstOnRowColByteBufferExtendedCell(<a name="line.2889"></a> +<span class="sourceLineNo">2890</span> ((ByteBufferExtendedCell) cell).getRowByteBuffer(),<a name="line.2890"></a> +<span class="sourceLineNo">2891</span> ((ByteBufferExtendedCell) cell).getRowPosition(), cell.getRowLength(),<a name="line.2891"></a> +<span class="sourceLineNo">2892</span> ((ByteBufferExtendedCell) cell).getFamilyByteBuffer(),<a name="line.2892"></a> +<span class="sourceLineNo">2893</span> ((ByteBufferExtendedCell) cell).getFamilyPosition(), cell.getFamilyLength(),<a name="line.2893"></a> +<span class="sourceLineNo">2894</span> ByteBuffer.wrap(qArray), qoffest, qlength);<a name="line.2894"></a> +<span class="sourceLineNo">2895</span> }<a name="line.2895"></a> +<span class="sourceLineNo">2896</span> return new FirstOnRowColCell(cell.getRowArray(), cell.getRowOffset(), cell.getRowLength(),<a name="line.2896"></a> +<span class="sourceLineNo">2897</span> cell.getFamilyArray(), cell.getFamilyOffset(), cell.getFamilyLength(), qArray, qoffest,<a name="line.2897"></a> +<span class="sourceLineNo">2898</span> qlength);<a name="line.2898"></a> +<span class="sourceLineNo">2899</span> }<a name="line.2899"></a> +<span class="sourceLineNo">2900</span><a name="line.2900"></a> +<span class="sourceLineNo">2901</span> /**<a name="line.2901"></a> +<span class="sourceLineNo">2902</span> * Creates the first cell with the row/family/qualifier of this cell and the given timestamp. Uses<a name="line.2902"></a> +<span class="sourceLineNo">2903</span> * the "maximum" type that guarantees that the new cell is the lowest possible for this<a name="line.2903"></a> +<span class="sourceLineNo">2904</span> * combination of row, family, qualifier, and timestamp. This cell's own timestamp is ignored.<a name="line.2904"></a> +<span class="sourceLineNo">2905</span> * @param cell - cell<a name="line.2905"></a> +<span class="sourceLineNo">2906</span> * @param ts<a name="line.2906"></a> +<span class="sourceLineNo">2907</span> */<a name="line.2907"></a> +<span class="sourceLineNo">2908</span> public static Cell createFirstOnRowColTS(Cell cell, long ts) {<a name="line.2908"></a> +<span class="sourceLineNo">2909</span> if (cell instanceof ByteBufferExtendedCell) {<a name="line.2909"></a> +<span class="sourceLineNo">2910</span> return new FirstOnRowColTSByteBufferExtendedCell(<a name="line.2910"></a> +<span class="sourceLineNo">2911</span> ((ByteBufferExtendedCell) cell).getRowByteBuffer(),<a name="line.2911"></a> +<span class="sourceLineNo">2912</span> ((ByteBufferExtendedCell) cell).getRowPosition(), cell.getRowLength(),<a name="line.2912"></a> +<span class="sourceLineNo">2913</span> ((ByteBufferExtendedCell) cell).getFamilyByteBuffer(),<a name="line.2913"></a> +<span class="sourceLineNo">2914</span> ((ByteBufferExtendedCell) cell).getFamilyPosition(), cell.getFamilyLength(),<a name="line.2914"></a> +<span class="sourceLineNo">2915</span> ((ByteBufferExtendedCell) cell).getQualifierByteBuffer(),<a name="line.2915"></a> +<span class="sourceLineNo">2916</span> ((ByteBufferExtendedCell) cell).getQualifierPosition(), cell.getQualifierLength(), ts);<a name="line.2916"></a> +<span class="sourceLineNo">2917</span> }<a name="line.2917"></a> +<span class="sourceLineNo">2918</span> return new FirstOnRowColTSCell(cell.getRowArray(), cell.getRowOffset(), cell.getRowLength(),<a name="line.2918"></a> +<span class="sourceLineNo">2919</span> cell.getFamilyArray(), cell.getFamilyOffset(), cell.getFamilyLength(),<a name="line.2919"></a> +<span class="sourceLineNo">2920</span> cell.getQualifierArray(), cell.getQualifierOffset(), cell.getQualifierLength(), ts);<a name="line.2920"></a> +<span class="sourceLineNo">2921</span> }<a name="line.2921"></a> +<span class="sourceLineNo">2922</span><a name="line.2922"></a> +<span class="sourceLineNo">2923</span> /**<a name="line.2923"></a> +<span class="sourceLineNo">2924</span> * Create a Cell that is larger than all other possible Cells for the given Cell's row.<a name="line.2924"></a> +<span class="sourceLineNo">2925</span> * @param cell<a name="line.2925"></a> +<span class="sourceLineNo">2926</span> * @return Last possible Cell on passed Cell's row.<a name="line.2926"></a> +<span class="sourceLineNo">2927</span> */<a name="line.2927"></a> +<span class="sourceLineNo">2928</span> public static Cell createLastOnRow(final Cell cell) {<a name="line.2928"></a> +<span class="sourceLineNo">2929</span> if (cell instanceof ByteBufferExtendedCell) {<a name="line.2929"></a> +<span class="sourceLineNo">2930</span> return new LastOnRowByteBufferExtendedCell(((ByteBufferExtendedCell) cell).getRowByteBuffer(),<a name="line.2930"></a> +<span class="sourceLineNo">2931</span> ((ByteBufferExtendedCell) cell).getRowPosition(), cell.getRowLength());<a name="line.2931"></a> +<span class="sourceLineNo">2932</span> }<a name="line.2932"></a> +<span class="sourceLineNo">2933</span> return new LastOnRowCell(cell.getRowArray(), cell.getRowOffset(), cell.getRowLength());<a name="line.2933"></a> +<span class="sourceLineNo">2934</span> }<a name="line.2934"></a> +<span class="sourceLineNo">2935</span><a name="line.2935"></a> +<span class="sourceLineNo">2936</span> public static Cell createLastOnRow(final byte[] row) {<a name="line.2936"></a> +<span class="sourceLineNo">2937</span> return new LastOnRowCell(row, 0, (short) row.length);<a name="line.2937"></a> +<span class="sourceLineNo">2938</span> }<a name="line.2938"></a> +<span class="sourceLineNo">2939</span><a name="line.2939"></a> +<span class="sourceLineNo">2940</span> /**<a name="line.2940"></a> +<span class="sourceLineNo">2941</span> * Create a Cell that is larger than all other possible Cells for the given Cell's rk:cf:q. Used<a name="line.2941"></a> +<span class="sourceLineNo">2942</span> * in creating "fake keys" for the multi-column Bloom filter optimization to skip the row/column<a name="line.2942"></a> +<span class="sourceLineNo">2943</span> * we already know is not in the file.<a name="line.2943"></a> +<span class="sourceLineNo">2944</span> * @param cell<a name="line.2944"></a> +<span class="sourceLineNo">2945</span> * @return Last possible Cell on passed Cell's rk:cf:q.<a name="line.2945"></a> +<span class="sourceLineNo">2946</span> */<a name="line.2946"></a> +<span class="sourceLineNo">2947</span> public static Cell createLastOnRowCol(final Cell cell) {<a name="line.2947"></a> +<span class="sourceLineNo">2948</span> if (cell instanceof ByteBufferExtendedCell) {<a name="line.2948"></a> +<span class="sourceLineNo">2949</span> return new LastOnRowColByteBufferExtendedCell(<a name="line.2949"></a> +<span class="sourceLineNo">2950</span> ((ByteBufferExtendedCell) cell).getRowByteBuffer(),<a name="line.2950"></a> +<span class="sourceLineNo">2951</span> ((ByteBufferExtendedCell) cell).getRowPosition(), cell.getRowLength(),<a name="line.2951"></a> +<span class="sourceLineNo">2952</span> ((ByteBufferExtendedCell) cell).getFamilyByteBuffer(),<a name="line.2952"></a> +<span class="sourceLineNo">2953</span> ((ByteBufferExtendedCell) cell).getFamilyPosition(), cell.getFamilyLength(),<a name="line.2953"></a> +<span class="sourceLineNo">2954</span> ((ByteBufferExtendedCell) cell).getQualifierByteBuffer(),<a name="line.2954"></a> +<span class="sourceLineNo">2955</span> ((ByteBufferExtendedCell) cell).getQualifierPosition(), cell.getQualifierLength());<a name="line.2955"></a> +<span class="sourceLineNo">2956</span> }<a name="line.2956"></a> +<span class="sourceLineNo">2957</span> return new LastOnRowColCell(cell.getRowArray(), cell.getRowOffset(), cell.getRowLength(),<a name="line.2957"></a> +<span class="sourceLineNo">2958</span> cell.getFamilyArray(), cell.getFamilyOffset(), cell.getFamilyLength(),<a name="line.2958"></a> +<span class="sourceLineNo">2959</span> cell.getQualifierArray(), cell.getQualifierOffset(), cell.getQualifierLength());<a name="line.2959"></a> +<span class="sourceLineNo">2960</span> }<a name="line.2960"></a> +<span class="sourceLineNo">2961</span><a name="line.2961"></a> +<span class="sourceLineNo">2962</span> /**<a name="line.2962"></a> +<span class="sourceLineNo">2963</span> * Create a Delete Family Cell for the specified row and family that would be smaller than all<a name="line.2963"></a> +<span class="sourceLineNo">2964</span> * other possible Delete Family KeyValues that have the same row and family. Used for seeking.<a name="line.2964"></a> +<span class="sourceLineNo">2965</span> * @param row - row key (arbitrary byte array)<a name="line.2965"></a> +<span class="sourceLineNo">2966</span> * @param fam - family name<a name="line.2966"></a> +<span class="sourceLineNo">2967</span> * @return First Delete Family possible key on passed <code>row</code>.<a name="line.2967"></a> +<span class="sourceLineNo">2968</span> */<a name="line.2968"></a> +<span class="sourceLineNo">2969</span> public static Cell createFirstDeleteFamilyCellOnRow(final byte[] row, final byte[] fam) {<a name="line.2969"></a> +<span class="sourceLineNo">2970</span> return new FirstOnRowDeleteFamilyCell(row, fam);<a name="line.2970"></a> +<span class="sourceLineNo">2971</span> }<a name="line.2971"></a> +<span class="sourceLineNo">2972</span>}<a name="line.2972"></a>