mirror of
https://github.com/apache/druid.git
synced 2025-02-08 19:14:49 +00:00
Remove deprecated Aggregator/AggregatorFactory methods (#3894)
This commit is contained in:
parent
151ff6d064
commit
e6b95e80aa
@ -64,12 +64,6 @@ public class DistinctCountAggregator implements Aggregator
|
|||||||
return (float) mutableBitmap.size();
|
return (float) mutableBitmap.size();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getName()
|
|
||||||
{
|
|
||||||
throw new UnsupportedOperationException("getName is deprecated");
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void close()
|
public void close()
|
||||||
{
|
{
|
||||||
|
@ -50,12 +50,6 @@ public class EmptyDistinctCountAggregator implements Aggregator
|
|||||||
return (float) 0;
|
return (float) 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getName()
|
|
||||||
{
|
|
||||||
throw new UnsupportedOperationException("getName is deprecated");
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void close()
|
public void close()
|
||||||
{
|
{
|
||||||
|
@ -85,12 +85,6 @@ public class TimestampAggregator implements Aggregator
|
|||||||
return (float) most;
|
return (float) most;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getName()
|
|
||||||
{
|
|
||||||
return name;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void close()
|
public void close()
|
||||||
{
|
{
|
||||||
|
@ -166,12 +166,6 @@ public class TimestampAggregatorFactory extends AggregatorFactory
|
|||||||
return Longs.BYTES;
|
return Longs.BYTES;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public Object getAggregatorStartValue()
|
|
||||||
{
|
|
||||||
return initValue;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean equals(Object o)
|
public boolean equals(Object o)
|
||||||
{
|
{
|
||||||
|
@ -133,8 +133,6 @@ public class TimestampMinMaxAggregatorTest
|
|||||||
{
|
{
|
||||||
TimestampAggregator aggregator = (TimestampAggregator) aggregatorFactory.factorize(selectorFactory);
|
TimestampAggregator aggregator = (TimestampAggregator) aggregatorFactory.factorize(selectorFactory);
|
||||||
|
|
||||||
Assert.assertEquals(aggType, aggregator.getName());
|
|
||||||
|
|
||||||
for (Timestamp value: values) {
|
for (Timestamp value: values) {
|
||||||
aggregate(selector, aggregator);
|
aggregate(selector, aggregator);
|
||||||
}
|
}
|
||||||
|
@ -55,12 +55,6 @@ public class EmptySketchAggregator implements Aggregator
|
|||||||
throw new UnsupportedOperationException("Not implemented");
|
throw new UnsupportedOperationException("Not implemented");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getName()
|
|
||||||
{
|
|
||||||
throw new UnsupportedOperationException("getName is deprecated");
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void close()
|
public void close()
|
||||||
{
|
{
|
||||||
|
@ -80,12 +80,6 @@ public class SketchAggregator implements Aggregator
|
|||||||
throw new UnsupportedOperationException("Not implemented");
|
throw new UnsupportedOperationException("Not implemented");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getName()
|
|
||||||
{
|
|
||||||
throw new UnsupportedOperationException("getName is deprecated");
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void close()
|
public void close()
|
||||||
{
|
{
|
||||||
|
@ -92,12 +92,6 @@ public class ApproximateHistogramAggregator implements Aggregator
|
|||||||
throw new UnsupportedOperationException("ApproximateHistogramAggregator does not support getLong()");
|
throw new UnsupportedOperationException("ApproximateHistogramAggregator does not support getLong()");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getName()
|
|
||||||
{
|
|
||||||
throw new UnsupportedOperationException("getName is deprecated");
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void close()
|
public void close()
|
||||||
{
|
{
|
||||||
|
@ -90,12 +90,6 @@ public class ApproximateHistogramFoldingAggregator implements Aggregator
|
|||||||
throw new UnsupportedOperationException("ApproximateHistogramFoldingAggregator does not support getLong()");
|
throw new UnsupportedOperationException("ApproximateHistogramFoldingAggregator does not support getLong()");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getName()
|
|
||||||
{
|
|
||||||
throw new UnsupportedOperationException("getName is deprecated");
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void close()
|
public void close()
|
||||||
{
|
{
|
||||||
|
@ -46,12 +46,6 @@ public abstract class VarianceAggregator implements Aggregator
|
|||||||
return holder;
|
return holder;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getName()
|
|
||||||
{
|
|
||||||
throw new UnsupportedOperationException("getName is deprecated");
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void close()
|
public void close()
|
||||||
{
|
{
|
||||||
|
@ -38,10 +38,6 @@ public interface Aggregator {
|
|||||||
Object get();
|
Object get();
|
||||||
float getFloat();
|
float getFloat();
|
||||||
|
|
||||||
/**
|
|
||||||
* Deprecated, to be removed in 0.10.0. See https://github.com/druid-io/druid/issues/3588.
|
|
||||||
*/
|
|
||||||
@Deprecated String getName();
|
|
||||||
void close();
|
void close();
|
||||||
|
|
||||||
long getLong();
|
long getLong();
|
||||||
|
@ -126,15 +126,6 @@ public abstract class AggregatorFactory
|
|||||||
*/
|
*/
|
||||||
public abstract int getMaxIntermediateSize();
|
public abstract int getMaxIntermediateSize();
|
||||||
|
|
||||||
/**
|
|
||||||
* Deprecated, to be removed in 0.10.0. See https://github.com/druid-io/druid/issues/3588.
|
|
||||||
*/
|
|
||||||
@Deprecated
|
|
||||||
public Object getAggregatorStartValue()
|
|
||||||
{
|
|
||||||
throw new UnsupportedOperationException("getAggregatorStartValue is deprecated");
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Merges the list of AggregatorFactory[] (presumable from metadata of some segments being merged) and
|
* Merges the list of AggregatorFactory[] (presumable from metadata of some segments being merged) and
|
||||||
* returns merged AggregatorFactory[] (for the metadata for merged segment).
|
* returns merged AggregatorFactory[] (for the metadata for merged segment).
|
||||||
|
@ -53,12 +53,6 @@ public class Aggregators
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getName()
|
|
||||||
{
|
|
||||||
throw new UnsupportedOperationException("getName is deprecated");
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void close()
|
public void close()
|
||||||
{
|
{
|
||||||
|
@ -68,12 +68,6 @@ public class CountAggregator implements Aggregator
|
|||||||
return count;
|
return count;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getName()
|
|
||||||
{
|
|
||||||
throw new UnsupportedOperationException("getName is deprecated");
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Aggregator clone()
|
public Aggregator clone()
|
||||||
{
|
{
|
||||||
|
@ -75,12 +75,6 @@ public class DoubleMaxAggregator implements Aggregator
|
|||||||
return (long) max;
|
return (long) max;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getName()
|
|
||||||
{
|
|
||||||
throw new UnsupportedOperationException("getName is deprecated");
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Aggregator clone()
|
public Aggregator clone()
|
||||||
{
|
{
|
||||||
|
@ -75,12 +75,6 @@ public class DoubleMinAggregator implements Aggregator
|
|||||||
return (long) min;
|
return (long) min;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getName()
|
|
||||||
{
|
|
||||||
throw new UnsupportedOperationException("getName is deprecated");
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Aggregator clone()
|
public Aggregator clone()
|
||||||
{
|
{
|
||||||
|
@ -84,12 +84,6 @@ public class DoubleSumAggregator implements Aggregator
|
|||||||
return (long) sum;
|
return (long) sum;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getName()
|
|
||||||
{
|
|
||||||
throw new UnsupportedOperationException("getName is deprecated");
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Aggregator clone()
|
public Aggregator clone()
|
||||||
{
|
{
|
||||||
|
@ -64,12 +64,6 @@ public class FilteredAggregator implements Aggregator
|
|||||||
return delegate.getLong();
|
return delegate.getLong();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getName()
|
|
||||||
{
|
|
||||||
throw new UnsupportedOperationException("getName is deprecated");
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void close()
|
public void close()
|
||||||
{
|
{
|
||||||
|
@ -80,12 +80,6 @@ public class HistogramAggregator implements Aggregator
|
|||||||
throw new UnsupportedOperationException("HistogramAggregator does not support getLong()");
|
throw new UnsupportedOperationException("HistogramAggregator does not support getLong()");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getName()
|
|
||||||
{
|
|
||||||
throw new UnsupportedOperationException("getName is deprecated");
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void close()
|
public void close()
|
||||||
{
|
{
|
||||||
|
@ -80,12 +80,6 @@ public class JavaScriptAggregator implements Aggregator
|
|||||||
return (long) current;
|
return (long) current;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getName()
|
|
||||||
{
|
|
||||||
throw new UnsupportedOperationException("getName is deprecated");
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void close()
|
public void close()
|
||||||
{
|
{
|
||||||
|
@ -75,12 +75,6 @@ public class LongMaxAggregator implements Aggregator
|
|||||||
return max;
|
return max;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getName()
|
|
||||||
{
|
|
||||||
throw new UnsupportedOperationException("getName is deprecated");
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Aggregator clone()
|
public Aggregator clone()
|
||||||
{
|
{
|
||||||
|
@ -75,12 +75,6 @@ public class LongMinAggregator implements Aggregator
|
|||||||
return min;
|
return min;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getName()
|
|
||||||
{
|
|
||||||
throw new UnsupportedOperationException("getName is deprecated");
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Aggregator clone()
|
public Aggregator clone()
|
||||||
{
|
{
|
||||||
|
@ -83,12 +83,6 @@ public class LongSumAggregator implements Aggregator
|
|||||||
return sum;
|
return sum;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getName()
|
|
||||||
{
|
|
||||||
throw new UnsupportedOperationException("getName is deprecated");
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Aggregator clone()
|
public Aggregator clone()
|
||||||
{
|
{
|
||||||
|
@ -112,12 +112,6 @@ public class CardinalityAggregator implements Aggregator
|
|||||||
throw new UnsupportedOperationException("CardinalityAggregator does not support getLong()");
|
throw new UnsupportedOperationException("CardinalityAggregator does not support getLong()");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getName()
|
|
||||||
{
|
|
||||||
throw new UnsupportedOperationException("getName is deprecated");
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Aggregator clone()
|
public Aggregator clone()
|
||||||
{
|
{
|
||||||
|
@ -76,12 +76,6 @@ public class DoubleFirstAggregator implements Aggregator
|
|||||||
return (float) firstValue;
|
return (float) firstValue;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getName()
|
|
||||||
{
|
|
||||||
return name;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void close()
|
public void close()
|
||||||
{
|
{
|
||||||
|
@ -225,12 +225,6 @@ public class DoubleFirstAggregatorFactory extends AggregatorFactory
|
|||||||
return Longs.BYTES + Doubles.BYTES;
|
return Longs.BYTES + Doubles.BYTES;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public Object getAggregatorStartValue()
|
|
||||||
{
|
|
||||||
throw new UnsupportedOperationException();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean equals(Object o)
|
public boolean equals(Object o)
|
||||||
{
|
{
|
||||||
|
@ -75,12 +75,6 @@ public class LongFirstAggregator implements Aggregator
|
|||||||
return (float) firstValue;
|
return (float) firstValue;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getName()
|
|
||||||
{
|
|
||||||
return name;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void close()
|
public void close()
|
||||||
{
|
{
|
||||||
|
@ -215,12 +215,6 @@ public class LongFirstAggregatorFactory extends AggregatorFactory
|
|||||||
return Longs.BYTES * 2;
|
return Longs.BYTES * 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public Object getAggregatorStartValue()
|
|
||||||
{
|
|
||||||
throw new UnsupportedOperationException();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean equals(Object o)
|
public boolean equals(Object o)
|
||||||
{
|
{
|
||||||
|
@ -70,12 +70,6 @@ public class HyperUniquesAggregator implements Aggregator
|
|||||||
throw new UnsupportedOperationException("HyperUniquesAggregator does not support getLong()");
|
throw new UnsupportedOperationException("HyperUniquesAggregator does not support getLong()");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getName()
|
|
||||||
{
|
|
||||||
throw new UnsupportedOperationException("getName is deprecated");
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Aggregator clone()
|
public Aggregator clone()
|
||||||
{
|
{
|
||||||
|
@ -76,12 +76,6 @@ public class DoubleLastAggregator implements Aggregator
|
|||||||
return (float) lastValue;
|
return (float) lastValue;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getName()
|
|
||||||
{
|
|
||||||
return name;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void close()
|
public void close()
|
||||||
{
|
{
|
||||||
|
@ -208,12 +208,6 @@ public class DoubleLastAggregatorFactory extends AggregatorFactory
|
|||||||
return Longs.BYTES + Doubles.BYTES;
|
return Longs.BYTES + Doubles.BYTES;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public Object getAggregatorStartValue()
|
|
||||||
{
|
|
||||||
throw new UnsupportedOperationException();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean equals(Object o)
|
public boolean equals(Object o)
|
||||||
{
|
{
|
||||||
|
@ -74,12 +74,6 @@ public class LongLastAggregator implements Aggregator
|
|||||||
return (float) lastValue;
|
return (float) lastValue;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getName()
|
|
||||||
{
|
|
||||||
return name;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void close()
|
public void close()
|
||||||
{
|
{
|
||||||
|
@ -208,12 +208,6 @@ public class LongLastAggregatorFactory extends AggregatorFactory
|
|||||||
return Longs.BYTES * 2;
|
return Longs.BYTES * 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public Object getAggregatorStartValue()
|
|
||||||
{
|
|
||||||
throw new UnsupportedOperationException();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean equals(Object o)
|
public boolean equals(Object o)
|
||||||
{
|
{
|
||||||
|
@ -73,8 +73,6 @@ public class DoubleFirstAggregationTest
|
|||||||
{
|
{
|
||||||
DoubleFirstAggregator agg = (DoubleFirstAggregator) doubleFirstAggFactory.factorize(colSelectorFactory);
|
DoubleFirstAggregator agg = (DoubleFirstAggregator) doubleFirstAggFactory.factorize(colSelectorFactory);
|
||||||
|
|
||||||
Assert.assertEquals("billy", agg.getName());
|
|
||||||
|
|
||||||
aggregate(agg);
|
aggregate(agg);
|
||||||
aggregate(agg);
|
aggregate(agg);
|
||||||
aggregate(agg);
|
aggregate(agg);
|
||||||
@ -126,8 +124,6 @@ public class DoubleFirstAggregationTest
|
|||||||
{
|
{
|
||||||
DoubleFirstAggregator agg = (DoubleFirstAggregator) combiningAggFactory.factorize(colSelectorFactory);
|
DoubleFirstAggregator agg = (DoubleFirstAggregator) combiningAggFactory.factorize(colSelectorFactory);
|
||||||
|
|
||||||
Assert.assertEquals("billy", agg.getName());
|
|
||||||
|
|
||||||
aggregate(agg);
|
aggregate(agg);
|
||||||
aggregate(agg);
|
aggregate(agg);
|
||||||
aggregate(agg);
|
aggregate(agg);
|
||||||
|
@ -72,8 +72,6 @@ public class LongFirstAggregationTest
|
|||||||
{
|
{
|
||||||
LongFirstAggregator agg = (LongFirstAggregator) longFirstAggFactory.factorize(colSelectorFactory);
|
LongFirstAggregator agg = (LongFirstAggregator) longFirstAggFactory.factorize(colSelectorFactory);
|
||||||
|
|
||||||
Assert.assertEquals("billy", agg.getName());
|
|
||||||
|
|
||||||
aggregate(agg);
|
aggregate(agg);
|
||||||
aggregate(agg);
|
aggregate(agg);
|
||||||
aggregate(agg);
|
aggregate(agg);
|
||||||
@ -125,8 +123,6 @@ public class LongFirstAggregationTest
|
|||||||
{
|
{
|
||||||
LongFirstAggregator agg = (LongFirstAggregator) combiningAggFactory.factorize(colSelectorFactory);
|
LongFirstAggregator agg = (LongFirstAggregator) combiningAggFactory.factorize(colSelectorFactory);
|
||||||
|
|
||||||
Assert.assertEquals("billy", agg.getName());
|
|
||||||
|
|
||||||
aggregate(agg);
|
aggregate(agg);
|
||||||
aggregate(agg);
|
aggregate(agg);
|
||||||
aggregate(agg);
|
aggregate(agg);
|
||||||
|
@ -73,8 +73,6 @@ public class DoubleLastAggregationTest
|
|||||||
{
|
{
|
||||||
DoubleLastAggregator agg = (DoubleLastAggregator) doubleLastAggFactory.factorize(colSelectorFactory);
|
DoubleLastAggregator agg = (DoubleLastAggregator) doubleLastAggFactory.factorize(colSelectorFactory);
|
||||||
|
|
||||||
Assert.assertEquals("billy", agg.getName());
|
|
||||||
|
|
||||||
aggregate(agg);
|
aggregate(agg);
|
||||||
aggregate(agg);
|
aggregate(agg);
|
||||||
aggregate(agg);
|
aggregate(agg);
|
||||||
@ -126,8 +124,6 @@ public class DoubleLastAggregationTest
|
|||||||
{
|
{
|
||||||
DoubleLastAggregator agg = (DoubleLastAggregator) combiningAggFactory.factorize(colSelectorFactory);
|
DoubleLastAggregator agg = (DoubleLastAggregator) combiningAggFactory.factorize(colSelectorFactory);
|
||||||
|
|
||||||
Assert.assertEquals("billy", agg.getName());
|
|
||||||
|
|
||||||
aggregate(agg);
|
aggregate(agg);
|
||||||
aggregate(agg);
|
aggregate(agg);
|
||||||
aggregate(agg);
|
aggregate(agg);
|
||||||
|
@ -72,8 +72,6 @@ public class LongLastAggregationTest
|
|||||||
{
|
{
|
||||||
LongLastAggregator agg = (LongLastAggregator) longLastAggFactory.factorize(colSelectorFactory);
|
LongLastAggregator agg = (LongLastAggregator) longLastAggFactory.factorize(colSelectorFactory);
|
||||||
|
|
||||||
Assert.assertEquals("billy", agg.getName());
|
|
||||||
|
|
||||||
aggregate(agg);
|
aggregate(agg);
|
||||||
aggregate(agg);
|
aggregate(agg);
|
||||||
aggregate(agg);
|
aggregate(agg);
|
||||||
@ -125,8 +123,6 @@ public class LongLastAggregationTest
|
|||||||
{
|
{
|
||||||
LongLastAggregator agg = (LongLastAggregator) combiningAggFactory.factorize(colSelectorFactory);
|
LongLastAggregator agg = (LongLastAggregator) combiningAggFactory.factorize(colSelectorFactory);
|
||||||
|
|
||||||
Assert.assertEquals("billy", agg.getName());
|
|
||||||
|
|
||||||
aggregate(agg);
|
aggregate(agg);
|
||||||
aggregate(agg);
|
aggregate(agg);
|
||||||
aggregate(agg);
|
aggregate(agg);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user