Skip to content

Commit

Permalink
Simplify naming around native schema number index
Browse files Browse the repository at this point in the history
  • Loading branch information
burqen authored and tinwelint committed Jun 26, 2017
1 parent 5726570 commit 3c5f0f5
Show file tree
Hide file tree
Showing 19 changed files with 101 additions and 105 deletions.
Expand Up @@ -30,7 +30,7 @@
* *
* @param <VALUE> type of values being merged. * @param <VALUE> type of values being merged.
*/ */
class ConflictDetectingValueMerger<VALUE extends SchemaNumberValue> implements ValueMerger<VALUE> class ConflictDetectingValueMerger<VALUE extends NumberValue> implements ValueMerger<VALUE>
{ {
private boolean conflict; private boolean conflict;
private long existingNodeId; private long existingNodeId;
Expand Down
Expand Up @@ -41,7 +41,7 @@ class FailureHeaderWriter implements Consumer<PageCursor>
public void accept( PageCursor cursor ) public void accept( PageCursor cursor )
{ {
byte[] bytesToWrite = failureBytes; byte[] bytesToWrite = failureBytes;
cursor.putByte( NativeSchemaIndexPopulator.BYTE_FAILED ); cursor.putByte( NativeSchemaNumberIndexPopulator.BYTE_FAILED );
int availableSpace = cursor.getCurrentPageSize() - cursor.getOffset(); int availableSpace = cursor.getCurrentPageSize() - cursor.getOffset();
if ( bytesToWrite.length + 2 > availableSpace ) if ( bytesToWrite.length + 2 > availableSpace )
{ {
Expand Down
Expand Up @@ -36,7 +36,7 @@
* @param <KEY> type of keys in tree. * @param <KEY> type of keys in tree.
* @param <VALUE> type of values in tree. * @param <VALUE> type of values in tree.
*/ */
class FullScanNonUniqueIndexSampler<KEY extends SchemaNumberKey, VALUE extends SchemaNumberValue> class FullScanNonUniqueIndexSampler<KEY extends NumberKey, VALUE extends NumberValue>
extends NonUniqueIndexSampler.Adapter extends NonUniqueIndexSampler.Adapter
{ {
private final GBPTree<KEY,VALUE> gbpTree; private final GBPTree<KEY,VALUE> gbpTree;
Expand Down
Expand Up @@ -32,16 +32,16 @@
import org.neo4j.storageengine.api.schema.IndexSample; import org.neo4j.storageengine.api.schema.IndexSample;


/** /**
* {@link NativeSchemaIndexPopulator} which can accept duplicate values (for different entity ids). * {@link NativeSchemaNumberIndexPopulator} which can accept duplicate values (for different entity ids).
*/ */
class NonUniqueNativeSchemaIndexPopulator<KEY extends SchemaNumberKey, VALUE extends SchemaNumberValue> class NativeNonUniqueSchemaNumberIndexPopulator<KEY extends NumberKey, VALUE extends NumberValue>
extends NativeSchemaIndexPopulator<KEY,VALUE> extends NativeSchemaNumberIndexPopulator<KEY,VALUE>
{ {
private final IndexSamplingConfig samplingConfig; private final IndexSamplingConfig samplingConfig;
private boolean updateSampling; private boolean updateSampling;
private NonUniqueIndexSampler sampler; private NonUniqueIndexSampler sampler;


NonUniqueNativeSchemaIndexPopulator( PageCache pageCache, File storeFile, Layout<KEY,VALUE> layout, NativeNonUniqueSchemaNumberIndexPopulator( PageCache pageCache, File storeFile, Layout<KEY,VALUE> layout,
RecoveryCleanupWorkCollector recoveryCleanupWorkCollector, IndexSamplingConfig samplingConfig ) RecoveryCleanupWorkCollector recoveryCleanupWorkCollector, IndexSamplingConfig samplingConfig )
{ {
super( pageCache, storeFile, layout, recoveryCleanupWorkCollector ); super( pageCache, storeFile, layout, recoveryCleanupWorkCollector );
Expand Down
Expand Up @@ -47,10 +47,10 @@
/** /**
* {@link IndexPopulator} backed by a {@link GBPTree}. * {@link IndexPopulator} backed by a {@link GBPTree}.
* *
* @param <KEY> type of {@link SchemaNumberKey}. * @param <KEY> type of {@link NumberKey}.
* @param <VALUE> type of {@link SchemaNumberValue}. * @param <VALUE> type of {@link NumberValue}.
*/ */
public abstract class NativeSchemaIndexPopulator<KEY extends SchemaNumberKey, VALUE extends SchemaNumberValue> public abstract class NativeSchemaNumberIndexPopulator<KEY extends NumberKey, VALUE extends NumberValue>
implements IndexPopulator implements IndexPopulator
{ {
static final byte BYTE_ONLINE = 1; static final byte BYTE_ONLINE = 1;
Expand All @@ -70,7 +70,7 @@ public abstract class NativeSchemaIndexPopulator<KEY extends SchemaNumberKey, VA


GBPTree<KEY,VALUE> tree; GBPTree<KEY,VALUE> tree;


NativeSchemaIndexPopulator( PageCache pageCache, File storeFile, Layout<KEY,VALUE> layout, NativeSchemaNumberIndexPopulator( PageCache pageCache, File storeFile, Layout<KEY,VALUE> layout,
RecoveryCleanupWorkCollector recoveryCleanupWorkCollector ) RecoveryCleanupWorkCollector recoveryCleanupWorkCollector )
{ {
this.pageCache = pageCache; this.pageCache = pageCache;
Expand Down
Expand Up @@ -29,14 +29,14 @@
import org.neo4j.storageengine.api.schema.IndexSample; import org.neo4j.storageengine.api.schema.IndexSample;


/** /**
* {@link NativeSchemaIndexPopulator} which can enforces unique values. * {@link NativeSchemaNumberIndexPopulator} which can enforces unique values.
*/ */
class UniqueNativeSchemaIndexPopulator<KEY extends SchemaNumberKey, VALUE extends SchemaNumberValue> class NativeUniqueSchemaNumberIndexPopulator<KEY extends NumberKey, VALUE extends NumberValue>
extends NativeSchemaIndexPopulator<KEY,VALUE> extends NativeSchemaNumberIndexPopulator<KEY,VALUE>
{ {
private final UniqueIndexSampler sampler; private final UniqueIndexSampler sampler;


UniqueNativeSchemaIndexPopulator( PageCache pageCache, File storeFile, Layout<KEY,VALUE> layout, NativeUniqueSchemaNumberIndexPopulator( PageCache pageCache, File storeFile, Layout<KEY,VALUE> layout,
RecoveryCleanupWorkCollector recoveryCleanupWorkCollector ) RecoveryCleanupWorkCollector recoveryCleanupWorkCollector )
{ {
super( pageCache, storeFile, layout, recoveryCleanupWorkCollector ); super( pageCache, storeFile, layout, recoveryCleanupWorkCollector );
Expand Down
Expand Up @@ -21,15 +21,13 @@


import org.neo4j.values.Value; import org.neo4j.values.Value;


import static org.neo4j.kernel.impl.index.schema.SchemaNumberValueConversion.assertValidSingleNumber;

/** /**
* Includes comparison value and entity id (to be able to handle non-unique values). * Includes comparison value and entity id (to be able to handle non-unique values).
* Comparison value is basically any number as a double, a conversion which is lossy by nature, * Comparison value is basically any number as a double, a conversion which is lossy by nature,
* especially for higher decimal values. Actual value is stored in {@link SchemaNumberValue} * especially for higher decimal values. Actual value is stored in {@link NumberValue}
* for ability to filter accidental coersions directly internally. * for ability to filter accidental coersions directly internally.
*/ */
class NonUniqueSchemaNumberKey implements SchemaNumberKey class NonUniqueNumberKey implements NumberKey
{ {
static final int SIZE = static final int SIZE =
Long.SIZE + /* compare value (double represented by long) */ Long.SIZE + /* compare value (double represented by long) */
Expand All @@ -41,7 +39,7 @@ class NonUniqueSchemaNumberKey implements SchemaNumberKey
@Override @Override
public void from( long entityId, Value[] values ) public void from( long entityId, Value[] values )
{ {
this.value = assertValidSingleNumber( values ).doubleValue(); this.value = NumberValueConversion.assertValidSingleNumber( values ).doubleValue();
this.entityId = entityId; this.entityId = entityId;
} }


Expand Down
Expand Up @@ -25,66 +25,66 @@
/** /**
* {@link Layout} for numbers where numbers doesn't need to be unique. * {@link Layout} for numbers where numbers doesn't need to be unique.
*/ */
public class NonUniqueSchemaNumberIndexLayout implements Layout<NonUniqueSchemaNumberKey,NonUniqueSchemaNumberValue> public class NonUniqueNumberLayout implements Layout<NonUniqueNumberKey,NonUniqueNumberValue>
{ {
private static final String IDENTIFIER_NAME = "NUNI"; private static final String IDENTIFIER_NAME = "NUNI";


@Override @Override
public NonUniqueSchemaNumberKey newKey() public NonUniqueNumberKey newKey()
{ {
return new NonUniqueSchemaNumberKey(); return new NonUniqueNumberKey();
} }


@Override @Override
public NonUniqueSchemaNumberKey copyKey( NonUniqueSchemaNumberKey key, public NonUniqueNumberKey copyKey( NonUniqueNumberKey key,
NonUniqueSchemaNumberKey into ) NonUniqueNumberKey into )
{ {
into.value = key.value; into.value = key.value;
into.entityId = key.entityId; into.entityId = key.entityId;
return into; return into;
} }


@Override @Override
public NonUniqueSchemaNumberValue newValue() public NonUniqueNumberValue newValue()
{ {
return new NonUniqueSchemaNumberValue(); return new NonUniqueNumberValue();
} }


@Override @Override
public int keySize() public int keySize()
{ {
return NonUniqueSchemaNumberKey.SIZE; return NonUniqueNumberKey.SIZE;
} }


@Override @Override
public int valueSize() public int valueSize()
{ {
return NonUniqueSchemaNumberValue.SIZE; return NonUniqueNumberValue.SIZE;
} }


@Override @Override
public void writeKey( PageCursor cursor, NonUniqueSchemaNumberKey key ) public void writeKey( PageCursor cursor, NonUniqueNumberKey key )
{ {
cursor.putLong( Double.doubleToRawLongBits( key.value ) ); cursor.putLong( Double.doubleToRawLongBits( key.value ) );
cursor.putLong( key.entityId ); cursor.putLong( key.entityId );
} }


@Override @Override
public void writeValue( PageCursor cursor, NonUniqueSchemaNumberValue key ) public void writeValue( PageCursor cursor, NonUniqueNumberValue key )
{ {
cursor.putByte( key.type ); cursor.putByte( key.type );
cursor.putLong( key.rawValueBits ); cursor.putLong( key.rawValueBits );
} }


@Override @Override
public void readKey( PageCursor cursor, NonUniqueSchemaNumberKey into ) public void readKey( PageCursor cursor, NonUniqueNumberKey into )
{ {
into.value = Double.longBitsToDouble( cursor.getLong() ); into.value = Double.longBitsToDouble( cursor.getLong() );
into.entityId = cursor.getLong(); into.entityId = cursor.getLong();
} }


@Override @Override
public void readValue( PageCursor cursor, NonUniqueSchemaNumberValue into ) public void readValue( PageCursor cursor, NonUniqueNumberValue into )
{ {
into.type = cursor.getByte(); into.type = cursor.getByte();
into.rawValueBits = cursor.getLong(); into.rawValueBits = cursor.getLong();
Expand All @@ -93,7 +93,7 @@ public void readValue( PageCursor cursor, NonUniqueSchemaNumberValue into )
@Override @Override
public long identifier() public long identifier()
{ {
return Layout.namedIdentifier( IDENTIFIER_NAME, NonUniqueSchemaNumberValue.SIZE ); return Layout.namedIdentifier( IDENTIFIER_NAME, NonUniqueNumberValue.SIZE );
} }


@Override @Override
Expand All @@ -109,7 +109,7 @@ public int minorVersion()
} }


@Override @Override
public int compare( NonUniqueSchemaNumberKey o1, NonUniqueSchemaNumberKey o2 ) public int compare( NonUniqueNumberKey o1, NonUniqueNumberKey o2 )
{ {
int compare = Double.compare( o1.value, o2.value ); int compare = Double.compare( o1.value, o2.value );
return compare != 0 ? compare : Long.compare( o1.entityId, o2.entityId ); return compare != 0 ? compare : Long.compare( o1.entityId, o2.entityId );
Expand Down
Expand Up @@ -22,14 +22,13 @@
import org.neo4j.values.Value; import org.neo4j.values.Value;


import static java.lang.String.format; import static java.lang.String.format;

import static org.neo4j.kernel.impl.index.schema.NumberValueConversion.assertValidSingleNumber;
import static org.neo4j.kernel.impl.index.schema.SchemaNumberValueConversion.assertValidSingleNumber; import static org.neo4j.kernel.impl.index.schema.NumberValueConversion.toValue;
import static org.neo4j.kernel.impl.index.schema.SchemaNumberValueConversion.toValue;


/** /**
* Relies on its key counterpart to supply entity id, since the key needs entity id anyway. * Relies on its key counterpart to supply entity id, since the key needs entity id anyway.
*/ */
class NonUniqueSchemaNumberValue extends SchemaNumberValue class NonUniqueNumberValue extends NumberValue
{ {
static final int SIZE = static final int SIZE =
Byte.SIZE + /* type */ Byte.SIZE + /* type */
Expand Down
Expand Up @@ -24,7 +24,7 @@
/** /**
* Key in a native schema index for numbers. * Key in a native schema index for numbers.
*/ */
interface SchemaNumberKey interface NumberKey
{ {
void from( long entityId, Value[] values ); void from( long entityId, Value[] values );


Expand Down
Expand Up @@ -26,7 +26,7 @@
* Value in a {@link GBPTree} handling numbers suitable for schema indexing. * Value in a {@link GBPTree} handling numbers suitable for schema indexing.
* Contains actual number for internal filtering after accidental query hits due to double value coersion. * Contains actual number for internal filtering after accidental query hits due to double value coersion.
*/ */
abstract class SchemaNumberValue abstract class NumberValue
{ {
static final byte LONG = 0; static final byte LONG = 0;
static final byte FLOAT = 1; static final byte FLOAT = 1;
Expand Down
Expand Up @@ -22,14 +22,14 @@
import org.neo4j.values.Value; import org.neo4j.values.Value;
import org.neo4j.values.Values; import org.neo4j.values.Values;


import static org.neo4j.kernel.impl.index.schema.SchemaNumberValue.DOUBLE; import static org.neo4j.kernel.impl.index.schema.NumberValue.DOUBLE;
import static org.neo4j.kernel.impl.index.schema.SchemaNumberValue.FLOAT; import static org.neo4j.kernel.impl.index.schema.NumberValue.FLOAT;
import static org.neo4j.kernel.impl.index.schema.SchemaNumberValue.LONG; import static org.neo4j.kernel.impl.index.schema.NumberValue.LONG;


/** /**
* Utilities for converting number values to and from different representations. * Utilities for converting number values to and from different representations.
*/ */
class SchemaNumberValueConversion class NumberValueConversion
{ {
static Number assertValidSingleNumber( Value[] values ) static Number assertValidSingleNumber( Value[] values )
{ {
Expand Down
Expand Up @@ -21,15 +21,15 @@


import org.neo4j.values.Value; import org.neo4j.values.Value;


import static org.neo4j.kernel.impl.index.schema.SchemaNumberValueConversion.assertValidSingleNumber; import static org.neo4j.kernel.impl.index.schema.NumberValueConversion.assertValidSingleNumber;


/** /**
* Contains only comparison value, which means that all values needs to be unique. * Contains only comparison value, which means that all values needs to be unique.
* Comparison value is basically any number as a double, a conversion which is lossy by nature, * Comparison value is basically any number as a double, a conversion which is lossy by nature,
* especially for higher decimal values. Actual value is stored in {@link SchemaNumberValue} * especially for higher decimal values. Actual value is stored in {@link NumberValue}
* for ability to filter accidental coersions directly internally. * for ability to filter accidental coersions directly internally.
*/ */
class UniqueSchemaNumberKey implements SchemaNumberKey class UniqueNumberKey implements NumberKey
{ {
static final int SIZE = Long.SIZE; static final int SIZE = Long.SIZE;


Expand Down
Expand Up @@ -25,64 +25,64 @@
/** /**
* {@link Layout} for numbers where numbers need to be unique. * {@link Layout} for numbers where numbers need to be unique.
*/ */
class UniqueSchemaNumberIndexLayout implements Layout<UniqueSchemaNumberKey,UniqueSchemaNumberValue> class UniqueNumberLayout implements Layout<UniqueNumberKey,UniqueNumberValue>
{ {
private static final String IDENTIFIER_NAME = "UNI"; private static final String IDENTIFIER_NAME = "UNI";


@Override @Override
public UniqueSchemaNumberKey newKey() public UniqueNumberKey newKey()
{ {
return new UniqueSchemaNumberKey(); return new UniqueNumberKey();
} }


@Override @Override
public UniqueSchemaNumberKey copyKey( UniqueSchemaNumberKey key, UniqueSchemaNumberKey into ) public UniqueNumberKey copyKey( UniqueNumberKey key, UniqueNumberKey into )
{ {
into.value = key.value; into.value = key.value;
into.isHighest = key.isHighest; into.isHighest = key.isHighest;
return into; return into;
} }


@Override @Override
public UniqueSchemaNumberValue newValue() public UniqueNumberValue newValue()
{ {
return new UniqueSchemaNumberValue(); return new UniqueNumberValue();
} }


@Override @Override
public int keySize() public int keySize()
{ {
return UniqueSchemaNumberKey.SIZE; return UniqueNumberKey.SIZE;
} }


@Override @Override
public int valueSize() public int valueSize()
{ {
return UniqueSchemaNumberValue.SIZE; return UniqueNumberValue.SIZE;
} }


@Override @Override
public void writeKey( PageCursor cursor, UniqueSchemaNumberKey key ) public void writeKey( PageCursor cursor, UniqueNumberKey key )
{ {
cursor.putLong( Double.doubleToRawLongBits( key.value ) ); cursor.putLong( Double.doubleToRawLongBits( key.value ) );
} }


@Override @Override
public void readKey( PageCursor cursor, UniqueSchemaNumberKey into ) public void readKey( PageCursor cursor, UniqueNumberKey into )
{ {
into.value = Double.longBitsToDouble( cursor.getLong() ); into.value = Double.longBitsToDouble( cursor.getLong() );
} }


@Override @Override
public void writeValue( PageCursor cursor, UniqueSchemaNumberValue value ) public void writeValue( PageCursor cursor, UniqueNumberValue value )
{ {
cursor.putByte( value.type ); cursor.putByte( value.type );
cursor.putLong( value.rawValueBits ); cursor.putLong( value.rawValueBits );
cursor.putLong( value.entityId ); cursor.putLong( value.entityId );
} }


@Override @Override
public void readValue( PageCursor cursor, UniqueSchemaNumberValue into ) public void readValue( PageCursor cursor, UniqueNumberValue into )
{ {
into.type = cursor.getByte(); into.type = cursor.getByte();
into.rawValueBits = cursor.getLong(); into.rawValueBits = cursor.getLong();
Expand All @@ -92,7 +92,7 @@ public void readValue( PageCursor cursor, UniqueSchemaNumberValue into )
@Override @Override
public long identifier() public long identifier()
{ {
return Layout.namedIdentifier( IDENTIFIER_NAME, UniqueSchemaNumberValue.SIZE ); return Layout.namedIdentifier( IDENTIFIER_NAME, UniqueNumberValue.SIZE );
} }


@Override @Override
Expand All @@ -108,7 +108,7 @@ public int minorVersion()
} }


@Override @Override
public int compare( UniqueSchemaNumberKey o1, UniqueSchemaNumberKey o2 ) public int compare( UniqueNumberKey o1, UniqueNumberKey o2 )
{ {
int comparison = Double.compare( o1.value, o2.value ); int comparison = Double.compare( o1.value, o2.value );
if ( comparison == 0 ) if ( comparison == 0 )
Expand Down

0 comments on commit 3c5f0f5

Please sign in to comment.