Skip to content

Commit c9040cd

Browse files
committed
WIP: core
1 parent 7d80985 commit c9040cd

File tree

400 files changed

+3561
-2060
lines changed

Some content is hidden

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

400 files changed

+3561
-2060
lines changed

core/src/main/java/org/apache/calcite/adapter/clone/ArrayTable.java

+24-22
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,8 @@
4141
import com.google.common.base.Supplier;
4242
import com.google.common.collect.ImmutableList;
4343

44+
import org.checkerframework.checker.nullness.qual.Nullable;
45+
4446
import java.lang.reflect.Array;
4547
import java.lang.reflect.Type;
4648
import java.util.AbstractList;
@@ -82,9 +84,9 @@ class ArrayTable extends AbstractQueryableTable implements ScannableTable {
8284
return Statistics.of(content.size, keys, content.collations);
8385
}
8486

85-
@Override public Enumerable<Object[]> scan(DataContext root) {
86-
return new AbstractEnumerable<Object[]>() {
87-
@Override public Enumerator<Object[]> enumerator() {
87+
@Override public Enumerable<@Nullable Object[]> scan(DataContext root) {
88+
return new AbstractEnumerable<@Nullable Object[]>() {
89+
@Override public Enumerator<@Nullable Object[]> enumerator() {
8890
final Content content = supplier.get();
8991
return content.arrayEnumerator();
9092
}
@@ -225,7 +227,7 @@ public static List asList(final Representation representation,
225227
// Cache size. It might be expensive to compute.
226228
final int size = representation.size(dataSet);
227229
return new AbstractList() {
228-
@Override public Object get(int index) {
230+
@Override public @Nullable Object get(int index) {
229231
return representation.getObject(dataSet, index);
230232
}
231233

@@ -243,9 +245,9 @@ public interface Representation {
243245

244246
/** Converts a value set into a compact representation. If
245247
* {@code sources} is not null, permutes. */
246-
Object freeze(ColumnLoader.ValueSet valueSet, int[] sources);
248+
Object freeze(ColumnLoader.ValueSet valueSet, int @Nullable [] sources);
247249

248-
Object getObject(Object dataSet, int ordinal);
250+
@Nullable Object getObject(Object dataSet, int ordinal);
249251
int getInt(Object dataSet, int ordinal);
250252

251253
/** Creates a data set that is the same as a given data set
@@ -277,7 +279,7 @@ public static class ObjectArray implements Representation {
277279
return RepresentationType.OBJECT_ARRAY;
278280
}
279281

280-
@Override public Object freeze(ColumnLoader.ValueSet valueSet, int[] sources) {
282+
@Override public Object freeze(ColumnLoader.ValueSet valueSet, int @Nullable [] sources) {
281283
// We assume the values have been canonized.
282284
final List<Comparable> list = permuteList(valueSet.values, sources);
283285
return list.toArray(new Comparable[0]);
@@ -334,7 +336,7 @@ public static class PrimitiveArray implements Representation {
334336
return RepresentationType.PRIMITIVE_ARRAY;
335337
}
336338

337-
@Override public Object freeze(ColumnLoader.ValueSet valueSet, int[] sources) {
339+
@Override public Object freeze(ColumnLoader.ValueSet valueSet, int @Nullable [] sources) {
338340
//noinspection unchecked
339341
return primitive.toArray2(
340342
permuteList((List) valueSet.values, sources));
@@ -344,7 +346,7 @@ public static class PrimitiveArray implements Representation {
344346
return primitive.permute(dataSet, sources);
345347
}
346348

347-
@Override public Object getObject(Object dataSet, int ordinal) {
349+
@Override public @Nullable Object getObject(Object dataSet, int ordinal) {
348350
return p.arrayItem(dataSet, ordinal);
349351
}
350352

@@ -375,7 +377,7 @@ public static class PrimitiveDictionary implements Representation {
375377
return RepresentationType.PRIMITIVE_DICTIONARY;
376378
}
377379

378-
@Override public Object freeze(ColumnLoader.ValueSet valueSet, int[] sources) {
380+
@Override public Object freeze(ColumnLoader.ValueSet valueSet, int @Nullable [] sources) {
379381
throw new UnsupportedOperationException(); // TODO:
380382
}
381383

@@ -423,7 +425,7 @@ public static class ObjectDictionary implements Representation {
423425
return RepresentationType.OBJECT_DICTIONARY;
424426
}
425427

426-
@Override public Object freeze(ColumnLoader.ValueSet valueSet, int[] sources) {
428+
@Override public Object freeze(ColumnLoader.ValueSet valueSet, int @Nullable [] sources) {
427429
final int n = valueSet.map.keySet().size();
428430
int extra = valueSet.containsNull ? 1 : 0;
429431
Comparable[] codeValues =
@@ -486,7 +488,7 @@ public static class StringDictionary implements Representation {
486488
return RepresentationType.STRING_DICTIONARY;
487489
}
488490

489-
@Override public Object freeze(ColumnLoader.ValueSet valueSet, int[] sources) {
491+
@Override public Object freeze(ColumnLoader.ValueSet valueSet, int @Nullable [] sources) {
490492
throw new UnsupportedOperationException(); // TODO:
491493
}
492494

@@ -524,7 +526,7 @@ public static class ByteStringDictionary implements Representation {
524526
return RepresentationType.BYTE_STRING_DICTIONARY;
525527
}
526528

527-
@Override public Object freeze(ColumnLoader.ValueSet valueSet, int[] sources) {
529+
@Override public Object freeze(ColumnLoader.ValueSet valueSet, int @Nullable [] sources) {
528530
throw new UnsupportedOperationException(); // TODO:
529531
}
530532

@@ -565,7 +567,7 @@ public static class Constant implements Representation {
565567
return RepresentationType.CONSTANT;
566568
}
567569

568-
@Override public Object freeze(ColumnLoader.ValueSet valueSet, int[] sources) {
570+
@Override public Object freeze(ColumnLoader.ValueSet valueSet, int @Nullable [] sources) {
569571
final int size = valueSet.values.size();
570572
return Pair.of(size == 0 ? null : valueSet.values.get(0), size);
571573
}
@@ -626,7 +628,7 @@ public static class BitSlicedPrimitiveArray implements Representation {
626628
return RepresentationType.BIT_SLICED_PRIMITIVE_ARRAY;
627629
}
628630

629-
@Override public Object freeze(ColumnLoader.ValueSet valueSet, int[] sources) {
631+
@Override public Object freeze(ColumnLoader.ValueSet valueSet, int @Nullable [] sources) {
630632
final int chunksPerWord = 64 / bitCount;
631633
final List<Comparable> valueList =
632634
permuteList(valueSet.values, sources);
@@ -783,7 +785,7 @@ public static void orLong(
783785
}
784786

785787
private static <E> List<E> permuteList(
786-
final List<E> list, final int[] sources) {
788+
final List<E> list, final int @Nullable [] sources) {
787789
if (sources == null) {
788790
return list;
789791
}
@@ -828,13 +830,13 @@ public <T> Enumerator<T> enumerator() {
828830
}
829831
}
830832

831-
public Enumerator<Object[]> arrayEnumerator() {
833+
public Enumerator<@Nullable Object[]> arrayEnumerator() {
832834
return new ArrayEnumerator(size, columns);
833835
}
834836

835837
/** Enumerator over a table with a single column; each element
836838
* returned is an object. */
837-
private static class ObjectEnumerator implements Enumerator<Object> {
839+
private static class ObjectEnumerator implements Enumerator<@Nullable Object> {
838840
final int rowCount;
839841
final Object dataSet;
840842
final Representation representation;
@@ -846,7 +848,7 @@ private static class ObjectEnumerator implements Enumerator<Object> {
846848
this.representation = column.representation;
847849
}
848850

849-
@Override public Object current() {
851+
@Override public @Nullable Object current() {
850852
return representation.getObject(dataSet, i);
851853
}
852854

@@ -864,7 +866,7 @@ private static class ObjectEnumerator implements Enumerator<Object> {
864866

865867
/** Enumerator over a table with more than one column; each element
866868
* returned is an array. */
867-
private static class ArrayEnumerator implements Enumerator<Object[]> {
869+
private static class ArrayEnumerator implements Enumerator<@Nullable Object[]> {
868870
final int rowCount;
869871
final List<Column> columns;
870872
int i = -1;
@@ -874,8 +876,8 @@ private static class ArrayEnumerator implements Enumerator<Object[]> {
874876
this.columns = columns;
875877
}
876878

877-
@Override public Object[] current() {
878-
Object[] objects = new Object[columns.size()];
879+
@Override public @Nullable Object[] current() {
880+
@Nullable Object[] objects = new Object[columns.size()];
879881
for (int j = 0; j < objects.length; j++) {
880882
final Column pair = columns.get(j);
881883
objects[j] = pair.representation.getObject(pair.dataSet, i);

core/src/main/java/org/apache/calcite/adapter/clone/ColumnLoader.java

+4-4
Original file line numberDiff line numberDiff line change
@@ -232,14 +232,14 @@ private void load(final RelDataType elementType,
232232
* value needs to be converted to a {@link Long}. Similarly
233233
* {@link java.sql.Date} and {@link java.sql.Time} values to
234234
* {@link Integer}. */
235-
private static List wrap(ColumnMetaData.Rep rep, List list,
235+
private static List<? extends @Nullable Object> wrap(ColumnMetaData.Rep rep, List<?> list,
236236
RelDataType type) {
237237
switch (type.getSqlTypeName()) {
238238
case TIMESTAMP:
239239
switch (rep) {
240240
case OBJECT:
241241
case JAVA_SQL_TIMESTAMP:
242-
return Util.transform(list,
242+
return Util.transform((List<@Nullable Timestamp>) list,
243243
(Timestamp t) -> t == null ? null : t.getTime());
244244
default:
245245
break;
@@ -249,7 +249,7 @@ private static List wrap(ColumnMetaData.Rep rep, List list,
249249
switch (rep) {
250250
case OBJECT:
251251
case JAVA_SQL_TIME:
252-
return Util.transform(list, (Time t) -> t == null
252+
return Util.transform((List<@Nullable Time>) list, (Time t) -> t == null
253253
? null
254254
: (int) (t.getTime() % DateTimeUtils.MILLIS_PER_DAY));
255255
default:
@@ -260,7 +260,7 @@ private static List wrap(ColumnMetaData.Rep rep, List list,
260260
switch (rep) {
261261
case OBJECT:
262262
case JAVA_SQL_DATE:
263-
return Util.transform(list, (Date d) -> d == null
263+
return Util.<@Nullable Date, @Nullable Integer>transform((List<@Nullable Date>) list, (Date d) -> d == null
264264
? null
265265
: (int) (d.getTime() / DateTimeUtils.MILLIS_PER_DAY));
266266
default:

core/src/main/java/org/apache/calcite/adapter/enumerable/AggResultContext.java

+3-1
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@
1919
import org.apache.calcite.linq4j.tree.Expression;
2020
import org.apache.calcite.rel.core.AggregateCall;
2121

22+
import org.checkerframework.checker.nullness.qual.Nullable;
23+
2224
/**
2325
* Information for a call to
2426
* {@link AggImplementor#implementResult(AggContext, AggResultContext)}
@@ -32,7 +34,7 @@ public interface AggResultContext extends NestedBlockBuilder, AggResetContext {
3234
* accumulator were aggregated. Most aggregate functions depend on only the
3335
* accumulator, but quasi-aggregate functions such as GROUPING access at the
3436
* key. */
35-
Expression key();
37+
@Nullable Expression key();
3638

3739
/** Returns an expression that references the {@code i}th field of the key,
3840
* cast to the appropriate type. */

0 commit comments

Comments
 (0)