Skip to content

Commit 612691d

Browse files
committed
Refactored and moved to calcite package for logging purposes
1 parent 12e48c3 commit 612691d

19 files changed

+166
-277
lines changed

subprojects/calcite-redisearch/src/main/java/com/redis/calcite/JavaTypeFactoryExtImpl.java

Lines changed: 0 additions & 56 deletions
This file was deleted.

subprojects/calcite-redisearch/src/main/java/com/redis/calcite/RediSearchSchema.java

Lines changed: 0 additions & 52 deletions
This file was deleted.

subprojects/calcite-redisearch/src/main/java/com/redis/calcite/RediSearchUtils.java

Lines changed: 0 additions & 68 deletions
This file was deleted.

subprojects/calcite-redisearch/src/main/java/com/redis/calcite/package-info.java

Lines changed: 0 additions & 1 deletion
This file was deleted.

subprojects/calcite-redisearch/src/main/java/com/redis/calcite/RediSearchAggregate.java renamed to subprojects/calcite-redisearch/src/main/java/org/apache/calcite/adapter/redisearch/RediSearchAggregate.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.redis.calcite;
1+
package org.apache.calcite.adapter.redisearch;
22

33
import com.google.common.collect.ImmutableMap;
44
import org.apache.calcite.plan.RelOptCluster;

subprojects/calcite-redisearch/src/main/java/com/redis/calcite/RediSearchEnumerator.java renamed to subprojects/calcite-redisearch/src/main/java/org/apache/calcite/adapter/redisearch/RediSearchEnumerator.java

Lines changed: 34 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
1-
package com.redis.calcite;
1+
package org.apache.calcite.adapter.redisearch;
22

33
import com.redis.lettucemod.api.search.Document;
4-
import com.redis.lettucemod.api.search.Field;
54
import com.redis.lettucemod.api.search.SearchResults;
65
import lombok.extern.slf4j.Slf4j;
76
import org.apache.calcite.linq4j.Enumerator;
@@ -10,21 +9,20 @@
109
import org.apache.calcite.rel.type.RelDataTypeSystem;
1110
import org.apache.calcite.rel.type.RelProtoDataType;
1211
import org.apache.calcite.sql.type.SqlTypeFactoryImpl;
12+
import org.apache.calcite.sql.type.SqlTypeName;
1313

1414
import java.util.Collections;
1515
import java.util.Iterator;
1616
import java.util.List;
17-
import java.util.Map;
1817

