Skip to content

Commit 0aaa25a

Browse files
knutwalkers1ckorazve
committed
Move usages of Neo4j Values from nodes builder to native projection
Co-authored-by: Martin Junghanns <[email protected]> Co-authored-by: Olga Razvenskaia <[email protected]>
1 parent 1f5d016 commit 0aaa25a

File tree

8 files changed

+6
-62
lines changed

8 files changed

+6
-62
lines changed

core/src/main/java/org/neo4j/gds/core/loading/nodeproperties/DoubleArrayNodePropertiesBuilder.java

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -28,9 +28,7 @@
2828
import org.neo4j.gds.core.concurrency.DefaultPool;
2929
import org.neo4j.gds.core.concurrency.ParallelUtil;
3030
import org.neo4j.gds.utils.GdsNeo4jValueConversion;
31-
import org.neo4j.gds.utils.Neo4jValueConversion;
3231
import org.neo4j.gds.values.GdsValue;
33-
import org.neo4j.values.storable.Value;
3432

3533
import java.util.Arrays;
3634
import java.util.stream.Collectors;
@@ -57,11 +55,6 @@ public void set(long neoNodeId, double[] value) {
5755
builder.set(neoNodeId, value);
5856
}
5957

60-
@Override
61-
public void setValue(long neoNodeId, Value value) {
62-
set(neoNodeId, Neo4jValueConversion.getDoubleArray(value));
63-
}
64-
6558
@Override
6659
public void setValue(long neoNodeId, GdsValue value) {
6760
set(neoNodeId, GdsNeo4jValueConversion.getDoubleArray(value));

core/src/main/java/org/neo4j/gds/core/loading/nodeproperties/DoubleNodePropertiesBuilder.java

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -28,9 +28,7 @@
2828
import org.neo4j.gds.core.concurrency.DefaultPool;
2929
import org.neo4j.gds.core.concurrency.ParallelUtil;
3030
import org.neo4j.gds.utils.GdsNeo4jValueConversion;
31-
import org.neo4j.gds.utils.Neo4jValueConversion;
3231
import org.neo4j.gds.values.GdsValue;
33-
import org.neo4j.values.storable.Value;
3432

3533
import java.lang.invoke.MethodHandles;
3634
import java.lang.invoke.VarHandle;
@@ -80,12 +78,6 @@ public void set(long neoNodeId, double value) {
8078
updateMaxValue(value);
8179
}
8280

83-
@Override
84-
public void setValue(long neoNodeId, Value value) {
85-
double doubleValue = Neo4jValueConversion.getDoubleValue(value);
86-
set(neoNodeId, doubleValue);
87-
}
88-
8981
@Override
9082
public void setValue(long neoNodeId, GdsValue value) {
9183
double doubleValue = GdsNeo4jValueConversion.getDoubleValue(value);

core/src/main/java/org/neo4j/gds/core/loading/nodeproperties/FloatArrayNodePropertiesBuilder.java

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -28,9 +28,7 @@
2828
import org.neo4j.gds.core.concurrency.DefaultPool;
2929
import org.neo4j.gds.core.concurrency.ParallelUtil;
3030
import org.neo4j.gds.utils.GdsNeo4jValueConversion;
31-
import org.neo4j.gds.utils.Neo4jValueConversion;
3231
import org.neo4j.gds.values.GdsValue;
33-
import org.neo4j.values.storable.Value;
3432

3533
import java.util.Arrays;
3634
import java.util.stream.Collectors;
@@ -55,11 +53,6 @@ public void set(long neoNodeId, float[] value) {
5553
builder.set(neoNodeId, value);
5654
}
5755

58-
@Override
59-
public void setValue(long neoNodeId, Value value) {
60-
set(neoNodeId, Neo4jValueConversion.getFloatArray(value));
61-
}
62-
6356
@Override
6457
public void setValue(long neoNodeId, GdsValue value) {
6558
set(neoNodeId, GdsNeo4jValueConversion.getFloatArray(value));

core/src/main/java/org/neo4j/gds/core/loading/nodeproperties/InnerNodePropertiesBuilder.java

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,12 +22,9 @@
2222
import org.neo4j.gds.api.PartialIdMap;
2323
import org.neo4j.gds.api.properties.nodes.NodePropertyValues;
2424
import org.neo4j.gds.values.GdsValue;
25-
import org.neo4j.values.storable.Value;
2625

2726
public interface InnerNodePropertiesBuilder {
2827

29-
void setValue(long neoNodeId, Value value);
30-
3128
void setValue(long neoNodeId, GdsValue value);
3229

3330
/**

core/src/main/java/org/neo4j/gds/core/loading/nodeproperties/LongArrayNodePropertiesBuilder.java

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -28,9 +28,7 @@
2828
import org.neo4j.gds.core.concurrency.DefaultPool;
2929
import org.neo4j.gds.core.concurrency.ParallelUtil;
3030
import org.neo4j.gds.utils.GdsNeo4jValueConversion;
31-
import org.neo4j.gds.utils.Neo4jValueConversion;
3231
import org.neo4j.gds.values.GdsValue;
33-
import org.neo4j.values.storable.Value;
3432

3533
import java.util.Arrays;
3634
import java.util.stream.Collectors;
@@ -55,11 +53,6 @@ public void set(long neoNodeId, long[] value) {
5553
builder.set(neoNodeId, value);
5654
}
5755

58-
@Override
59-
public void setValue(long neoNodeId, Value value) {
60-
set(neoNodeId, Neo4jValueConversion.getLongArray(value));
61-
}
62-
6356
@Override
6457
public void setValue(long neoNodeId, GdsValue value) {
6558
set(neoNodeId, GdsNeo4jValueConversion.getLongArray(value));

core/src/main/java/org/neo4j/gds/core/loading/nodeproperties/LongNodePropertiesBuilder.java

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -29,9 +29,7 @@
2929
import org.neo4j.gds.core.concurrency.DefaultPool;
3030
import org.neo4j.gds.core.concurrency.ParallelUtil;
3131
import org.neo4j.gds.utils.GdsNeo4jValueConversion;
32-
import org.neo4j.gds.utils.Neo4jValueConversion;
3332
import org.neo4j.gds.values.GdsValue;
34-
import org.neo4j.values.storable.Value;
3533

3634
import java.lang.invoke.MethodHandles;
3735
import java.lang.invoke.VarHandle;
@@ -88,12 +86,6 @@ public void set(long neoNodeId, long value) {
8886
updateMaxValue(value);
8987
}
9088

91-
@Override
92-
public void setValue(long neoNodeId, Value value) {
93-
var longValue = Neo4jValueConversion.getLongValue(value);
94-
set(neoNodeId, longValue);
95-
}
96-
9789
@Override
9890
public void setValue(long neoNodeId, GdsValue value) {
9991
var longValue = GdsNeo4jValueConversion.getLongValue(value);

core/src/main/java/org/neo4j/gds/core/loading/nodeproperties/NodePropertiesFromStoreBuilder.java

Lines changed: 3 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -30,18 +30,17 @@
3030
import org.neo4j.gds.mem.MemoryEstimations;
3131
import org.neo4j.gds.values.GdsNoValue;
3232
import org.neo4j.gds.values.GdsValue;
33+
import org.neo4j.gds.values.primitive.PrimitiveValues;
3334
import org.neo4j.values.storable.DoubleArray;
3435
import org.neo4j.values.storable.FloatArray;
3536
import org.neo4j.values.storable.FloatingPointValue;
3637
import org.neo4j.values.storable.IntegralValue;
3738
import org.neo4j.values.storable.LongArray;
3839
import org.neo4j.values.storable.Value;
39-
import org.neo4j.values.storable.Values;
4040

4141
import java.util.concurrent.atomic.AtomicReference;
4242

4343
import static org.neo4j.gds.utils.StringFormatting.formatWithLocale;
44-
import static org.neo4j.values.storable.Values.NO_VALUE;
4544

4645
public final class NodePropertiesFromStoreBuilder {
4746

@@ -80,15 +79,6 @@ private NodePropertiesFromStoreBuilder(
8079
this.innerBuilder = new AtomicReference<>();
8180
}
8281

83-
public void set(long neoNodeId, Value value) {
84-
if (value != null && value != NO_VALUE) {
85-
if (innerBuilder.get() == null) {
86-
initializeWithType(value);
87-
}
88-
innerBuilder.get().setValue(neoNodeId, value);
89-
}
90-
}
91-
9282
public void set(long neoNodeId, GdsValue value) {
9383
if (value != null && value != GdsNoValue.NO_VALUE) {
9484
if (innerBuilder.get() == null) {
@@ -101,7 +91,8 @@ public void set(long neoNodeId, GdsValue value) {
10191
public NodePropertyValues build(IdMap idMap) {
10292
if (innerBuilder.get() == null) {
10393
if (defaultValue.getObject() != null) {
104-
initializeWithType(Values.of(defaultValue.getObject()));
94+
var gdsValue = PrimitiveValues.create(defaultValue.getObject());
95+
initializeWithType(gdsValue);
10596
} else {
10697
throw new IllegalStateException("Cannot infer type of property");
10798
}
@@ -116,15 +107,6 @@ public NodePropertyValues build(IdMap idMap) {
116107
return innerBuilder.get().build(idMap.nodeCount(), actualIdMap, idMap.highestOriginalId());
117108
}
118109

119-
// This is synchronized as we want to prevent the creation of multiple InnerNodePropertiesBuilders of which only once survives.
120-
private synchronized void initializeWithType(Value value) {
121-
if (innerBuilder.get() == null) {
122-
var valueType = valueType(value);
123-
var newBuilder = newInnerBuilder(valueType);
124-
innerBuilder.compareAndSet(null, newBuilder);
125-
}
126-
}
127-
128110
// This is synchronized as we want to prevent the creation of multiple InnerNodePropertiesBuilders of which only once survives.
129111
private synchronized void initializeWithType(GdsValue value) {
130112
if (innerBuilder.get() == null) {

native-projection/src/main/java/org/neo4j/gds/projection/NativeNodePropertyImporter.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@
3232
import org.neo4j.gds.config.ConcurrencyConfig;
3333
import org.neo4j.gds.core.GraphDimensions;
3434
import org.neo4j.gds.core.concurrency.Concurrency;
35+
import org.neo4j.gds.core.loading.GdsNeo4jValueConverter;
3536
import org.neo4j.gds.core.loading.NodeLabelTokenSet;
3637
import org.neo4j.gds.core.loading.nodeproperties.NodePropertiesFromStoreBuilder;
3738
import org.neo4j.internal.kernel.api.PropertyCursor;
@@ -142,7 +143,8 @@ private int setPropertyValue(
142143
Value value = propertyCursor.propertyValue();
143144

144145
for (NodePropertiesFromStoreBuilder builder : builders) {
145-
builder.set(neoNodeId, value);
146+
var gdsValue = GdsNeo4jValueConverter.toValue(value);
147+
builder.set(neoNodeId, gdsValue);
146148
propertiesImported++;
147149
}
148150
}

0 commit comments

Comments
 (0)