Skip to content

Commit 6dc5c64

Browse files
author
Julien Ruaux
committed
feat: Added config option to specific protocol version. Resolves #7
1 parent d9205e7 commit 6dc5c64

File tree

4 files changed

+26
-5
lines changed

4 files changed

+26
-5
lines changed

src/docs/asciidoc/index.adoc

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,10 @@ redisearch.uri=redis://localhost:6379
8282
|Connect to a Redis Cluster.
8383
|`false`
8484

85+
|`redisearch.resp2`
86+
|Force Redis protocol version to RESP2.
87+
|`false`
88+
8589
|===
8690

8791
The RediSearch connector provides additional security options to support Redis servers with TLS mode.

src/main/java/com/redis/trino/RediSearchConfig.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@ public class RediSearchConfig {
5757
private String keyPath;
5858
private String certPath;
5959
private String keyPassword;
60+
private boolean resp2;
6061

6162
@Min(0)
6263
public long getCursorCount() {
@@ -91,6 +92,17 @@ public RediSearchConfig setCaseInsensitiveNames(boolean caseInsensitiveNames) {
9192
return this;
9293
}
9394

95+
public boolean isResp2() {
96+
return resp2;
97+
}
98+
99+
@Config("redisearch.resp2")
100+
@ConfigDescription("Force Redis protocol version to RESP2")
101+
public RediSearchConfig setResp2(boolean resp2) {
102+
this.resp2 = resp2;
103+
return this;
104+
}
105+
94106
@Config("redisearch.table-cache-expiration")
95107
@ConfigDescription("Duration in seconds since the entry creation after which a table should be automatically removed from the cache.")
96108
public RediSearchConfig setTableCacheExpiration(long expirationDuration) {

src/main/java/com/redis/trino/RediSearchSession.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,7 @@
6868
import io.lettuce.core.AbstractRedisClient;
6969
import io.lettuce.core.RedisURI;
7070
import io.lettuce.core.SslVerifyMode;
71+
import io.lettuce.core.protocol.ProtocolVersion;
7172
import io.trino.spi.HostAddress;
7273
import io.trino.spi.TrinoException;
7374
import io.trino.spi.connector.ColumnMetadata;
@@ -122,6 +123,9 @@ private AbstractRedisClient client(RediSearchConfig config) {
122123
config.getCertPath().map(File::new).ifPresent(builder::keyCert);
123124
config.getKeyPassword().ifPresent(p -> builder.keyPassword(p.toCharArray()));
124125
config.getCaCertPath().map(File::new).ifPresent(builder::trustManager);
126+
if (config.isResp2()) {
127+
builder.protocolVersion(ProtocolVersion.RESP2);
128+
}
125129
return builder.build();
126130
}
127131

src/test/java/com/redis/trino/TestRediSearchConfig.java

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,10 @@
22

33
import static io.airlift.configuration.testing.ConfigAssertions.assertRecordedDefaults;
44
import static io.airlift.configuration.testing.ConfigAssertions.recordDefaults;
5-
import static org.testng.Assert.assertEquals;
65

76
import java.util.Map;
87

8+
import org.testng.Assert;
99
import org.testng.annotations.Test;
1010

1111
import com.google.common.collect.ImmutableMap;
@@ -17,7 +17,7 @@ public class TestRediSearchConfig {
1717
@Test
1818
public void testDefaults() {
1919
assertRecordedDefaults(recordDefaults(RediSearchConfig.class).setUri(null).setInsecure(false).setUsername(null)
20-
.setPassword(null).setDefaultSchema(RediSearchConfig.DEFAULT_SCHEMA)
20+
.setResp2(false).setPassword(null).setDefaultSchema(RediSearchConfig.DEFAULT_SCHEMA)
2121
.setDefaultLimit(RediSearchConfig.DEFAULT_LIMIT).setCaseInsensitiveNames(false)
2222
.setCursorCount(RediSearchConfig.DEFAULT_CURSOR_COUNT)
2323
.setTableCacheExpiration(RediSearchConfig.DEFAULT_TABLE_CACHE_EXPIRATION.toSeconds())
@@ -30,15 +30,16 @@ public void testExplicitPropertyMappings() {
3030
String uri = "redis://redis.example.com:12000";
3131
String defaultSchema = "myschema";
3232
Map<String, String> properties = new ImmutableMap.Builder<String, String>().put("redisearch.uri", uri)
33-
.put("redisearch.default-schema-name", defaultSchema).build();
33+
.put("redisearch.default-schema-name", defaultSchema).put("redisearch.resp2", "true").build();
3434

3535
ConfigurationFactory configurationFactory = new ConfigurationFactory(properties);
3636
RediSearchConfig config = configurationFactory.build(RediSearchConfig.class);
3737

3838
RediSearchConfig expected = new RediSearchConfig().setDefaultSchema(defaultSchema).setUri(uri);
3939

40-
assertEquals(config.getDefaultSchema(), expected.getDefaultSchema());
41-
assertEquals(config.getUri(), expected.getUri());
40+
Assert.assertEquals(config.getDefaultSchema(), expected.getDefaultSchema());
41+
Assert.assertEquals(config.getUri(), expected.getUri());
42+
Assert.assertTrue(config.isResp2());
4243
}
4344

4445
}

0 commit comments

Comments
 (0)