Skip to content

Commit 4822d6e

Browse files
authored
Merge pull request #503 from alex268/master
Added Serializable to all values and types
2 parents 5b4eb62 + ca32d9f commit 4822d6e

29 files changed

+88
-59
lines changed

table/src/main/java/tech/ydb/table/impl/DataQueryImpl.java

Lines changed: 2 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package tech.ydb.table.impl;
22

3-
import java.nio.charset.StandardCharsets;
43
import java.util.Collections;
54
import java.util.HashMap;
65
import java.util.Map;
@@ -14,7 +13,6 @@
1413
import com.google.common.base.Preconditions;
1514
import com.google.common.collect.ImmutableMap;
1615
import com.google.common.collect.Maps;
17-
import com.google.common.hash.Hashing;
1816

1917
import tech.ydb.core.Result;
2018
import tech.ydb.proto.ValueProtos;
@@ -27,8 +25,6 @@
2725
import tech.ydb.table.values.Value;
2826
import tech.ydb.table.values.proto.ProtoType;
2927

30-
import static com.google.common.base.Preconditions.checkArgument;
31-
3228

3329
/**
3430
* @author Sergey Polovko
@@ -41,7 +37,6 @@ final class DataQueryImpl implements DataQuery {
4137
private final ImmutableMap<String, ValueProtos.Type> typesPb;
4238
@Nullable
4339
private final String text;
44-
private final String textHash;
4540

4641
DataQueryImpl(
4742
BaseSession session,
@@ -54,13 +49,6 @@ final class DataQueryImpl implements DataQuery {
5449
this.types = buildTypes(parametersTypes);
5550
this.typesPb = ImmutableMap.copyOf(parametersTypes);
5651
this.text = keepText ? text : null;
57-
this.textHash = makeHash(text);
58-
}
59-
60-
static String makeHash(String text) {
61-
return Hashing.sha256()
62-
.hashString(text, StandardCharsets.UTF_8)
63-
.toString();
6452
}
6553

6654
private static ImmutableMap<String, Type> buildTypes(Map<String, ValueProtos.Type> parametersTypes) {
@@ -91,10 +79,6 @@ public Optional<String> getText() {
9179
return Optional.ofNullable(text);
9280
}
9381

94-
String getTextHash() {
95-
return textHash;
96-
}
97-
9882
@Override
9983
public CompletableFuture<Result<DataQueryResult>> execute(
10084
TxControl<?> txControl, Params params, ExecuteDataQuerySettings settings) {
@@ -108,6 +92,7 @@ public CompletableFuture<Result<DataQueryResult>> execute(
10892
*/
10993
@ParametersAreNonnullByDefault
11094
static final class DataQueryParams implements Params {
95+
private static final long serialVersionUID = -7431562469459950668L;
11196
private final ImmutableMap<String, Type> types;
11297
private final ImmutableMap<String, ValueProtos.Type> typesPb;
11398
private final HashMap<String, Value<?>> params;
@@ -126,7 +111,7 @@ public boolean isEmpty() {
126111
@Override
127112
public <T extends Type> Params put(String name, Value<T> value) {
128113
Type type = types.get(name);
129-
checkArgument(type != null, "unknown parameter: %s", name);
114+
Preconditions.checkArgument(type != null, "unknown parameter: %s", name);
130115

131116
//TODO: This check will not work with Decimal type
132117
//checkArgument(type.equals(value.getType()), "types mismatch: expected %s, got %s", type, value.getType());

table/src/main/java/tech/ydb/table/query/Params.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package tech.ydb.table.query;
22

3+
import java.io.Serializable;
34
import java.util.Map;
45

56
import javax.annotation.ParametersAreNonnullByDefault;
@@ -13,7 +14,7 @@
1314
* @author Sergey Polovko
1415
*/
1516
@ParametersAreNonnullByDefault
16-
public interface Params {
17+
public interface Params extends Serializable {
1718

1819
/**
1920
* Returns an immutable implementation of {@link Params} with no parameters.

table/src/main/java/tech/ydb/table/query/ParamsImmutableMap.java

Lines changed: 20 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -6,14 +6,13 @@
66

77
import javax.annotation.ParametersAreNonnullByDefault;
88

9+
import com.google.common.base.Preconditions;
910
import com.google.common.collect.Maps;
1011

1112
import tech.ydb.proto.ValueProtos.TypedValue;
1213
import tech.ydb.table.values.Type;
1314
import tech.ydb.table.values.Value;
14-
15-
import static com.google.common.base.Preconditions.checkArgument;
16-
import static tech.ydb.table.values.proto.ProtoValue.toTypedValue;
15+
import tech.ydb.table.values.proto.ProtoValue;
1716

1817

1918
/**
@@ -23,25 +22,27 @@
2322
*/
2423
@ParametersAreNonnullByDefault
2524
final class ParamsImmutableMap implements Params {
25+
static final ParamsImmutableMap EMPTY = new ParamsImmutableMap(new HashMap<>());
26+
private static final long serialVersionUID = -4446062098045167272L;
2627

27-
static final ParamsImmutableMap EMPTY = new ParamsImmutableMap(Collections.emptyMap());
28-
29-
private final Map<String, Value<?>> params;
28+
private final HashMap<String, Value<?>> params;
3029

31-
private ParamsImmutableMap(Map<String, Value<?>> params) {
30+
private ParamsImmutableMap(HashMap<String, Value<?>> params) {
3231
this.params = params;
3332
}
3433

3534
static ParamsImmutableMap create(String name, Value<?> value) {
36-
return new ParamsImmutableMap(Collections.singletonMap(name, value));
35+
HashMap<String, Value<?>> params = Maps.newHashMapWithExpectedSize(1);
36+
params.put(name, value);
37+
return new ParamsImmutableMap(params);
3738
}
3839

3940
static ParamsImmutableMap create(String name1, Value<?> value1, String name2, Value<?> value2) {
40-
checkArgument(!name1.equals(name2), "parameter duplicate: %s", name1);
41+
Preconditions.checkArgument(!name1.equals(name2), "parameter duplicate: %s", name1);
4142
HashMap<String, Value<?>> params = Maps.newHashMapWithExpectedSize(2);
4243
params.put(name1, value1);
4344
params.put(name2, value2);
44-
return new ParamsImmutableMap(Collections.unmodifiableMap(params));
45+
return new ParamsImmutableMap(params);
4546
}
4647

4748
static ParamsImmutableMap create(
@@ -52,7 +53,7 @@ static ParamsImmutableMap create(
5253
params.put(name1, value1);
5354
putParam(params, name2, value2);
5455
putParam(params, name3, value3);
55-
return new ParamsImmutableMap(Collections.unmodifiableMap(params));
56+
return new ParamsImmutableMap(params);
5657
}
5758

5859
@SuppressWarnings("checkstyle:ParameterNumber")
@@ -66,7 +67,7 @@ static ParamsImmutableMap create(
6667
putParam(params, name2, value2);
6768
putParam(params, name3, value3);
6869
putParam(params, name4, value4);
69-
return new ParamsImmutableMap(Collections.unmodifiableMap(params));
70+
return new ParamsImmutableMap(params);
7071
}
7172

7273
@SuppressWarnings("checkstyle:ParameterNumber")
@@ -82,7 +83,7 @@ static ParamsImmutableMap create(
8283
putParam(params, name3, value3);
8384
putParam(params, name4, value4);
8485
putParam(params, name5, value5);
85-
return new ParamsImmutableMap(Collections.unmodifiableMap(params));
86+
return new ParamsImmutableMap(params);
8687
}
8788

8889
@SuppressWarnings("checkstyle:ParameterNumber")
@@ -100,7 +101,7 @@ static ParamsImmutableMap create(
100101
putParam(params, name4, value4);
101102
putParam(params, name5, value5);
102103
putParam(params, name6, value6);
103-
return new ParamsImmutableMap(Collections.unmodifiableMap(params));
104+
return new ParamsImmutableMap(params);
104105
}
105106

106107
@SuppressWarnings("checkstyle:ParameterNumber")
@@ -120,7 +121,7 @@ static ParamsImmutableMap create(
120121
putParam(params, name5, value5);
121122
putParam(params, name6, value6);
122123
putParam(params, name7, value7);
123-
return new ParamsImmutableMap(Collections.unmodifiableMap(params));
124+
return new ParamsImmutableMap(params);
124125
}
125126

126127
@SuppressWarnings("checkstyle:ParameterNumber")
@@ -142,7 +143,7 @@ static ParamsImmutableMap create(
142143
putParam(params, name6, value6);
143144
putParam(params, name7, value7);
144145
putParam(params, name8, value8);
145-
return new ParamsImmutableMap(Collections.unmodifiableMap(params));
146+
return new ParamsImmutableMap(params);
146147
}
147148

148149
@SuppressWarnings("checkstyle:ParameterNumber")
@@ -166,11 +167,11 @@ static ParamsImmutableMap create(
166167
putParam(params, name7, value7);
167168
putParam(params, name8, value8);
168169
putParam(params, name9, value9);
169-
return new ParamsImmutableMap(Collections.unmodifiableMap(params));
170+
return new ParamsImmutableMap(params);
170171
}
171172

172173
private static void putParam(HashMap<String, Value<?>> params, String name, Value<?> value) {
173-
checkArgument(params.putIfAbsent(name, value) == null, "parameter duplicate: %s", name);
174+
Preconditions.checkArgument(params.putIfAbsent(name, value) == null, "parameter duplicate: %s", name);
174175
}
175176

176177
@Override
@@ -187,7 +188,7 @@ public <T extends Type> Params put(String name, Value<T> value) {
187188
public Map<String, TypedValue> toPb() {
188189
Map<String, TypedValue> result = Maps.newHashMapWithExpectedSize(params.size());
189190
for (Map.Entry<String, Value<?>> entry : params.entrySet()) {
190-
result.put(entry.getKey(), toTypedValue(entry.getValue()));
191+
result.put(entry.getKey(), ProtoValue.toTypedValue(entry.getValue()));
191192
}
192193
return result;
193194
}

table/src/main/java/tech/ydb/table/query/ParamsMutableMap.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
*/
2323
@ParametersAreNonnullByDefault
2424
final class ParamsMutableMap implements Params {
25+
private static final long serialVersionUID = -2195403246008082524L;
2526

2627
private final HashMap<String, Value<?>> params;
2728

table/src/main/java/tech/ydb/table/values/DecimalType.java

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package tech.ydb.table.values;
22

3+
import java.io.Serializable;
34
import java.math.BigDecimal;
45
import java.math.BigInteger;
56

@@ -13,12 +14,13 @@
1314
* @author Sergey Polovko
1415
*/
1516
public class DecimalType implements Type {
16-
1717
public static final int MAX_PRECISION = 35;
1818

1919
private static final InfValues[] INF_VALUES;
2020
private static final DecimalType YDB_DEFAULT;
2121

22+
private static final long serialVersionUID = 5260350619058403189L;
23+
2224
static {
2325
// Precalculate +inf/-inf values for all precisions
2426
INF_VALUES = new InfValues[DecimalType.MAX_PRECISION];
@@ -171,7 +173,9 @@ boolean isNegInf(long high, long low) {
171173
return high < inf.negHigh || (high == inf.negHigh && Long.compareUnsigned(low, inf.negLow) <= 0);
172174
}
173175

174-
private static class InfValues {
176+
private static class InfValues implements Serializable {
177+
private static final long serialVersionUID = 3291796497109728849L;
178+
175179
private final long posHigh;
176180
private final long posLow;
177181
private final long negHigh;

table/src/main/java/tech/ydb/table/values/DecimalValue.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,8 @@ public class DecimalValue implements Value<DecimalType> {
5353
public static final DecimalValue NAN = new DecimalValue(
5454
MAX_DECIMAL, 0x0013426172C74D82L, 0x2B878FE800000001L);
5555

56+
private static final long serialVersionUID = 1362798151263983188L;
57+
5658
private final DecimalType type;
5759
private final long high;
5860
private final long low;

table/src/main/java/tech/ydb/table/values/DictType.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package tech.ydb.table.values;
22

3-
import java.util.Collections;
43
import java.util.HashMap;
54
import java.util.Map;
65

@@ -12,6 +11,7 @@
1211
* @author Sergey Polovko
1312
*/
1413
public final class DictType implements Type {
14+
private static final long serialVersionUID = -2863510622617082427L;
1515

1616
private final Type keyType;
1717
private final Type valueType;
@@ -71,7 +71,7 @@ public ValueProtos.Type toPb() {
7171
}
7272

7373
public DictValue emptyValue() {
74-
return new DictValue(this, Collections.emptyMap());
74+
return new DictValue(this, new HashMap<>());
7575
}
7676

7777
public DictValue newValueCopy(Map<Value<?>, Value<?>> items) {
@@ -85,6 +85,6 @@ public DictValue newValueOwn(Map<Value<?>, Value<?>> items) {
8585
if (items.isEmpty()) {
8686
return emptyValue();
8787
}
88-
return new DictValue(this, items);
88+
return new DictValue(this, new HashMap<>(items));
8989
}
9090
}

table/src/main/java/tech/ydb/table/values/DictValue.java

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package tech.ydb.table.values;
22

33
import java.util.Collection;
4-
import java.util.Collections;
4+
import java.util.HashMap;
55
import java.util.Map;
66
import java.util.Set;
77

@@ -15,19 +15,20 @@
1515
* @author Sergey Polovko
1616
*/
1717
public class DictValue implements Value<DictType> {
18+
private static final long serialVersionUID = 6205349432501922070L;
1819

1920
private final DictType type;
20-
private final Map<Value<?>, Value<?>> items;
21+
private final HashMap<Value<?>, Value<?>> items;
2122

22-
DictValue(DictType type, Map<Value<?>, Value<?>> items) {
23+
DictValue(DictType type, HashMap<Value<?>, Value<?>> items) {
2324
this.type = type;
2425
this.items = items;
2526
}
2627

2728
public static DictValue of(Value<?> key, Value<?> value) {
28-
return new DictValue(
29-
DictType.of(key.getType(), value.getType()),
30-
Collections.singletonMap(key, value));
29+
HashMap<Value<?>, Value<?>> map = new HashMap<>();
30+
map.put(key, value);
31+
return new DictValue(DictType.of(key.getType(), value.getType()), map);
3132
}
3233

3334
public int size() {

table/src/main/java/tech/ydb/table/values/ListType.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
* @author Sergey Polovko
1212
*/
1313
public final class ListType implements Type {
14+
private static final long serialVersionUID = -2673063704709926669L;
1415

1516
private final Type itemType;
1617

table/src/main/java/tech/ydb/table/values/ListValue.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
* @author Sergey Polovko
1111
*/
1212
public class ListValue implements Value<ListType> {
13+
private static final long serialVersionUID = 8672625561012902978L;
1314

1415
private final ListType type;
1516
private final Value<?>[] items;

0 commit comments

Comments
 (0)