Skip to content

Commit 32f426b

Browse files
committed
perf: Optimise Bolt values unpacking
This update optimises Bolt values unpacking by implementing specific type mappings in `ValueFactory`.
1 parent 61cd40b commit 32f426b

File tree

2 files changed

+99
-1
lines changed

2 files changed

+99
-1
lines changed

driver/src/main/java/org/neo4j/driver/internal/value/BoltValueFactory.java

Lines changed: 98 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,14 @@
1717
package org.neo4j.driver.internal.value;
1818

1919
import java.time.DateTimeException;
20+
import java.time.Duration;
21+
import java.time.LocalDate;
22+
import java.time.LocalDateTime;
23+
import java.time.LocalTime;
24+
import java.time.OffsetDateTime;
25+
import java.time.OffsetTime;
26+
import java.time.Period;
27+
import java.time.ZonedDateTime;
2028
import java.util.Collection;
2129
import java.util.Collections;
2230
import java.util.HashMap;
@@ -47,6 +55,96 @@ public Value value(Object value) {
4755
return ((InternalValue) Values.value(value)).asBoltValue();
4856
}
4957

58+
@Override
59+
public Value value(boolean value) {
60+
return ((InternalValue) Values.value(value)).asBoltValue();
61+
}
62+
63+
@Override
64+
public Value value(long value) {
65+
return ((InternalValue) Values.value(value)).asBoltValue();
66+
}
67+
68+
@Override
69+
public Value value(double value) {
70+
return ((InternalValue) Values.value(value)).asBoltValue();
71+
}
72+
73+
@Override
74+
public Value value(byte[] values) {
75+
return ((InternalValue) Values.value(values)).asBoltValue();
76+
}
77+
78+
@Override
79+
public Value value(String value) {
80+
return ((InternalValue) Values.value(value)).asBoltValue();
81+
}
82+
83+
@Override
84+
public Value value(Map<String, Value> stringToValue) {
85+
return ((InternalValue) Values.value(stringToValue)).asBoltValue();
86+
}
87+
88+
@Override
89+
public Value value(Value[] values) {
90+
return ((InternalValue) Values.value(values)).asBoltValue();
91+
}
92+
93+
@Override
94+
public Value value(Node node) {
95+
return ((InternalValue) Values.value(node)).asBoltValue();
96+
}
97+
98+
@Override
99+
public Value value(Relationship relationship) {
100+
return ((InternalValue) Values.value(relationship)).asBoltValue();
101+
}
102+
103+
@Override
104+
public Value value(Path path) {
105+
return ((InternalValue) Values.value(path)).asBoltValue();
106+
}
107+
108+
@Override
109+
public Value value(LocalDate localDate) {
110+
return ((InternalValue) Values.value(localDate)).asBoltValue();
111+
}
112+
113+
@Override
114+
public Value value(OffsetTime offsetTime) {
115+
return ((InternalValue) Values.value(offsetTime)).asBoltValue();
116+
}
117+
118+
@Override
119+
public Value value(LocalTime localTime) {
120+
return ((InternalValue) Values.value(localTime)).asBoltValue();
121+
}
122+
123+
@Override
124+
public Value value(LocalDateTime localDateTime) {
125+
return ((InternalValue) Values.value(localDateTime)).asBoltValue();
126+
}
127+
128+
@Override
129+
public Value value(OffsetDateTime offsetDateTime) {
130+
return ((InternalValue) Values.value(offsetDateTime)).asBoltValue();
131+
}
132+
133+
@Override
134+
public Value value(ZonedDateTime zonedDateTime) {
135+
return ((InternalValue) Values.value(zonedDateTime)).asBoltValue();
136+
}
137+
138+
@Override
139+
public Value value(Period period) {
140+
return ((InternalValue) Values.value(period)).asBoltValue();
141+
}
142+
143+
@Override
144+
public Value value(Duration duration) {
145+
return ((InternalValue) Values.value(duration)).asBoltValue();
146+
}
147+
50148
@Override
51149
public Node node(long id, String elementId, Collection<String> labels, Map<String, Value> properties) {
52150
return new InternalNode(id, elementId, labels, toDriverMap(properties));

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@
3232
<maven.deploy.skip>true</maven.deploy.skip>
3333

3434
<!-- Versions -->
35-
<neo4j-bolt-connection-bom.version>1.0.0</neo4j-bolt-connection-bom.version>
35+
<neo4j-bolt-connection-bom.version>1.0-SNAPSHOT</neo4j-bolt-connection-bom.version>
3636
<reactive-streams.version>1.0.4</reactive-streams.version>
3737
<!-- Please note that when updating this dependency -->
3838
<!-- (i.e. due to a security vulnerability or bug) that the -->

0 commit comments

Comments
 (0)