1918
/**
2019
* Enumerator that reads from a RediSearch Regions.
2120
*/
2221
@Slf4j
2322
class RediSearchEnumerator implements Enumerator<Object> {
2423

25-
private final Map<String, Field.Type> indexFields;
2624
private final Iterator<Document<String, String>> iterator;
27-
private final List<RelDataTypeField> fieldTypes;
25+
private final List<RelDataTypeField> fields;
2826
private Document<String, String> current;
2927

3028
/**
@@ -33,15 +31,14 @@ class RediSearchEnumerator implements Enumerator<Object> {
3331
* @param results RediSearch search results ({@link SearchResults})
3432
* @param protoRowType The type of resulting rows
3533
*/
36-
RediSearchEnumerator(Map<String, Field.Type> indexFields, SearchResults<String, String> results, RelProtoDataType protoRowType) {
34+
RediSearchEnumerator(SearchResults<String, String> results, RelProtoDataType protoRowType) {
3735
if (results == null) {
3836
log.warn("Null RediSearch results!");
3937
}
40-
this.indexFields = indexFields;
4138
this.iterator = (results == null) ? Collections.emptyIterator() : results.iterator();
4239
this.current = null;
4340
final RelDataTypeFactory typeFactory = new SqlTypeFactoryImpl(RelDataTypeSystem.DEFAULT);
44-
this.fieldTypes = protoRowType.apply(typeFactory).getFieldList();
41+
this.fields = protoRowType.apply(typeFactory).getFieldList();
4542
}
4643

4744
/**
@@ -51,7 +48,35 @@ class RediSearchEnumerator implements Enumerator<Object> {
5148
*/
5249
@Override
5350
public Object current() {
54-
return RediSearchUtils.convertToRowValues(fieldTypes, indexFields, current);
51+
if (fields.size() == 1) {
52+
// If we just have one field, produce it directly
53+
RelDataTypeField field = fields.get(0);
54+
return currentRowField(field.getName(), field.getType().getSqlTypeName());
55+
} else {
56+
// Build an array with all fields in this row
57+
Object[] row = new Object[fields.size()];
58+
for (int i = 0; i < fields.size(); i++) {
59+
RelDataTypeField field = fields.get(i);
60+
row[i] = currentRowField(field.getName(), field.getType().getSqlTypeName());
61+
}
62+
return row;
63+
}
64+
}
65+
66+
/** Get a field for the current row from the underlying object.
67+
*
68+
* @param name Name of the field within the Row object
69+
* @param type Type of the field in this row
70+
*/
71+
private Object currentRowField(String name, SqlTypeName type) {
72+
String fieldValue = current.get(name);
73+
if (fieldValue == null) {
74+
return null;
75+
}
76+
if (type.equals(SqlTypeName.DOUBLE)) {
77+
return Double.parseDouble(fieldValue);
78+
}
79+
return fieldValue;
5580
}
5681

5782
@Override

subprojects/calcite-redisearch/src/main/java/com/redis/calcite/RediSearchFilter.java renamed to subprojects/calcite-redisearch/src/main/java/org/apache/calcite/adapter/redisearch/RediSearchFilter.java

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.redis.calcite;
1+
package org.apache.calcite.adapter.redisearch;
22

33
import com.google.common.base.Preconditions;
44
import com.redis.lettucemod.api.search.Field;
@@ -39,7 +39,7 @@ public class RediSearchFilter extends Filter implements RediSearchRel {
3939

4040
public RediSearchFilter(RelOptCluster cluster, RelTraitSet traitSet, RelNode child, RexNode condition, Map<String, Field.Type> indexFields) {
4141
super(cluster, traitSet, child, condition);
42-
assert getConvention() == RediSearchRel.CONVENTION;
42+
assert getConvention() == CONVENTION;
4343
assert getConvention() == child.getConvention();
4444
this.indexFields = indexFields;
4545
}
@@ -67,15 +67,11 @@ public void implement(RediSearchImplementContext rediSearchImplementContext) {
6767
* Translates {@link RexNode} expressions into RediSearch expression strings.
6868
*/
6969
public static class Translator {
70-
@SuppressWarnings("unused")
71-
private final RelDataType rowType;
7270
private final List<String> fieldNames;
7371
private final Map<String, Field.Type> indexFields;
74-
@SuppressWarnings("unused")
75-
private RexBuilder rexBuilder;
72+
private final RexBuilder rexBuilder;
7673

7774
Translator(RelDataType rowType, RexBuilder rexBuilder, Map<String, Field.Type> indexFields) {
78-
this.rowType = rowType;
7975
this.rexBuilder = rexBuilder;
8076
this.fieldNames = RediSearchRules.rediSearchFieldNames(rowType);
8177
this.indexFields = indexFields;

subprojects/calcite-redisearch/src/main/java/com/redis/calcite/RediSearchProject.java renamed to subprojects/calcite-redisearch/src/main/java/org/apache/calcite/adapter/redisearch/RediSearchProject.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.redis.calcite;
1+
package org.apache.calcite.adapter.redisearch;
22

33
import org.apache.calcite.plan.RelOptCluster;
44
import org.apache.calcite.plan.RelOptCost;

subprojects/calcite-redisearch/src/main/java/com/redis/calcite/RediSearchRel.java renamed to subprojects/calcite-redisearch/src/main/java/org/apache/calcite/adapter/redisearch/RediSearchRel.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.redis.calcite;
1+
package org.apache.calcite.adapter.redisearch;
22

33
import org.apache.calcite.plan.Convention;
44
import org.apache.calcite.plan.RelOptTable;

subprojects/calcite-redisearch/src/main/java/com/redis/calcite/RediSearchRules.java renamed to subprojects/calcite-redisearch/src/main/java/org/apache/calcite/adapter/redisearch/RediSearchRules.java

Lines changed: 2 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.redis.calcite;
1+
package org.apache.calcite.adapter.redisearch;
22

33
import org.apache.calcite.plan.Convention;
44
import org.apache.calcite.plan.RelOptRule;
@@ -39,22 +39,6 @@ public class RediSearchRules {
3939
private RediSearchRules() {
4040
}
4141

42-
/**
43-
* Returns 'string' if it is a call to item['string'], null otherwise.
44-
*/
45-
static String isItem(RexCall call) {
46-
if (call.getOperator() != SqlStdOperatorTable.ITEM) {
47-
return null;
48-
}
49-
final RexNode op0 = call.getOperands().get(0);
50-
final RexNode op1 = call.getOperands().get(1);
51-
52-
if (op0 instanceof RexInputRef && ((RexInputRef) op0).getIndex() == 0 && op1 instanceof RexLiteral && ((RexLiteral) op1).getValue2() instanceof String) {
53-
return (String) ((RexLiteral) op1).getValue2();
54-
}
55-
return null;
56-
}
57-
5842
static List<String> rediSearchFieldNames(final RelDataType rowType) {
5943
return SqlValidatorUtil.uniquify(rowType.getFieldNames(), true);
6044
}
@@ -333,8 +317,7 @@ abstract static class RediSearchConverterRule extends ConverterRule {
333317

334318
final Convention out;
335319

336-
protected RediSearchConverterRule(Class<? extends RelNode> clazz, RelTrait in, Convention out,
337-
String description) {
320+
protected RediSearchConverterRule(Class<? extends RelNode> clazz, RelTrait in, Convention out, String description) {
338321
super(clazz, in, out, description);
339322
this.out = out;
340323
}

0 commit comments

Comments
 (0)