diff --git a/query-service-impl/build.gradle.kts b/query-service-impl/build.gradle.kts index c1a0f1b3..79dda871 100644 --- a/query-service-impl/build.gradle.kts +++ b/query-service-impl/build.gradle.kts @@ -51,6 +51,6 @@ dependencies { testImplementation("org.junit.jupiter:junit-jupiter:5.7.1") testImplementation("org.mockito:mockito-core:3.8.0") testImplementation("org.mockito:mockito-junit-jupiter:3.8.0") - testImplementation("org.apache.logging.log4j:log4j-slf4j-impl:2.17.0") + testImplementation("org.apache.logging.log4j:log4j-slf4j-impl:2.17.1") testImplementation("com.squareup.okhttp3:mockwebserver:4.9.1") } diff --git a/query-service-impl/src/test/java/org/hypertrace/core/query/service/QueryRequestBuilderUtils.java b/query-service-impl/src/test/java/org/hypertrace/core/query/service/QueryRequestBuilderUtils.java index 84ac05da..53cf1387 100644 --- a/query-service-impl/src/test/java/org/hypertrace/core/query/service/QueryRequestBuilderUtils.java +++ b/query-service-impl/src/test/java/org/hypertrace/core/query/service/QueryRequestBuilderUtils.java @@ -30,6 +30,16 @@ public static Expression.Builder createComplexAttributeExpression( AttributeExpression.newBuilder().setAttributeId(attributeId).setSubpath(subPath)); } + public static Expression.Builder createAliasedComplexAttributeExpression( + String attributeId, String subPath, String alias) { + return Expression.newBuilder() + .setAttributeExpression( + AttributeExpression.newBuilder() + .setAttributeId(attributeId) + .setSubpath(subPath) + .setAlias(alias)); + } + public static Expression createAliasedColumnExpression(String columnName, String alias) { return Expression.newBuilder() .setColumnIdentifier( diff --git a/query-service-impl/src/test/java/org/hypertrace/core/query/service/projection/ProjectionTransformationTest.java b/query-service-impl/src/test/java/org/hypertrace/core/query/service/projection/ProjectionTransformationTest.java index e381ea07..e9012197 100644 --- a/query-service-impl/src/test/java/org/hypertrace/core/query/service/projection/ProjectionTransformationTest.java +++ b/query-service-impl/src/test/java/org/hypertrace/core/query/service/projection/ProjectionTransformationTest.java @@ -11,6 +11,7 @@ import static org.hypertrace.core.query.service.QueryFunctionConstants.QUERY_FUNCTION_HASH; import static org.hypertrace.core.query.service.QueryFunctionConstants.QUERY_FUNCTION_STRINGEQUALS; import static org.hypertrace.core.query.service.QueryRequestBuilderUtils.createAliasedAttributeExpression; +import static org.hypertrace.core.query.service.QueryRequestBuilderUtils.createAliasedComplexAttributeExpression; import static org.hypertrace.core.query.service.QueryRequestBuilderUtils.createAliasedFunctionExpression; import static org.hypertrace.core.query.service.QueryRequestBuilderUtils.createCompositeFilter; import static org.hypertrace.core.query.service.QueryRequestBuilderUtils.createFilter; @@ -92,6 +93,30 @@ void transformsBasicAliasProjection() { .blockingGet()); } + @Test + void transformsBasicAliasProjectionWithSubpath() { + this.mockAttribute(PROJECTED_ATTRIBUTE_ID, this.attributeMetadata); + this.mockAttribute(SIMPLE_ATTRIBUTE_ID, AttributeMetadata.getDefaultInstance()); + QueryRequest originalRequest = + QueryRequest.newBuilder() + .addSelection( + createAliasedComplexAttributeExpression( + PROJECTED_ATTRIBUTE_ID, "test-sub-path", "my-alias")) + .build(); + QueryRequest expectedTransform = + QueryRequest.newBuilder() + .addSelection( + createAliasedComplexAttributeExpression( + SIMPLE_ATTRIBUTE_ID, "test-sub-path", "my-alias")) + .build(); + + assertEquals( + expectedTransform, + this.projectionTransformation + .transform(originalRequest, mockTransformationContext) + .blockingGet()); + } + @Test void transformsComplexFunctionProjection() { // CONCAT(HASH(SIMPLE_ATTRIBUTE_ID), "projectionLiteral") diff --git a/query-service/build.gradle.kts b/query-service/build.gradle.kts index 76e19ebd..cb90594c 100644 --- a/query-service/build.gradle.kts +++ b/query-service/build.gradle.kts @@ -15,7 +15,7 @@ dependencies { implementation("org.slf4j:slf4j-api:1.7.32") implementation("com.typesafe:config:1.4.1") - runtimeOnly("org.apache.logging.log4j:log4j-slf4j-impl:2.17.0") + runtimeOnly("org.apache.logging.log4j:log4j-slf4j-impl:2.17.1") runtimeOnly("io.grpc:grpc-netty") integrationTestImplementation("com.google.protobuf:protobuf-java-util:3.17.3") integrationTestImplementation("org.junit.jupiter:junit-jupiter:5.7.1")