Skip to content

Commit 8467d63

Browse files
committed
Added PostgreSQL Adapter and Trino plugin
1 parent 3fb7466 commit 8467d63

File tree

132 files changed

+14579
-41
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

132 files changed

+14579
-41
lines changed

.gitignore

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ build/
44
!gradle/wrapper/gradle-wrapper.jar
55
!**/src/main/**/build/
66
!**/src/test/**/build/
7+
hs_err*.log
78

89
### STS ###
910
.apt_generated
@@ -35,4 +36,4 @@ out/
3536

3637
### VS Code ###
3738
.vscode/
38-
.DS_Store
39+
.DS_Store

build.gradle

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
config {
22
info {
3-
description = 'Calcite adapter for RediSearch'
3+
description = 'SQL interface for Redis'
44
inceptionYear = '2021'
5-
tags = ['calcite', 'redisearch']
5+
tags = ['redis', 'sql']
66

77
links {
88
website = "https://github.com/redis-field-engineering/${project.rootProject.name}"

gradle.properties

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,4 +8,12 @@ kordampPluginVersion=0.47.0
88
lettucemodVersion=1.8.1
99
testcontainersRedisVersion=1.4.6
1010
calciteVersion=1.21.0
11-
jredisearchVersion=2.2.0
11+
jredisearchVersion=2.2.0
12+
trinoVersion=365
13+
ulidVersion=4.1.2
14+
15+
commonsCliVersion=1.4
16+
guavaVersion=31.0.1-jre
17+
jsonSimpleVersion=1.1.1
18+
mockitoVersion=3.2.4
19+
postgresqlVersion=42.2.5

settings.gradle

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,14 +14,14 @@ buildscript {
1414

1515
apply plugin: 'org.kordamp.gradle.kordamp-parentbuild'
1616

17-
rootProject.name = 'calcite-redisearch'
17+
rootProject.name = 'sql-redis'
1818

1919
projects {
2020
directories = ['subprojects']
2121

2222
plugins {
2323
all {
24-
id 'idea'
24+
id 'eclipse'
2525
}
2626
path(':') {
2727
id 'org.kordamp.gradle.java-project'

subprojects/calcite-redisearch/src/main/java/org/apache/calcite/adapter/redisearch/RediSearchSchema.java

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -23,16 +23,12 @@ public class RediSearchSchema extends AbstractSchema {
2323
public RediSearchSchema(StatefulRedisModulesConnection<String, String> connection, String index) {
2424
this.connection = connection;
2525
if (index == null) {
26-
this.tableMap = this.createTables(this.indicesFromRediSearch());
26+
this.tableMap = this.createTables(connection.sync().list());
2727
} else {
2828
this.tableMap = this.createTables(Collections.singletonList(index));
2929
}
3030
}
3131

32-
private List<String> indicesFromRediSearch() {
33-
return connection.sync().list();
34-
}
35-
3632
private Map<String, Table> createTables(List<String> indices) {
3733
ImmutableMap.Builder<String, Table> builder = ImmutableMap.builder();
3834

Lines changed: 26 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1,45 +1,41 @@
11
package org.apache.calcite.adapter.redisearch;
22

3-
import com.google.common.base.Strings;
4-
import com.redis.lettucemod.RedisModulesClient;
5-
import com.redis.lettucemod.api.StatefulRedisModulesConnection;
6-
import io.lettuce.core.RedisURI;
3+
import java.util.Map;
4+
import java.util.Objects;
5+
76
import org.apache.calcite.schema.Schema;
87
import org.apache.calcite.schema.SchemaFactory;
98
import org.apache.calcite.schema.SchemaPlus;
10-
import org.slf4j.Logger;
11-
import org.slf4j.LoggerFactory;
129

13-
import java.util.Map;
14-
import java.util.Objects;
10+
import com.google.common.base.Strings;
11+
import com.redis.lettucemod.RedisModulesClient;
12+
import com.redis.lettucemod.api.StatefulRedisModulesConnection;
1513

14+
import io.lettuce.core.RedisURI;
1615

1716
/**
1817
* Factory that creates a {@link RediSearchSchema}.
1918
*/
20-
@SuppressWarnings("UnusedDeclaration")
2119
public class RediSearchSchemaFactory implements SchemaFactory {
2220

23-
private static final Logger LOGGER = LoggerFactory.getLogger(RediSearchSchemaFactory.class);
24-
25-
@Override
26-
public Schema create(SchemaPlus parentSchema, String name, Map<String, Object> operand) {
27-
Map map = operand;
28-
String uri = (String) map.get("uri");
29-
String index = (String) map.get("index");
30-
String username = (String) map.get("username");
31-
String password = (String) map.get("password");
32-
return new RediSearchSchema(connect(uri, username, password), index);
33-
}
21+
@Override
22+
public Schema create(SchemaPlus parentSchema, String name, Map<String, Object> operand) {
23+
Map<String, Object> map = operand;
24+
String uri = (String) map.get("uri");
25+
String index = (String) map.get("index");
26+
String username = (String) map.get("username");
27+
String password = (String) map.get("password");
28+
return new RediSearchSchema(connect(uri, username, password), index);
29+
}
3430

35-
private StatefulRedisModulesConnection<String, String> connect(String uri, String username, String password) {
36-
Objects.requireNonNull(uri, "URI");
37-
RedisURI redisURI = RedisURI.create(uri);
38-
if (!Strings.isNullOrEmpty(username) && !Strings.isNullOrEmpty(password)) {
39-
redisURI.setUsername(username);
40-
redisURI.setPassword(password.toCharArray());
41-
}
42-
RedisModulesClient client = RedisModulesClient.create(redisURI);
43-
return client.connect();
44-
}
31+
private StatefulRedisModulesConnection<String, String> connect(String uri, String username, String password) {
32+
Objects.requireNonNull(uri, "URI");
33+
RedisURI redisURI = RedisURI.create(uri);
34+
if (!Strings.isNullOrEmpty(username) && !Strings.isNullOrEmpty(password)) {
35+
redisURI.setUsername(username);
36+
redisURI.setPassword(password.toCharArray());
37+
}
38+
RedisModulesClient client = RedisModulesClient.create(redisURI);
39+
return client.connect();
40+
}
4541
}
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
project_description = Redis PostgreSQL Adapter
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
dependencies {
2+
implementation project(':calcite-redisearch')
3+
implementation group: 'org.apache.calcite', name: 'calcite-core', version: calciteVersion
4+
implementation group: 'org.apache.calcite', name: 'calcite-linq4j', version: calciteVersion
5+
implementation group: 'com.redis', name: 'lettucemod', version: lettucemodVersion
6+
implementation group: 'com.google.guava', name: 'guava', version: guavaVersion
7+
implementation group: 'com.googlecode.json-simple', name: 'json-simple', version: jsonSimpleVersion
8+
implementation group: 'commons-cli', name: 'commons-cli', version: commonsCliVersion
9+
implementation group: 'org.postgresql', name: 'postgresql', version: postgresqlVersion
10+
testImplementation group: 'org.mockito', name: 'mockito-core', version: mockitoVersion
11+
testImplementation group: 'com.redis', name: 'lettucemod', version: lettucemodVersion, classifier: 'tests'
12+
}

0 commit comments

Comments
 (0)