Skip to content

Commit 754d347

Browse files
committed
fix: Add P4HyperLogLog to NativeTypeManager
1 parent 84af5a1 commit 754d347

File tree

2 files changed

+20
-0
lines changed

2 files changed

+20
-0
lines changed

presto-native-sidecar-plugin/src/main/java/com/facebook/presto/sidecar/typemanager/NativeTypeManager.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@
5454
import static com.facebook.presto.common.type.StandardTypes.IPPREFIX;
5555
import static com.facebook.presto.common.type.StandardTypes.JSON;
5656
import static com.facebook.presto.common.type.StandardTypes.MAP;
57+
import static com.facebook.presto.common.type.StandardTypes.P4_HYPER_LOG_LOG;
5758
import static com.facebook.presto.common.type.StandardTypes.QDIGEST;
5859
import static com.facebook.presto.common.type.StandardTypes.REAL;
5960
import static com.facebook.presto.common.type.StandardTypes.ROW;
@@ -90,6 +91,7 @@ public class NativeTypeManager
9091
DOUBLE,
9192
SMALLINT,
9293
HYPER_LOG_LOG,
94+
P4_HYPER_LOG_LOG,
9395
JSON,
9496
TIMESTAMP_WITH_TIME_ZONE,
9597
UUID,

presto-native-sidecar-plugin/src/test/java/com/facebook/presto/sidecar/TestNativeSidecarPlugin.java

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515

1616
import com.facebook.airlift.units.DataSize;
1717
import com.facebook.presto.Session;
18+
import com.facebook.presto.common.type.Type;
1819
import com.facebook.presto.nativeworker.PrestoNativeQueryRunnerUtils;
1920
import com.facebook.presto.scalar.sql.NativeSqlInvokedFunctionsPlugin;
2021
import com.facebook.presto.scalar.sql.SqlInvokedFunctionsPlugin;
@@ -52,12 +53,15 @@
5253
import static com.facebook.presto.SystemSessionProperties.REMOVE_MAP_CAST;
5354
import static com.facebook.presto.common.Utils.checkArgument;
5455
import static com.facebook.presto.common.type.BigintType.BIGINT;
56+
import static com.facebook.presto.common.type.DoubleType.DOUBLE;
57+
import static com.facebook.presto.common.type.VarcharType.VARCHAR;
5558
import static com.facebook.presto.nativeworker.NativeQueryRunnerUtils.createCustomer;
5659
import static com.facebook.presto.nativeworker.NativeQueryRunnerUtils.createLineitem;
5760
import static com.facebook.presto.nativeworker.NativeQueryRunnerUtils.createNation;
5861
import static com.facebook.presto.nativeworker.NativeQueryRunnerUtils.createOrders;
5962
import static com.facebook.presto.nativeworker.NativeQueryRunnerUtils.createOrdersEx;
6063
import static com.facebook.presto.nativeworker.NativeQueryRunnerUtils.createRegion;
64+
import static com.facebook.presto.testing.MaterializedResult.resultBuilder;
6165
import static java.lang.String.format;
6266
import static org.testng.Assert.assertEquals;
6367
import static org.testng.Assert.assertFalse;
@@ -622,6 +626,20 @@ public void testNonOverriddenInlinedSqlInvokedFunctionsWhenConfigDisabled()
622626
".*Scalar function name not registered: native.default.key_sampling_percent.*");
623627
}
624628

629+
@Test
630+
public void testP4HyperLogLogWithApproxSet()
631+
{
632+
ImmutableList<Type> types = ImmutableList.of(BIGINT, VARCHAR, DOUBLE);
633+
ImmutableList<Long> expected = ImmutableList.of(1002L, 1024L, 1014L);
634+
for (Type type : types) {
635+
MaterializedResult actual = computeActual(String.format("SELECT cardinality(cast(approx_set(cast(custkey AS %s)) AS P4HYPERLOGLOG)) FROM orders", type.getTypeSignature().toString()));
636+
MaterializedResult expectedResult = resultBuilder(getSession(), BIGINT)
637+
.row(expected.get(types.indexOf(type)))
638+
.build();
639+
assertEquals(actual.getMaterializedRows(), expectedResult.getMaterializedRows());
640+
}
641+
}
642+
625643
private String generateRandomTableName()
626644
{
627645
String tableName = "tmp_presto_" + UUID.randomUUID().toString().replace("-", "");

0 commit comments

Comments
 (0)