From abe2864263d252b51e7ddd142a8dfaec1f5b23d7 Mon Sep 17 00:00:00 2001 From: gapra Date: Mon, 24 May 2021 12:18:41 -0700 Subject: [PATCH 1/6] Reenabled quick query parquet support --- sdk/storage/azure-storage-blob/CHANGELOG.md | 1 + .../blob/implementation/util/BlobQueryReader.java | 11 +++++------ .../blob/models/BlobQueryParquetSerialization.java | 3 +-- .../storage/blob/models/BlobQuerySerialization.java | 9 +++++---- .../storage/blob/specialized/BlobBaseAPITest.groovy | 4 ++-- .../azure-storage-file-datalake/CHANGELOG.md | 1 + .../com/azure/storage/file/datalake/Transforms.java | 13 +++++++------ .../models/FileQueryParquetSerialization.java | 3 +-- .../datalake/models/FileQuerySerialization.java | 5 +++-- .../azure/storage/file/datalake/FileAPITest.groovy | 6 +++--- 10 files changed, 29 insertions(+), 27 deletions(-) diff --git a/sdk/storage/azure-storage-blob/CHANGELOG.md b/sdk/storage/azure-storage-blob/CHANGELOG.md index 4b4fb4ecbecd3..235efe91476d4 100644 --- a/sdk/storage/azure-storage-blob/CHANGELOG.md +++ b/sdk/storage/azure-storage-blob/CHANGELOG.md @@ -2,6 +2,7 @@ ## 12.12.0-beta.2 (Unreleased) - Added support for the 2020-10-02 service version. +- Added support to specify Parquet Input Serialization when querying a blob. ## 12.12.0-beta.1 (2021-05-13) - Added support for the 2020-08-04 service version. diff --git a/sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/implementation/util/BlobQueryReader.java b/sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/implementation/util/BlobQueryReader.java index 8f4e6bf16d8e5..b4e4e04c04276 100644 --- a/sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/implementation/util/BlobQueryReader.java +++ b/sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/implementation/util/BlobQueryReader.java @@ -16,6 +16,7 @@ import com.azure.storage.blob.models.BlobQueryDelimitedSerialization; import com.azure.storage.blob.models.BlobQueryError; import com.azure.storage.blob.models.BlobQueryJsonSerialization; +import com.azure.storage.blob.models.BlobQueryParquetSerialization; import com.azure.storage.blob.models.BlobQueryProgress; import com.azure.storage.blob.models.BlobQuerySerialization; import com.azure.storage.internal.avro.implementation.AvroConstants; @@ -230,13 +231,12 @@ public static QuerySerialization transformInputSerialization(BlobQuerySerializat generatedFormat.setJsonTextConfiguration(transformJson( (BlobQueryJsonSerialization) userSerialization)); - // TODO (gapra): uncomment when parquet is released - /*} else if (userSerialization instanceof BlobQueryParquetSerialization) { + } else if (userSerialization instanceof BlobQueryParquetSerialization) { generatedFormat.setType(QueryFormatType.PARQUET); generatedFormat.setParquetTextConfiguration(transformParquet( (BlobQueryParquetSerialization) userSerialization)); - */ + } else { throw logger.logExceptionAsError(new IllegalArgumentException( "Please see values of valid input serialization in the documentation " @@ -323,13 +323,12 @@ private static JsonTextConfiguration transformJson(BlobQueryJsonSerialization js * @param parquetSerialization {@link BlobQueryParquetSerialization} * @return {@link JsonTextConfiguration} */ - // TODO (gapra): uncomment when parquet is released - /*private static Object transformParquet(BlobQueryParquetSerialization parquetSerialization) { + private static Object transformParquet(BlobQueryParquetSerialization parquetSerialization) { if (parquetSerialization == null) { return null; } return new Object(); - }*/ + } /** * Transforms a BlobQueryArrowSerialization into a ArrowConfiguration. diff --git a/sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/models/BlobQueryParquetSerialization.java b/sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/models/BlobQueryParquetSerialization.java index 003d6fbb74a4a..2b0220b5f1497 100644 --- a/sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/models/BlobQueryParquetSerialization.java +++ b/sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/models/BlobQueryParquetSerialization.java @@ -6,5 +6,4 @@ /** * Defines the input parquet serialization for a blob quick query request. */ -// TODO (gapra): public when parquet is released -class BlobQueryParquetSerialization implements BlobQuerySerialization { } +public class BlobQueryParquetSerialization implements BlobQuerySerialization { } diff --git a/sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/models/BlobQuerySerialization.java b/sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/models/BlobQuerySerialization.java index 1e6cb00319686..fe0771d2fdfed 100644 --- a/sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/models/BlobQuerySerialization.java +++ b/sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/models/BlobQuerySerialization.java @@ -2,13 +2,14 @@ // Licensed under the MIT License. package com.azure.storage.blob.models; -// TODO (gapra): add parquet to inputs when parquet is released + /** * Defines the input and output serialization for a blob quick query request. - * either {@link BlobQueryJsonSerialization}, {@link BlobQueryDelimitedSerialization}, or - * {@link BlobQueryArrowSerialization}. + * either {@link BlobQueryJsonSerialization}, {@link BlobQueryDelimitedSerialization}, + * {@link BlobQueryArrowSerialization}, or {@link BlobQueryParquetSerialization}. *

- * Note: {@link BlobQueryArrowSerialization} can only be used as an output. + * Note: {@link BlobQueryParquetSerialization} can only be used as an input and + * {@link BlobQueryArrowSerialization} can only be used as an output. *

*/ public interface BlobQuerySerialization { diff --git a/sdk/storage/azure-storage-blob/src/test/java/com/azure/storage/blob/specialized/BlobBaseAPITest.groovy b/sdk/storage/azure-storage-blob/src/test/java/com/azure/storage/blob/specialized/BlobBaseAPITest.groovy index feb2f6585bd85..c3df2142a6ebd 100644 --- a/sdk/storage/azure-storage-blob/src/test/java/com/azure/storage/blob/specialized/BlobBaseAPITest.groovy +++ b/sdk/storage/azure-storage-blob/src/test/java/com/azure/storage/blob/specialized/BlobBaseAPITest.groovy @@ -300,7 +300,7 @@ class BlobBaseAPITest extends APISpec { } @Unroll - @Ignore /* TODO: Unignore when parquet is officially supported. */ + @RequiredServiceVersion(clazz = BlobServiceVersion.class, min = "V2020_10_02") def "Query Input parquet"() { setup: String fileName = "parquet.parquet" @@ -712,7 +712,7 @@ class BlobBaseAPITest extends APISpec { thrown(IllegalArgumentException) } - @Ignore /* TODO: Unignore when parquet is officially supported. */ + @RequiredServiceVersion(clazz = BlobServiceVersion.class, min = "V2020_10_02") def "Query parquet output IA"() { setup: def outSer = new BlobQueryParquetSerialization() diff --git a/sdk/storage/azure-storage-file-datalake/CHANGELOG.md b/sdk/storage/azure-storage-file-datalake/CHANGELOG.md index 5f7d2afa045f6..86d8bd919157e 100644 --- a/sdk/storage/azure-storage-file-datalake/CHANGELOG.md +++ b/sdk/storage/azure-storage-file-datalake/CHANGELOG.md @@ -2,6 +2,7 @@ ## 12.6.0-beta.2 (Unreleased) - Added support for the 2020-10-02 service version. +- Added support to specify Parquet Input Serialization when querying a file. ## 12.6.0-beta.1 (2021-05-13) - Added support for the 2020-08-04 service version. diff --git a/sdk/storage/azure-storage-file-datalake/src/main/java/com/azure/storage/file/datalake/Transforms.java b/sdk/storage/azure-storage-file-datalake/src/main/java/com/azure/storage/file/datalake/Transforms.java index df60063c4a830..363436aca7813 100644 --- a/sdk/storage/azure-storage-file-datalake/src/main/java/com/azure/storage/file/datalake/Transforms.java +++ b/sdk/storage/azure-storage-file-datalake/src/main/java/com/azure/storage/file/datalake/Transforms.java @@ -25,6 +25,7 @@ import com.azure.storage.blob.models.BlobQueryError; import com.azure.storage.blob.models.BlobQueryHeaders; import com.azure.storage.blob.models.BlobQueryJsonSerialization; +import com.azure.storage.blob.models.BlobQueryParquetSerialization; import com.azure.storage.blob.models.BlobQueryProgress; import com.azure.storage.blob.models.BlobQueryResponse; import com.azure.storage.blob.models.BlobQuerySerialization; @@ -60,6 +61,7 @@ import com.azure.storage.file.datalake.models.FileQueryError; import com.azure.storage.file.datalake.models.FileQueryHeaders; import com.azure.storage.file.datalake.models.FileQueryJsonSerialization; +import com.azure.storage.file.datalake.models.FileQueryParquetSerialization; import com.azure.storage.file.datalake.models.FileQueryProgress; import com.azure.storage.file.datalake.models.FileQueryResponse; import com.azure.storage.file.datalake.models.FileQuerySerialization; @@ -444,16 +446,15 @@ static BlobQuerySerialization toBlobQuerySerialization(FileQuerySerialization se } else if (ser instanceof FileQueryArrowSerialization) { FileQueryArrowSerialization arrSer = (FileQueryArrowSerialization) ser; return new BlobQueryArrowSerialization().setSchema(toBlobQueryArrowSchema(arrSer.getSchema())); - // TODO (gapra): uncomment when parquet is released - /*} else if (ser instanceof FileQueryParquetSerialization) { - return new BlobQueryParquetSerialization(); */ + } else if (ser instanceof FileQueryParquetSerialization) { + return new BlobQueryParquetSerialization(); } else { throw new IllegalArgumentException( - String.format("'serialization' must be one of %s, %s, or %s", + String.format("'serialization' must be one of %s, %s, %s, or %s", FileQueryJsonSerialization.class.getSimpleName(), FileQueryDelimitedSerialization.class.getSimpleName(), - FileQueryArrowSerialization.class.getSimpleName() - /*FileQueryParquetSerialization.class.getSimpleName()*/)); + FileQueryArrowSerialization.class.getSimpleName(), + FileQueryParquetSerialization.class.getSimpleName())); } } diff --git a/sdk/storage/azure-storage-file-datalake/src/main/java/com/azure/storage/file/datalake/models/FileQueryParquetSerialization.java b/sdk/storage/azure-storage-file-datalake/src/main/java/com/azure/storage/file/datalake/models/FileQueryParquetSerialization.java index 5d8cc5597210f..e6ce7049c21a3 100644 --- a/sdk/storage/azure-storage-file-datalake/src/main/java/com/azure/storage/file/datalake/models/FileQueryParquetSerialization.java +++ b/sdk/storage/azure-storage-file-datalake/src/main/java/com/azure/storage/file/datalake/models/FileQueryParquetSerialization.java @@ -6,5 +6,4 @@ /** * Defines the input parquet serialization for a file quick query request. */ -// TODO (gapra): public when parquet is released -class FileQueryParquetSerialization implements FileQuerySerialization { } +public class FileQueryParquetSerialization implements FileQuerySerialization { } diff --git a/sdk/storage/azure-storage-file-datalake/src/main/java/com/azure/storage/file/datalake/models/FileQuerySerialization.java b/sdk/storage/azure-storage-file-datalake/src/main/java/com/azure/storage/file/datalake/models/FileQuerySerialization.java index 0b5f12eeedc70..7cdff347b771a 100644 --- a/sdk/storage/azure-storage-file-datalake/src/main/java/com/azure/storage/file/datalake/models/FileQuerySerialization.java +++ b/sdk/storage/azure-storage-file-datalake/src/main/java/com/azure/storage/file/datalake/models/FileQuerySerialization.java @@ -7,9 +7,10 @@ /** * Defines the input and output serialization for a file quick query request. * either {@link FileQueryJsonSerialization}, {@link FileQueryDelimitedSerialization}, - * {@link FileQueryArrowSerialization}. + * {@link FileQueryArrowSerialization}, or {@link FileQueryParquetSerialization}. *

- * Note: {@link FileQueryArrowSerialization} can only be used as an output. + * Note: {@link FileQueryParquetSerialization} can only be used as an input and + * {@link FileQueryArrowSerialization} can only be used as an output. *

*/ public interface FileQuerySerialization { diff --git a/sdk/storage/azure-storage-file-datalake/src/test/java/com/azure/storage/file/datalake/FileAPITest.groovy b/sdk/storage/azure-storage-file-datalake/src/test/java/com/azure/storage/file/datalake/FileAPITest.groovy index 542a6d6d07dc2..12e06cc9aea1c 100644 --- a/sdk/storage/azure-storage-file-datalake/src/test/java/com/azure/storage/file/datalake/FileAPITest.groovy +++ b/sdk/storage/azure-storage-file-datalake/src/test/java/com/azure/storage/file/datalake/FileAPITest.groovy @@ -2233,7 +2233,7 @@ class FileAPITest extends APISpec { StepVerifier.create(fac.uploadFromFile(file.toPath().toString(), parallelTransferOptions, null, null, null)) .verifyComplete() - + uploadReporter.getReportedByteCount() == size cleanup: @@ -3165,8 +3165,8 @@ class FileAPITest extends APISpec { 1000 | '\n' || _ } + @RequiredServiceVersion(clazz = DataLakeServiceVersion.class, min = "V2020_10_02") @Unroll - @Ignore /* TODO: Unignore when parquet is officially supported. */ def "Query Input parquet"() { setup: String fileName = "parquet.parquet" @@ -3546,7 +3546,7 @@ class FileAPITest extends APISpec { thrown(IllegalArgumentException) } - @Ignore /* TODO: Unignore when parquet is officially supported. */ + @RequiredServiceVersion(clazz = DataLakeServiceVersion.class, min = "V2020_10_02") def "Query parquet output IA"() { setup: def outSer = new FileQueryParquetSerialization() From 204f82e6b5227fb019e73039c4068f336d9e0535 Mon Sep 17 00:00:00 2001 From: gapra Date: Wed, 2 Jun 2021 10:23:44 -0700 Subject: [PATCH 2/6] Added test records --- .../BlobBaseAPITestQueryInputParquet.json | 135 ++++++++++++++ .../BlobBaseAPITestQueryParquetOutputIA.json | 50 +++++ .../FileAPITestQueryInputParquet.json | 172 ++++++++++++++++++ .../FileAPITestQueryParquetOutputIA.json | 47 +++++ 4 files changed, 404 insertions(+) create mode 100644 sdk/storage/azure-storage-blob/src/test/resources/session-records/BlobBaseAPITestQueryInputParquet.json create mode 100644 sdk/storage/azure-storage-blob/src/test/resources/session-records/BlobBaseAPITestQueryParquetOutputIA.json create mode 100644 sdk/storage/azure-storage-file-datalake/src/test/resources/session-records/FileAPITestQueryInputParquet.json create mode 100644 sdk/storage/azure-storage-file-datalake/src/test/resources/session-records/FileAPITestQueryParquetOutputIA.json diff --git a/sdk/storage/azure-storage-blob/src/test/resources/session-records/BlobBaseAPITestQueryInputParquet.json b/sdk/storage/azure-storage-blob/src/test/resources/session-records/BlobBaseAPITestQueryInputParquet.json new file mode 100644 index 0000000000000..217179668d069 --- /dev/null +++ b/sdk/storage/azure-storage-blob/src/test/resources/session-records/BlobBaseAPITestQueryInputParquet.json @@ -0,0 +1,135 @@ +{ + "networkCallRecords" : [ { + "Method" : "PUT", + "Uri" : "https://REDACTED.blob.preprod.core.windows.net/64420e75064420e75a361102414ce4cb291ed4999822?restype=container", + "Headers" : { + "x-ms-version" : "2020-08-04", + "User-Agent" : "azsdk-java-azure-storage-blob/12.12.0-beta.2 (11.0.7; Windows 10; 10.0)", + "x-ms-client-request-id" : "661d0441-4472-4d22-9970-a9fdd2558da5" + }, + "Response" : { + "Transfer-Encoding" : "chunked", + "x-ms-version" : "2020-08-04", + "Server" : "Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0", + "eTag" : "0x8D925EAE1F5D7F4", + "Last-Modified" : "Wed, 02 Jun 2021 17:21:39 GMT", + "retry-after" : "0", + "StatusCode" : "201", + "x-ms-request-id" : "2122760e-f01e-000d-4fd3-572003000000", + "x-ms-client-request-id" : "661d0441-4472-4d22-9970-a9fdd2558da5", + "Date" : "Wed, 02 Jun 2021 17:21:38 GMT" + }, + "Exception" : null + }, { + "Method" : "PUT", + "Uri" : "https://REDACTED.blob.preprod.core.windows.net/64420e75064420e75a361102414ce4cb291ed4999822/64420e75164420e75a3643999d1fa0d3cf6dd4399805", + "Headers" : { + "x-ms-version" : "2020-08-04", + "User-Agent" : "azsdk-java-azure-storage-blob/12.12.0-beta.2 (11.0.7; Windows 10; 10.0)", + "x-ms-client-request-id" : "5148c49d-a919-41ea-bac5-a1751190cfcd", + "Content-Type" : "application/octet-stream" + }, + "Response" : { + "Transfer-Encoding" : "chunked", + "x-ms-version" : "2020-08-04", + "Server" : "Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0", + "x-ms-content-crc64" : "AAAAAAAAAAA=", + "Last-Modified" : "Wed, 02 Jun 2021 17:21:39 GMT", + "retry-after" : "0", + "StatusCode" : "201", + "x-ms-request-server-encrypted" : "true", + "Date" : "Wed, 02 Jun 2021 17:21:38 GMT", + "Content-MD5" : "1B2M2Y8AsgTpgAmY7PhCfg==", + "eTag" : "0x8D925EAE235A6A4", + "x-ms-request-id" : "21227632-f01e-000d-68d3-572003000000", + "x-ms-client-request-id" : "5148c49d-a919-41ea-bac5-a1751190cfcd" + }, + "Exception" : null + }, { + "Method" : "PUT", + "Uri" : "https://REDACTED.blob.preprod.core.windows.net/64420e75064420e75a361102414ce4cb291ed4999822/64420e75164420e75a3643999d1fa0d3cf6dd4399805", + "Headers" : { + "x-ms-version" : "2020-08-04", + "User-Agent" : "azsdk-java-azure-storage-blob/12.12.0-beta.2 (11.0.7; Windows 10; 10.0)", + "x-ms-client-request-id" : "e524adfb-77b9-4e64-a979-c292bd9be1bc", + "Content-Type" : "application/octet-stream" + }, + "Response" : { + "Transfer-Encoding" : "chunked", + "x-ms-version" : "2020-08-04", + "Server" : "Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0", + "x-ms-content-crc64" : "f7IDcRFZujI=", + "Last-Modified" : "Wed, 02 Jun 2021 17:21:39 GMT", + "retry-after" : "0", + "StatusCode" : "201", + "x-ms-request-server-encrypted" : "true", + "Date" : "Wed, 02 Jun 2021 17:21:39 GMT", + "Content-MD5" : "z1EKaBGYeFFPXcMBK90K+w==", + "eTag" : "0x8D925EAE25A4C5C", + "x-ms-request-id" : "21227636-f01e-000d-6cd3-572003000000", + "x-ms-client-request-id" : "e524adfb-77b9-4e64-a979-c292bd9be1bc" + }, + "Exception" : null + }, { + "Method" : "POST", + "Uri" : "https://REDACTED.blob.preprod.core.windows.net/64420e75064420e75a361102414ce4cb291ed4999822/64420e75164420e75a3643999d1fa0d3cf6dd4399805?comp=query", + "Headers" : { + "x-ms-version" : "2020-08-04", + "User-Agent" : "azsdk-java-azure-storage-blob/12.12.0-beta.2 (11.0.7; Windows 10; 10.0)", + "x-ms-client-request-id" : "5f0d84c5-e629-4fd5-bcdf-c504b26c30dd", + "Content-Type" : "application/xml" + }, + "Response" : { + "Transfer-Encoding" : "chunked", + "x-ms-lease-status" : "unlocked", + "x-ms-version" : "2020-08-04", + "Server" : "Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0", + "x-ms-lease-state" : "available", + "Last-Modified" : "Wed, 02 Jun 2021 17:21:39 GMT", + "retry-after" : "0", + "StatusCode" : "200", + "Date" : "Wed, 02 Jun 2021 17:21:39 GMT", + "x-ms-blob-type" : "BlockBlob", + "Accept-Ranges" : "bytes", + "x-ms-server-encrypted" : "true", + "x-ms-creation-time" : "Wed, 02 Jun 2021 17:21:39 GMT", + "eTag" : "0x8D925EAE25A4C5C", + "x-ms-request-id" : "21227648-f01e-000d-7cd3-572003000000", + "Body" : "T2JqAQIWYXZyby5zY2hlbWHOHlsKICB7CiAgICAidHlwZSI6ICJyZWNvcmQiLAogICAgIm5hbWUiOiAiY29tLm1pY3Jvc29mdC5henVyZS5zdG9yYWdlLnF1ZXJ5QmxvYkNvbnRlbnRzLnJlc3VsdERhdGEiLAogICAgImRvYyI6ICJIb2xkcyByZXN1bHQgZGF0YSBpbiB0aGUgZm9ybWF0IHNwZWNpZmllZCBmb3IgdGhpcyBxdWVyeSAoQ1NWLCBKU09OLCBldGMuKS4iLAogICAgImZpZWxkcyI6IFsKICAgICAgewogICAgICAgICJuYW1lIjogImRhdGEiLAogICAgICAgICJ0eXBlIjogImJ5dGVzIgogICAgICB9CiAgICBdCiAgfSwKICB7CiAgICAidHlwZSI6ICJyZWNvcmQiLAogICAgIm5hbWUiOiAiY29tLm1pY3Jvc29mdC5henVyZS5zdG9yYWdlLnF1ZXJ5QmxvYkNvbnRlbnRzLmVycm9yIiwKICAgICJkb2MiOiAiQW4gZXJyb3IgdGhhdCBvY2N1cnJlZCB3aGlsZSBwcm9jZXNzaW5nIHRoZSBxdWVyeS4iLAogICAgImZpZWxkcyI6IFsKICAgICAgewogICAgICAgICJuYW1lIjogImZhdGFsIiwKICAgICAgICAidHlwZSI6ICJib29sZWFuIiwKICAgICAgICAiZG9jIjogIklmIHRydWUsIHRoaXMgZXJyb3IgcHJldmVudHMgZnVydGhlciBxdWVyeSBwcm9jZXNzaW5nLiAgTW9yZSByZXN1bHQgZGF0YSBtYXkgYmUgcmV0dXJuZWQsIGJ1dCB0aGVyZSBpcyBubyBndWFyYW50ZWUgdGhhdCBhbGwgb2YgdGhlIG9yaWdpbmFsIGRhdGEgd2lsbCBiZSBwcm9jZXNzZWQuICBJZiBmYWxzZSwgdGhpcyBlcnJvciBkb2VzIG5vdCBwcmV2ZW50IGZ1cnRoZXIgcXVlcnkgcHJvY2Vzc2luZy4iCiAgICAgIH0sCiAgICAgIHsKICAgICAgICAibmFtZSI6ICJuYW1lIiwKICAgICAgICAidHlwZSI6ICJzdHJpbmciLAogICAgICAgICJkb2MiOiAiVGhlIG5hbWUgb2YgdGhlIGVycm9yIgogICAgICB9LAogICAgICB7CiAgICAgICAgIm5hbWUiOiAiZGVzY3JpcHRpb24iLAogICAgICAgICJ0eXBlIjogInN0cmluZyIsCiAgICAgICAgImRvYyI6ICJBIGRlc2NyaXB0aW9uIG9mIHRoZSBlcnJvciIKICAgICAgfSwKICAgICAgewogICAgICAgICJuYW1lIjogInBvc2l0aW9uIiwKICAgICAgICAidHlwZSI6ICJsb25nIiwKICAgICAgICAiZG9jIjogIlRoZSByZWNvcmQgb2Zmc2V0IGluIHRoZSBibG9iIGF0IHdoaWNoIHRoZSBlcnJvciBvY2N1cnJlZCIKICAgICAgfQogICAgXQogIH0sCiAgewogICAgInR5cGUiOiAicmVjb3JkIiwKICAgICJuYW1lIjogImNvbS5taWNyb3NvZnQuYXp1cmUuc3RvcmFnZS5xdWVyeUJsb2JDb250ZW50cy5wcm9ncmVzcyIsCiAgICAiZG9jIjogIkluZm9ybWF0aW9uIGFib3V0IHRoZSBwcm9ncmVzcyBvZiB0aGUgcXVlcnkiLAogICAgImZpZWxkcyI6IFsKICAgICAgewogICAgICAgICJuYW1lIjogImJ5dGVzU2Nhbm5lZCIsCiAgICAgICAgInR5cGUiOiAibG9uZyIsCiAgICAgICAgImRvYyI6ICJUaGUgbnVtYmVyIG9mIGJ5dGVzIHRoYXQgaGF2ZSBiZWVuIHNjYW5uZWQiCiAgICAgIH0sCiAgICAgIHsKICAgICAgICAibmFtZSI6ICJ0b3RhbEJ5dGVzIiwKICAgICAgICAidHlwZSI6ICJsb25nIiwKICAgICAgICAiZG9jIjogIlRoZSB0b3RhbCBudW1iZXIgb2YgYnl0ZXMgdG8gYmUgc2Nhbm5lZCBpbiB0aGlzIHF1ZXJ5IgogICAgICB9CiAgICBdCiAgfSwKICB7CiAgICAidHlwZSI6ICJyZWNvcmQiLAogICAgIm5hbWUiOiAiY29tLm1pY3Jvc29mdC5henVyZS5zdG9yYWdlLnF1ZXJ5QmxvYkNvbnRlbnRzLmVuZCIsCiAgICAiZG9jIjogIlNlbnQgYXMgdGhlIGZpbmFsIG1lc3NhZ2Ugb2YgdGhlIHJlc3BvbnNlLCBpbmRpY2F0aW5nIHRoYXQgYWxsIHJlc3VsdHMgaGF2ZSBiZWVuIHNlbnQuIiwKICAgICJmaWVsZHMiOiBbCiAgICAgIHsKICAgICAgICAibmFtZSI6ICJ0b3RhbEJ5dGVzIiwKICAgICAgICAidHlwZSI6ICJsb25nIiwKICAgICAgICAiZG9jIjogIlRoZSB0b3RhbCBudW1iZXIgb2YgYnl0ZXMgc2Nhbm5lZCBpbiB0aGlzIHF1ZXJ5IgogICAgICB9CiAgICBdCiAgfQpdCgB1tyw2OJWZRJNiBWZH4hs1AjwAODAsbWRpZmp0NTUuZWEzLG1kaWZqdDU1LmVhMwp1tyw2OJWZRJNiBWZH4hs1Ag4Ewu4EruMJdbcsNjiVmUSTYgVmR+IbNQIIBq7jCXW3LDY4lZlEk2IFZkfiGzU=", + "x-ms-client-request-id" : "5f0d84c5-e629-4fd5-bcdf-c504b26c30dd", + "Content-Type" : "avro/binary" + }, + "Exception" : null + }, { + "Method" : "POST", + "Uri" : "https://REDACTED.blob.preprod.core.windows.net/64420e75064420e75a361102414ce4cb291ed4999822/64420e75164420e75a3643999d1fa0d3cf6dd4399805?comp=query", + "Headers" : { + "x-ms-version" : "2020-08-04", + "User-Agent" : "azsdk-java-azure-storage-blob/12.12.0-beta.2 (11.0.7; Windows 10; 10.0)", + "x-ms-client-request-id" : "f2a3b769-163e-4519-beb4-938c92e65de9", + "Content-Type" : "application/xml" + }, + "Response" : { + "Transfer-Encoding" : "chunked", + "x-ms-lease-status" : "unlocked", + "x-ms-version" : "2020-08-04", + "Server" : "Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0", + "x-ms-lease-state" : "available", + "Last-Modified" : "Wed, 02 Jun 2021 17:21:39 GMT", + "retry-after" : "0", + "StatusCode" : "200", + "Date" : "Wed, 02 Jun 2021 17:21:40 GMT", + "x-ms-blob-type" : "BlockBlob", + "Accept-Ranges" : "bytes", + "x-ms-server-encrypted" : "true", + "x-ms-creation-time" : "Wed, 02 Jun 2021 17:21:39 GMT", + "eTag" : "0x8D925EAE25A4C5C", + "x-ms-request-id" : "21227681-f01e-000d-26d3-572003000000", + "Body" : "T2JqAQIWYXZyby5zY2hlbWHOHlsKICB7CiAgICAidHlwZSI6ICJyZWNvcmQiLAogICAgIm5hbWUiOiAiY29tLm1pY3Jvc29mdC5henVyZS5zdG9yYWdlLnF1ZXJ5QmxvYkNvbnRlbnRzLnJlc3VsdERhdGEiLAogICAgImRvYyI6ICJIb2xkcyByZXN1bHQgZGF0YSBpbiB0aGUgZm9ybWF0IHNwZWNpZmllZCBmb3IgdGhpcyBxdWVyeSAoQ1NWLCBKU09OLCBldGMuKS4iLAogICAgImZpZWxkcyI6IFsKICAgICAgewogICAgICAgICJuYW1lIjogImRhdGEiLAogICAgICAgICJ0eXBlIjogImJ5dGVzIgogICAgICB9CiAgICBdCiAgfSwKICB7CiAgICAidHlwZSI6ICJyZWNvcmQiLAogICAgIm5hbWUiOiAiY29tLm1pY3Jvc29mdC5henVyZS5zdG9yYWdlLnF1ZXJ5QmxvYkNvbnRlbnRzLmVycm9yIiwKICAgICJkb2MiOiAiQW4gZXJyb3IgdGhhdCBvY2N1cnJlZCB3aGlsZSBwcm9jZXNzaW5nIHRoZSBxdWVyeS4iLAogICAgImZpZWxkcyI6IFsKICAgICAgewogICAgICAgICJuYW1lIjogImZhdGFsIiwKICAgICAgICAidHlwZSI6ICJib29sZWFuIiwKICAgICAgICAiZG9jIjogIklmIHRydWUsIHRoaXMgZXJyb3IgcHJldmVudHMgZnVydGhlciBxdWVyeSBwcm9jZXNzaW5nLiAgTW9yZSByZXN1bHQgZGF0YSBtYXkgYmUgcmV0dXJuZWQsIGJ1dCB0aGVyZSBpcyBubyBndWFyYW50ZWUgdGhhdCBhbGwgb2YgdGhlIG9yaWdpbmFsIGRhdGEgd2lsbCBiZSBwcm9jZXNzZWQuICBJZiBmYWxzZSwgdGhpcyBlcnJvciBkb2VzIG5vdCBwcmV2ZW50IGZ1cnRoZXIgcXVlcnkgcHJvY2Vzc2luZy4iCiAgICAgIH0sCiAgICAgIHsKICAgICAgICAibmFtZSI6ICJuYW1lIiwKICAgICAgICAidHlwZSI6ICJzdHJpbmciLAogICAgICAgICJkb2MiOiAiVGhlIG5hbWUgb2YgdGhlIGVycm9yIgogICAgICB9LAogICAgICB7CiAgICAgICAgIm5hbWUiOiAiZGVzY3JpcHRpb24iLAogICAgICAgICJ0eXBlIjogInN0cmluZyIsCiAgICAgICAgImRvYyI6ICJBIGRlc2NyaXB0aW9uIG9mIHRoZSBlcnJvciIKICAgICAgfSwKICAgICAgewogICAgICAgICJuYW1lIjogInBvc2l0aW9uIiwKICAgICAgICAidHlwZSI6ICJsb25nIiwKICAgICAgICAiZG9jIjogIlRoZSByZWNvcmQgb2Zmc2V0IGluIHRoZSBibG9iIGF0IHdoaWNoIHRoZSBlcnJvciBvY2N1cnJlZCIKICAgICAgfQogICAgXQogIH0sCiAgewogICAgInR5cGUiOiAicmVjb3JkIiwKICAgICJuYW1lIjogImNvbS5taWNyb3NvZnQuYXp1cmUuc3RvcmFnZS5xdWVyeUJsb2JDb250ZW50cy5wcm9ncmVzcyIsCiAgICAiZG9jIjogIkluZm9ybWF0aW9uIGFib3V0IHRoZSBwcm9ncmVzcyBvZiB0aGUgcXVlcnkiLAogICAgImZpZWxkcyI6IFsKICAgICAgewogICAgICAgICJuYW1lIjogImJ5dGVzU2Nhbm5lZCIsCiAgICAgICAgInR5cGUiOiAibG9uZyIsCiAgICAgICAgImRvYyI6ICJUaGUgbnVtYmVyIG9mIGJ5dGVzIHRoYXQgaGF2ZSBiZWVuIHNjYW5uZWQiCiAgICAgIH0sCiAgICAgIHsKICAgICAgICAibmFtZSI6ICJ0b3RhbEJ5dGVzIiwKICAgICAgICAidHlwZSI6ICJsb25nIiwKICAgICAgICAiZG9jIjogIlRoZSB0b3RhbCBudW1iZXIgb2YgYnl0ZXMgdG8gYmUgc2Nhbm5lZCBpbiB0aGlzIHF1ZXJ5IgogICAgICB9CiAgICBdCiAgfSwKICB7CiAgICAidHlwZSI6ICJyZWNvcmQiLAogICAgIm5hbWUiOiAiY29tLm1pY3Jvc29mdC5henVyZS5zdG9yYWdlLnF1ZXJ5QmxvYkNvbnRlbnRzLmVuZCIsCiAgICAiZG9jIjogIlNlbnQgYXMgdGhlIGZpbmFsIG1lc3NhZ2Ugb2YgdGhlIHJlc3BvbnNlLCBpbmRpY2F0aW5nIHRoYXQgYWxsIHJlc3VsdHMgaGF2ZSBiZWVuIHNlbnQuIiwKICAgICJmaWVsZHMiOiBbCiAgICAgIHsKICAgICAgICAibmFtZSI6ICJ0b3RhbEJ5dGVzIiwKICAgICAgICAidHlwZSI6ICJsb25nIiwKICAgICAgICAiZG9jIjogIlRoZSB0b3RhbCBudW1iZXIgb2YgYnl0ZXMgc2Nhbm5lZCBpbiB0aGlzIHF1ZXJ5IgogICAgICB9CiAgICBdCiAgfQpdCgAurSZmO/tGT5JVIrK8ppBbAjwAODAsbWRpZmp0NTUuZWEzLG1kaWZqdDU1LmVhMwourSZmO/tGT5JVIrK8ppBbAg4Ewu4EruMJLq0mZjv7Rk+SVSKyvKaQWwIIBq7jCS6tJmY7+0ZPklUisrymkFs=", + "x-ms-client-request-id" : "f2a3b769-163e-4519-beb4-938c92e65de9", + "Content-Type" : "avro/binary" + }, + "Exception" : null + } ], + "variables" : [ "64420e75064420e75a361102414ce4cb291ed4999822", "64420e75164420e75a3643999d1fa0d3cf6dd4399805" ] +} \ No newline at end of file diff --git a/sdk/storage/azure-storage-blob/src/test/resources/session-records/BlobBaseAPITestQueryParquetOutputIA.json b/sdk/storage/azure-storage-blob/src/test/resources/session-records/BlobBaseAPITestQueryParquetOutputIA.json new file mode 100644 index 0000000000000..589250f1a4a48 --- /dev/null +++ b/sdk/storage/azure-storage-blob/src/test/resources/session-records/BlobBaseAPITestQueryParquetOutputIA.json @@ -0,0 +1,50 @@ +{ + "networkCallRecords" : [ { + "Method" : "PUT", + "Uri" : "https://REDACTED.blob.preprod.core.windows.net/4708d6d404708d6d4218150164fd49970ca454f7198b?restype=container", + "Headers" : { + "x-ms-version" : "2020-08-04", + "User-Agent" : "azsdk-java-azure-storage-blob/12.12.0-beta.2 (11.0.7; Windows 10; 10.0)", + "x-ms-client-request-id" : "0dea9a47-11b5-47f4-ada6-5b4bd2f388dc" + }, + "Response" : { + "Transfer-Encoding" : "chunked", + "x-ms-version" : "2020-08-04", + "Server" : "Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0", + "eTag" : "0x8D925EAF70EE1C8", + "Last-Modified" : "Wed, 02 Jun 2021 17:22:14 GMT", + "retry-after" : "0", + "StatusCode" : "201", + "x-ms-request-id" : "cd0a813b-101e-0007-79d3-57398a000000", + "x-ms-client-request-id" : "0dea9a47-11b5-47f4-ada6-5b4bd2f388dc", + "Date" : "Wed, 02 Jun 2021 17:22:14 GMT" + }, + "Exception" : null + }, { + "Method" : "PUT", + "Uri" : "https://REDACTED.blob.preprod.core.windows.net/4708d6d404708d6d4218150164fd49970ca454f7198b/4708d6d414708d6d421811428d4b9cc7e47884b4ba99", + "Headers" : { + "x-ms-version" : "2020-08-04", + "User-Agent" : "azsdk-java-azure-storage-blob/12.12.0-beta.2 (11.0.7; Windows 10; 10.0)", + "x-ms-client-request-id" : "4cd98491-bdf3-436c-b760-fe94e8f9e962", + "Content-Type" : "application/octet-stream" + }, + "Response" : { + "Transfer-Encoding" : "chunked", + "x-ms-version" : "2020-08-04", + "Server" : "Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0", + "x-ms-content-crc64" : "AAAAAAAAAAA=", + "Last-Modified" : "Wed, 02 Jun 2021 17:22:15 GMT", + "retry-after" : "0", + "StatusCode" : "201", + "x-ms-request-server-encrypted" : "true", + "Date" : "Wed, 02 Jun 2021 17:22:14 GMT", + "Content-MD5" : "1B2M2Y8AsgTpgAmY7PhCfg==", + "eTag" : "0x8D925EAF74618D1", + "x-ms-request-id" : "cd0a8150-101e-0007-06d3-57398a000000", + "x-ms-client-request-id" : "4cd98491-bdf3-436c-b760-fe94e8f9e962" + }, + "Exception" : null + } ], + "variables" : [ "4708d6d404708d6d4218150164fd49970ca454f7198b", "4708d6d414708d6d421811428d4b9cc7e47884b4ba99" ] +} \ No newline at end of file diff --git a/sdk/storage/azure-storage-file-datalake/src/test/resources/session-records/FileAPITestQueryInputParquet.json b/sdk/storage/azure-storage-file-datalake/src/test/resources/session-records/FileAPITestQueryInputParquet.json new file mode 100644 index 0000000000000..c4ba2ca7c2295 --- /dev/null +++ b/sdk/storage/azure-storage-file-datalake/src/test/resources/session-records/FileAPITestQueryInputParquet.json @@ -0,0 +1,172 @@ +{ + "networkCallRecords" : [ { + "Method" : "PUT", + "Uri" : "https://REDACTED.blob.preprod.core.windows.net/0552dd5300552dd53f1815453da38e28aaeb04c77914?restype=container", + "Headers" : { + "x-ms-version" : "2020-08-04", + "User-Agent" : "azsdk-java-azure-storage-blob/12.12.0-beta.2 azsdk-java-azure-storage-file-datalake/12.6.0-beta.2 (11.0.7; Windows 10; 10.0)", + "x-ms-client-request-id" : "6a5679c1-2c62-4f4f-806e-4851e55e4162" + }, + "Response" : { + "Transfer-Encoding" : "chunked", + "x-ms-version" : "2020-08-04", + "Server" : "Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0", + "eTag" : "0x8D925EAAF3AC0F7", + "Last-Modified" : "Wed, 02 Jun 2021 17:20:14 GMT", + "retry-after" : "0", + "StatusCode" : "201", + "x-ms-request-id" : "411db120-601e-0003-35d3-57cc08000000", + "x-ms-client-request-id" : "6a5679c1-2c62-4f4f-806e-4851e55e4162", + "Date" : "Wed, 02 Jun 2021 17:20:13 GMT" + }, + "Exception" : null + }, { + "Method" : "PUT", + "Uri" : "https://REDACTED.dfs.preprod.core.windows.net/0552dd5300552dd53f1815453da38e28aaeb04c77914/0552dd5310552dd53f1875385a60d53559cbf4589a0c?resource=file", + "Headers" : { + "x-ms-version" : "2020-10-02", + "User-Agent" : "azsdk-java-azure-storage-file-datalake/12.6.0-beta.2 (11.0.7; Windows 10; 10.0)", + "x-ms-client-request-id" : "bc94d4e4-057b-4cd0-8bef-dd9df04c2521" + }, + "Response" : { + "content-length" : "0", + "x-ms-version" : "2020-10-02", + "Server" : "Windows-Azure-HDFS/1.0 Microsoft-HTTPAPI/2.0", + "eTag" : "0x8D925EAAFC0E323", + "Last-Modified" : "Wed, 02 Jun 2021 17:20:15 GMT", + "retry-after" : "0", + "StatusCode" : "201", + "x-ms-request-server-encrypted" : "true", + "x-ms-request-id" : "3a459b5a-e01f-0012-77d3-57fb13000000", + "x-ms-client-request-id" : "bc94d4e4-057b-4cd0-8bef-dd9df04c2521", + "Date" : "Wed, 02 Jun 2021 17:20:14 GMT" + }, + "Exception" : null + }, { + "Method" : "PUT", + "Uri" : "https://REDACTED.dfs.preprod.core.windows.net/0552dd5300552dd53f1815453da38e28aaeb04c77914/0552dd5310552dd53f1875385a60d53559cbf4589a0c?resource=file", + "Headers" : { + "x-ms-version" : "2020-10-02", + "User-Agent" : "azsdk-java-azure-storage-file-datalake/12.6.0-beta.2 (11.0.7; Windows 10; 10.0)", + "x-ms-client-request-id" : "0324fd53-2a79-405b-bd86-c778fc7e70e5" + }, + "Response" : { + "content-length" : "0", + "x-ms-version" : "2020-10-02", + "Server" : "Windows-Azure-HDFS/1.0 Microsoft-HTTPAPI/2.0", + "eTag" : "0x8D925EAAFE4C55C", + "Last-Modified" : "Wed, 02 Jun 2021 17:20:15 GMT", + "retry-after" : "0", + "StatusCode" : "201", + "x-ms-request-server-encrypted" : "true", + "x-ms-request-id" : "3a459b5b-e01f-0012-78d3-57fb13000000", + "x-ms-client-request-id" : "0324fd53-2a79-405b-bd86-c778fc7e70e5", + "Date" : "Wed, 02 Jun 2021 17:20:14 GMT" + }, + "Exception" : null + }, { + "Method" : "PATCH", + "Uri" : "https://REDACTED.dfs.preprod.core.windows.net/0552dd5300552dd53f1815453da38e28aaeb04c77914/0552dd5310552dd53f1875385a60d53559cbf4589a0c?action=append&position=0", + "Headers" : { + "x-ms-version" : "2020-10-02", + "User-Agent" : "azsdk-java-azure-storage-file-datalake/12.6.0-beta.2 (11.0.7; Windows 10; 10.0)", + "x-ms-client-request-id" : "9e4bafc1-3cfc-4a2a-9563-e1ad3e6015fd", + "Content-Type" : "application/octet-stream" + }, + "Response" : { + "content-length" : "0", + "x-ms-version" : "2020-10-02", + "Server" : "Windows-Azure-HDFS/1.0 Microsoft-HTTPAPI/2.0", + "retry-after" : "0", + "StatusCode" : "202", + "x-ms-request-server-encrypted" : "true", + "x-ms-request-id" : "3a459b5c-e01f-0012-79d3-57fb13000000", + "x-ms-client-request-id" : "9e4bafc1-3cfc-4a2a-9563-e1ad3e6015fd", + "Date" : "Wed, 02 Jun 2021 17:20:15 GMT" + }, + "Exception" : null + }, { + "Method" : "PATCH", + "Uri" : "https://REDACTED.dfs.preprod.core.windows.net/0552dd5300552dd53f1815453da38e28aaeb04c77914/0552dd5310552dd53f1875385a60d53559cbf4589a0c?action=flush&position=80087&retainUncommittedData=false&close=false", + "Headers" : { + "x-ms-version" : "2020-10-02", + "User-Agent" : "azsdk-java-azure-storage-file-datalake/12.6.0-beta.2 (11.0.7; Windows 10; 10.0)", + "x-ms-client-request-id" : "cc313fc1-f998-43c8-af4d-4243bf0efab5" + }, + "Response" : { + "content-length" : "0", + "x-ms-version" : "2020-10-02", + "Server" : "Windows-Azure-HDFS/1.0 Microsoft-HTTPAPI/2.0", + "eTag" : "0x8D925EAB023AE92", + "Last-Modified" : "Wed, 02 Jun 2021 17:20:15 GMT", + "retry-after" : "0", + "StatusCode" : "200", + "x-ms-request-server-encrypted" : "false", + "x-ms-request-id" : "3a459b5d-e01f-0012-7ad3-57fb13000000", + "x-ms-client-request-id" : "cc313fc1-f998-43c8-af4d-4243bf0efab5", + "Date" : "Wed, 02 Jun 2021 17:20:15 GMT" + }, + "Exception" : null + }, { + "Method" : "POST", + "Uri" : "https://REDACTED.blob.preprod.core.windows.net/0552dd5300552dd53f1815453da38e28aaeb04c77914/0552dd5310552dd53f1875385a60d53559cbf4589a0c?comp=query", + "Headers" : { + "x-ms-version" : "2020-08-04", + "User-Agent" : "azsdk-java-azure-storage-blob/12.12.0-beta.2 azsdk-java-azure-storage-file-datalake/12.6.0-beta.2 (11.0.7; Windows 10; 10.0)", + "x-ms-client-request-id" : "86bbabe8-592a-4ba8-a947-da8e2d28cb44", + "Content-Type" : "application/xml" + }, + "Response" : { + "Transfer-Encoding" : "chunked", + "x-ms-lease-status" : "unlocked", + "x-ms-version" : "2020-08-04", + "Server" : "Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0", + "x-ms-lease-state" : "available", + "Last-Modified" : "Wed, 02 Jun 2021 17:20:15 GMT", + "retry-after" : "0", + "StatusCode" : "200", + "Date" : "Wed, 02 Jun 2021 17:20:15 GMT", + "x-ms-blob-type" : "BlockBlob", + "Accept-Ranges" : "bytes", + "x-ms-server-encrypted" : "true", + "x-ms-creation-time" : "Wed, 02 Jun 2021 17:20:15 GMT", + "eTag" : "0x8D925EAB023AE92", + "x-ms-request-id" : "411db193-601e-0003-04d3-57cc08000000", + "Body" : "T2JqAQIWYXZyby5zY2hlbWHOHlsKICB7CiAgICAidHlwZSI6ICJyZWNvcmQiLAogICAgIm5hbWUiOiAiY29tLm1pY3Jvc29mdC5henVyZS5zdG9yYWdlLnF1ZXJ5QmxvYkNvbnRlbnRzLnJlc3VsdERhdGEiLAogICAgImRvYyI6ICJIb2xkcyByZXN1bHQgZGF0YSBpbiB0aGUgZm9ybWF0IHNwZWNpZmllZCBmb3IgdGhpcyBxdWVyeSAoQ1NWLCBKU09OLCBldGMuKS4iLAogICAgImZpZWxkcyI6IFsKICAgICAgewogICAgICAgICJuYW1lIjogImRhdGEiLAogICAgICAgICJ0eXBlIjogImJ5dGVzIgogICAgICB9CiAgICBdCiAgfSwKICB7CiAgICAidHlwZSI6ICJyZWNvcmQiLAogICAgIm5hbWUiOiAiY29tLm1pY3Jvc29mdC5henVyZS5zdG9yYWdlLnF1ZXJ5QmxvYkNvbnRlbnRzLmVycm9yIiwKICAgICJkb2MiOiAiQW4gZXJyb3IgdGhhdCBvY2N1cnJlZCB3aGlsZSBwcm9jZXNzaW5nIHRoZSBxdWVyeS4iLAogICAgImZpZWxkcyI6IFsKICAgICAgewogICAgICAgICJuYW1lIjogImZhdGFsIiwKICAgICAgICAidHlwZSI6ICJib29sZWFuIiwKICAgICAgICAiZG9jIjogIklmIHRydWUsIHRoaXMgZXJyb3IgcHJldmVudHMgZnVydGhlciBxdWVyeSBwcm9jZXNzaW5nLiAgTW9yZSByZXN1bHQgZGF0YSBtYXkgYmUgcmV0dXJuZWQsIGJ1dCB0aGVyZSBpcyBubyBndWFyYW50ZWUgdGhhdCBhbGwgb2YgdGhlIG9yaWdpbmFsIGRhdGEgd2lsbCBiZSBwcm9jZXNzZWQuICBJZiBmYWxzZSwgdGhpcyBlcnJvciBkb2VzIG5vdCBwcmV2ZW50IGZ1cnRoZXIgcXVlcnkgcHJvY2Vzc2luZy4iCiAgICAgIH0sCiAgICAgIHsKICAgICAgICAibmFtZSI6ICJuYW1lIiwKICAgICAgICAidHlwZSI6ICJzdHJpbmciLAogICAgICAgICJkb2MiOiAiVGhlIG5hbWUgb2YgdGhlIGVycm9yIgogICAgICB9LAogICAgICB7CiAgICAgICAgIm5hbWUiOiAiZGVzY3JpcHRpb24iLAogICAgICAgICJ0eXBlIjogInN0cmluZyIsCiAgICAgICAgImRvYyI6ICJBIGRlc2NyaXB0aW9uIG9mIHRoZSBlcnJvciIKICAgICAgfSwKICAgICAgewogICAgICAgICJuYW1lIjogInBvc2l0aW9uIiwKICAgICAgICAidHlwZSI6ICJsb25nIiwKICAgICAgICAiZG9jIjogIlRoZSByZWNvcmQgb2Zmc2V0IGluIHRoZSBibG9iIGF0IHdoaWNoIHRoZSBlcnJvciBvY2N1cnJlZCIKICAgICAgfQogICAgXQogIH0sCiAgewogICAgInR5cGUiOiAicmVjb3JkIiwKICAgICJuYW1lIjogImNvbS5taWNyb3NvZnQuYXp1cmUuc3RvcmFnZS5xdWVyeUJsb2JDb250ZW50cy5wcm9ncmVzcyIsCiAgICAiZG9jIjogIkluZm9ybWF0aW9uIGFib3V0IHRoZSBwcm9ncmVzcyBvZiB0aGUgcXVlcnkiLAogICAgImZpZWxkcyI6IFsKICAgICAgewogICAgICAgICJuYW1lIjogImJ5dGVzU2Nhbm5lZCIsCiAgICAgICAgInR5cGUiOiAibG9uZyIsCiAgICAgICAgImRvYyI6ICJUaGUgbnVtYmVyIG9mIGJ5dGVzIHRoYXQgaGF2ZSBiZWVuIHNjYW5uZWQiCiAgICAgIH0sCiAgICAgIHsKICAgICAgICAibmFtZSI6ICJ0b3RhbEJ5dGVzIiwKICAgICAgICAidHlwZSI6ICJsb25nIiwKICAgICAgICAiZG9jIjogIlRoZSB0b3RhbCBudW1iZXIgb2YgYnl0ZXMgdG8gYmUgc2Nhbm5lZCBpbiB0aGlzIHF1ZXJ5IgogICAgICB9CiAgICBdCiAgfSwKICB7CiAgICAidHlwZSI6ICJyZWNvcmQiLAogICAgIm5hbWUiOiAiY29tLm1pY3Jvc29mdC5henVyZS5zdG9yYWdlLnF1ZXJ5QmxvYkNvbnRlbnRzLmVuZCIsCiAgICAiZG9jIjogIlNlbnQgYXMgdGhlIGZpbmFsIG1lc3NhZ2Ugb2YgdGhlIHJlc3BvbnNlLCBpbmRpY2F0aW5nIHRoYXQgYWxsIHJlc3VsdHMgaGF2ZSBiZWVuIHNlbnQuIiwKICAgICJmaWVsZHMiOiBbCiAgICAgIHsKICAgICAgICAibmFtZSI6ICJ0b3RhbEJ5dGVzIiwKICAgICAgICAidHlwZSI6ICJsb25nIiwKICAgICAgICAiZG9jIjogIlRoZSB0b3RhbCBudW1iZXIgb2YgYnl0ZXMgc2Nhbm5lZCBpbiB0aGlzIHF1ZXJ5IgogICAgICB9CiAgICBdCiAgfQpdCgCNBJzyQY7ATI6CP3q/u+xnAjwAODAsbWRpZmp0NTUuZWEzLG1kaWZqdDU1LmVhMwqNBJzyQY7ATI6CP3q/u+xnAg4Ewu4EruMJjQSc8kGOwEyOgj96v7vsZwIIBq7jCY0EnPJBjsBMjoI/er+77Gc=", + "x-ms-client-request-id" : "86bbabe8-592a-4ba8-a947-da8e2d28cb44", + "Content-Type" : "avro/binary" + }, + "Exception" : null + }, { + "Method" : "POST", + "Uri" : "https://REDACTED.blob.preprod.core.windows.net/0552dd5300552dd53f1815453da38e28aaeb04c77914/0552dd5310552dd53f1875385a60d53559cbf4589a0c?comp=query", + "Headers" : { + "x-ms-version" : "2020-08-04", + "User-Agent" : "azsdk-java-azure-storage-blob/12.12.0-beta.2 azsdk-java-azure-storage-file-datalake/12.6.0-beta.2 (11.0.7; Windows 10; 10.0)", + "x-ms-client-request-id" : "5cc1bb19-1442-4ba9-8b6b-ef48d030a25e", + "Content-Type" : "application/xml" + }, + "Response" : { + "Transfer-Encoding" : "chunked", + "x-ms-lease-status" : "unlocked", + "x-ms-version" : "2020-08-04", + "Server" : "Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0", + "x-ms-lease-state" : "available", + "Last-Modified" : "Wed, 02 Jun 2021 17:20:15 GMT", + "retry-after" : "0", + "StatusCode" : "200", + "Date" : "Wed, 02 Jun 2021 17:20:16 GMT", + "x-ms-blob-type" : "BlockBlob", + "Accept-Ranges" : "bytes", + "x-ms-server-encrypted" : "true", + "x-ms-creation-time" : "Wed, 02 Jun 2021 17:20:15 GMT", + "eTag" : "0x8D925EAB023AE92", + "x-ms-request-id" : "411db1ca-601e-0003-2ed3-57cc08000000", + "Body" : "T2JqAQIWYXZyby5zY2hlbWHOHlsKICB7CiAgICAidHlwZSI6ICJyZWNvcmQiLAogICAgIm5hbWUiOiAiY29tLm1pY3Jvc29mdC5henVyZS5zdG9yYWdlLnF1ZXJ5QmxvYkNvbnRlbnRzLnJlc3VsdERhdGEiLAogICAgImRvYyI6ICJIb2xkcyByZXN1bHQgZGF0YSBpbiB0aGUgZm9ybWF0IHNwZWNpZmllZCBmb3IgdGhpcyBxdWVyeSAoQ1NWLCBKU09OLCBldGMuKS4iLAogICAgImZpZWxkcyI6IFsKICAgICAgewogICAgICAgICJuYW1lIjogImRhdGEiLAogICAgICAgICJ0eXBlIjogImJ5dGVzIgogICAgICB9CiAgICBdCiAgfSwKICB7CiAgICAidHlwZSI6ICJyZWNvcmQiLAogICAgIm5hbWUiOiAiY29tLm1pY3Jvc29mdC5henVyZS5zdG9yYWdlLnF1ZXJ5QmxvYkNvbnRlbnRzLmVycm9yIiwKICAgICJkb2MiOiAiQW4gZXJyb3IgdGhhdCBvY2N1cnJlZCB3aGlsZSBwcm9jZXNzaW5nIHRoZSBxdWVyeS4iLAogICAgImZpZWxkcyI6IFsKICAgICAgewogICAgICAgICJuYW1lIjogImZhdGFsIiwKICAgICAgICAidHlwZSI6ICJib29sZWFuIiwKICAgICAgICAiZG9jIjogIklmIHRydWUsIHRoaXMgZXJyb3IgcHJldmVudHMgZnVydGhlciBxdWVyeSBwcm9jZXNzaW5nLiAgTW9yZSByZXN1bHQgZGF0YSBtYXkgYmUgcmV0dXJuZWQsIGJ1dCB0aGVyZSBpcyBubyBndWFyYW50ZWUgdGhhdCBhbGwgb2YgdGhlIG9yaWdpbmFsIGRhdGEgd2lsbCBiZSBwcm9jZXNzZWQuICBJZiBmYWxzZSwgdGhpcyBlcnJvciBkb2VzIG5vdCBwcmV2ZW50IGZ1cnRoZXIgcXVlcnkgcHJvY2Vzc2luZy4iCiAgICAgIH0sCiAgICAgIHsKICAgICAgICAibmFtZSI6ICJuYW1lIiwKICAgICAgICAidHlwZSI6ICJzdHJpbmciLAogICAgICAgICJkb2MiOiAiVGhlIG5hbWUgb2YgdGhlIGVycm9yIgogICAgICB9LAogICAgICB7CiAgICAgICAgIm5hbWUiOiAiZGVzY3JpcHRpb24iLAogICAgICAgICJ0eXBlIjogInN0cmluZyIsCiAgICAgICAgImRvYyI6ICJBIGRlc2NyaXB0aW9uIG9mIHRoZSBlcnJvciIKICAgICAgfSwKICAgICAgewogICAgICAgICJuYW1lIjogInBvc2l0aW9uIiwKICAgICAgICAidHlwZSI6ICJsb25nIiwKICAgICAgICAiZG9jIjogIlRoZSByZWNvcmQgb2Zmc2V0IGluIHRoZSBibG9iIGF0IHdoaWNoIHRoZSBlcnJvciBvY2N1cnJlZCIKICAgICAgfQogICAgXQogIH0sCiAgewogICAgInR5cGUiOiAicmVjb3JkIiwKICAgICJuYW1lIjogImNvbS5taWNyb3NvZnQuYXp1cmUuc3RvcmFnZS5xdWVyeUJsb2JDb250ZW50cy5wcm9ncmVzcyIsCiAgICAiZG9jIjogIkluZm9ybWF0aW9uIGFib3V0IHRoZSBwcm9ncmVzcyBvZiB0aGUgcXVlcnkiLAogICAgImZpZWxkcyI6IFsKICAgICAgewogICAgICAgICJuYW1lIjogImJ5dGVzU2Nhbm5lZCIsCiAgICAgICAgInR5cGUiOiAibG9uZyIsCiAgICAgICAgImRvYyI6ICJUaGUgbnVtYmVyIG9mIGJ5dGVzIHRoYXQgaGF2ZSBiZWVuIHNjYW5uZWQiCiAgICAgIH0sCiAgICAgIHsKICAgICAgICAibmFtZSI6ICJ0b3RhbEJ5dGVzIiwKICAgICAgICAidHlwZSI6ICJsb25nIiwKICAgICAgICAiZG9jIjogIlRoZSB0b3RhbCBudW1iZXIgb2YgYnl0ZXMgdG8gYmUgc2Nhbm5lZCBpbiB0aGlzIHF1ZXJ5IgogICAgICB9CiAgICBdCiAgfSwKICB7CiAgICAidHlwZSI6ICJyZWNvcmQiLAogICAgIm5hbWUiOiAiY29tLm1pY3Jvc29mdC5henVyZS5zdG9yYWdlLnF1ZXJ5QmxvYkNvbnRlbnRzLmVuZCIsCiAgICAiZG9jIjogIlNlbnQgYXMgdGhlIGZpbmFsIG1lc3NhZ2Ugb2YgdGhlIHJlc3BvbnNlLCBpbmRpY2F0aW5nIHRoYXQgYWxsIHJlc3VsdHMgaGF2ZSBiZWVuIHNlbnQuIiwKICAgICJmaWVsZHMiOiBbCiAgICAgIHsKICAgICAgICAibmFtZSI6ICJ0b3RhbEJ5dGVzIiwKICAgICAgICAidHlwZSI6ICJsb25nIiwKICAgICAgICAiZG9jIjogIlRoZSB0b3RhbCBudW1iZXIgb2YgYnl0ZXMgc2Nhbm5lZCBpbiB0aGlzIHF1ZXJ5IgogICAgICB9CiAgICBdCiAgfQpdCgDeM2yr7288T4x7C6FAmRvxAjwAODAsbWRpZmp0NTUuZWEzLG1kaWZqdDU1LmVhMwreM2yr7288T4x7C6FAmRvxAg4Ewu4EruMJ3jNsq+9vPE+MewuhQJkb8QIIBq7jCd4zbKvvbzxPjHsLoUCZG/E=", + "x-ms-client-request-id" : "5cc1bb19-1442-4ba9-8b6b-ef48d030a25e", + "Content-Type" : "avro/binary" + }, + "Exception" : null + } ], + "variables" : [ "0552dd5300552dd53f1815453da38e28aaeb04c77914", "0552dd5310552dd53f1875385a60d53559cbf4589a0c" ] +} \ No newline at end of file diff --git a/sdk/storage/azure-storage-file-datalake/src/test/resources/session-records/FileAPITestQueryParquetOutputIA.json b/sdk/storage/azure-storage-file-datalake/src/test/resources/session-records/FileAPITestQueryParquetOutputIA.json new file mode 100644 index 0000000000000..12e2e568cfd00 --- /dev/null +++ b/sdk/storage/azure-storage-file-datalake/src/test/resources/session-records/FileAPITestQueryParquetOutputIA.json @@ -0,0 +1,47 @@ +{ + "networkCallRecords" : [ { + "Method" : "PUT", + "Uri" : "https://REDACTED.blob.preprod.core.windows.net/cc6a6a5f0cc6a6a5f9822127170a77059f1094174a08?restype=container", + "Headers" : { + "x-ms-version" : "2020-08-04", + "User-Agent" : "azsdk-java-azure-storage-blob/12.12.0-beta.2 azsdk-java-azure-storage-file-datalake/12.6.0-beta.2 (11.0.7; Windows 10; 10.0)", + "x-ms-client-request-id" : "df7766dc-f6f9-4b15-ac19-4a9fd89ad051" + }, + "Response" : { + "Transfer-Encoding" : "chunked", + "x-ms-version" : "2020-08-04", + "Server" : "Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0", + "eTag" : "0x8D925EABEB91657", + "Last-Modified" : "Wed, 02 Jun 2021 17:20:40 GMT", + "retry-after" : "0", + "StatusCode" : "201", + "x-ms-request-id" : "a876e5f3-d01e-0011-11d3-57f814000000", + "x-ms-client-request-id" : "df7766dc-f6f9-4b15-ac19-4a9fd89ad051", + "Date" : "Wed, 02 Jun 2021 17:20:39 GMT" + }, + "Exception" : null + }, { + "Method" : "PUT", + "Uri" : "https://REDACTED.dfs.preprod.core.windows.net/cc6a6a5f0cc6a6a5f9822127170a77059f1094174a08/cc6a6a5f1cc6a6a5f9828975162aad6e755064580b84?resource=file", + "Headers" : { + "x-ms-version" : "2020-10-02", + "User-Agent" : "azsdk-java-azure-storage-file-datalake/12.6.0-beta.2 (11.0.7; Windows 10; 10.0)", + "x-ms-client-request-id" : "906eab91-c8b4-42fa-944a-2e689bd59b2f" + }, + "Response" : { + "content-length" : "0", + "x-ms-version" : "2020-10-02", + "Server" : "Windows-Azure-HDFS/1.0 Microsoft-HTTPAPI/2.0", + "eTag" : "0x8D925EABF1BE8F0", + "Last-Modified" : "Wed, 02 Jun 2021 17:20:40 GMT", + "retry-after" : "0", + "StatusCode" : "201", + "x-ms-request-server-encrypted" : "true", + "x-ms-request-id" : "3a459b71-e01f-0012-01d3-57fb13000000", + "x-ms-client-request-id" : "906eab91-c8b4-42fa-944a-2e689bd59b2f", + "Date" : "Wed, 02 Jun 2021 17:20:40 GMT" + }, + "Exception" : null + } ], + "variables" : [ "cc6a6a5f0cc6a6a5f9822127170a77059f1094174a08", "cc6a6a5f1cc6a6a5f9828975162aad6e755064580b84" ] +} \ No newline at end of file From 30dbdfc87e32aae75bfc0c0cec790f5272e46d14 Mon Sep 17 00:00:00 2001 From: gapra Date: Wed, 2 Jun 2021 12:08:26 -0700 Subject: [PATCH 3/6] fixed build issue --- .../java/com/azure/storage/file/datalake/FileAPITest.groovy | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sdk/storage/azure-storage-file-datalake/src/test/java/com/azure/storage/file/datalake/FileAPITest.groovy b/sdk/storage/azure-storage-file-datalake/src/test/java/com/azure/storage/file/datalake/FileAPITest.groovy index 462525a101814..1c76d390ee2d6 100644 --- a/sdk/storage/azure-storage-file-datalake/src/test/java/com/azure/storage/file/datalake/FileAPITest.groovy +++ b/sdk/storage/azure-storage-file-datalake/src/test/java/com/azure/storage/file/datalake/FileAPITest.groovy @@ -3554,7 +3554,7 @@ class FileAPITest extends APISpec { thrown(IllegalArgumentException) } - @RequiredServiceVersion(clazz = DataLakeServiceVersion.class, min = "V2020_10_02" + @RequiredServiceVersion(clazz = DataLakeServiceVersion.class, min = "V2020_10_02") @Retry(count = 5, delay = 5, condition = { env.testMode == TestMode.LIVE }) def "Query parquet output IA"() { setup: From f7b4f227c002cd75833373a1f715ea4924b94636 Mon Sep 17 00:00:00 2001 From: gapra Date: Fri, 4 Jun 2021 12:50:39 -0700 Subject: [PATCH 4/6] Addressed feedback --- .../storage/blob/implementation/util/BlobQueryReader.java | 2 ++ .../storage/blob/models/BlobQueryParquetSerialization.java | 2 +- .../java/com/azure/storage/file/datalake/Transforms.java | 7 ++----- .../datalake/models/FileQueryParquetSerialization.java | 2 +- 4 files changed, 6 insertions(+), 7 deletions(-) diff --git a/sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/implementation/util/BlobQueryReader.java b/sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/implementation/util/BlobQueryReader.java index b4e4e04c04276..e1212ef99149d 100644 --- a/sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/implementation/util/BlobQueryReader.java +++ b/sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/implementation/util/BlobQueryReader.java @@ -324,6 +324,8 @@ private static JsonTextConfiguration transformJson(BlobQueryJsonSerialization js * @return {@link JsonTextConfiguration} */ private static Object transformParquet(BlobQueryParquetSerialization parquetSerialization) { + /* This method returns an Object since the ParquetConfiguration currently accepts no options. This results in + the generator generating ParquetConfiguration as an Object. */ if (parquetSerialization == null) { return null; } diff --git a/sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/models/BlobQueryParquetSerialization.java b/sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/models/BlobQueryParquetSerialization.java index 2b0220b5f1497..e0bbe3159561e 100644 --- a/sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/models/BlobQueryParquetSerialization.java +++ b/sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/models/BlobQueryParquetSerialization.java @@ -6,4 +6,4 @@ /** * Defines the input parquet serialization for a blob quick query request. */ -public class BlobQueryParquetSerialization implements BlobQuerySerialization { } +public final class BlobQueryParquetSerialization implements BlobQuerySerialization { } diff --git a/sdk/storage/azure-storage-file-datalake/src/main/java/com/azure/storage/file/datalake/Transforms.java b/sdk/storage/azure-storage-file-datalake/src/main/java/com/azure/storage/file/datalake/Transforms.java index 363436aca7813..e549505ec3410 100644 --- a/sdk/storage/azure-storage-file-datalake/src/main/java/com/azure/storage/file/datalake/Transforms.java +++ b/sdk/storage/azure-storage-file-datalake/src/main/java/com/azure/storage/file/datalake/Transforms.java @@ -450,11 +450,8 @@ static BlobQuerySerialization toBlobQuerySerialization(FileQuerySerialization se return new BlobQueryParquetSerialization(); } else { throw new IllegalArgumentException( - String.format("'serialization' must be one of %s, %s, %s, or %s", - FileQueryJsonSerialization.class.getSimpleName(), - FileQueryDelimitedSerialization.class.getSimpleName(), - FileQueryArrowSerialization.class.getSimpleName(), - FileQueryParquetSerialization.class.getSimpleName())); + String.format("'serialization' must be a subtype of %s.", + FileQuerySerialization.class.getSimpleName())); } } diff --git a/sdk/storage/azure-storage-file-datalake/src/main/java/com/azure/storage/file/datalake/models/FileQueryParquetSerialization.java b/sdk/storage/azure-storage-file-datalake/src/main/java/com/azure/storage/file/datalake/models/FileQueryParquetSerialization.java index e6ce7049c21a3..72f960e112754 100644 --- a/sdk/storage/azure-storage-file-datalake/src/main/java/com/azure/storage/file/datalake/models/FileQueryParquetSerialization.java +++ b/sdk/storage/azure-storage-file-datalake/src/main/java/com/azure/storage/file/datalake/models/FileQueryParquetSerialization.java @@ -6,4 +6,4 @@ /** * Defines the input parquet serialization for a file quick query request. */ -public class FileQueryParquetSerialization implements FileQuerySerialization { } +public final class FileQueryParquetSerialization implements FileQuerySerialization { } From 667cc23a6b8bb3bfb3452a23e0034e72ff37167f Mon Sep 17 00:00:00 2001 From: gapra Date: Fri, 4 Jun 2021 12:52:33 -0700 Subject: [PATCH 5/6] Added static class --- .../java/com/azure/storage/file/datalake/Transforms.java | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/sdk/storage/azure-storage-file-datalake/src/main/java/com/azure/storage/file/datalake/Transforms.java b/sdk/storage/azure-storage-file-datalake/src/main/java/com/azure/storage/file/datalake/Transforms.java index e549505ec3410..657aca291ab98 100644 --- a/sdk/storage/azure-storage-file-datalake/src/main/java/com/azure/storage/file/datalake/Transforms.java +++ b/sdk/storage/azure-storage-file-datalake/src/main/java/com/azure/storage/file/datalake/Transforms.java @@ -96,6 +96,10 @@ class Transforms { + private static String SERIALIZATION_MESSAGE = String.format("'serialization' must be one of %s, %s, %s or %s.", + FileQueryJsonSerialization.class.getSimpleName(), FileQueryDelimitedSerialization.class.getSimpleName(), + FileQueryArrowSerialization.class.getSimpleName(), FileQueryParquetSerialization.class.getSimpleName()); + static com.azure.storage.blob.models.PublicAccessType toBlobPublicAccessType(PublicAccessType fileSystemPublicAccessType) { if (fileSystemPublicAccessType == null) { @@ -449,9 +453,7 @@ static BlobQuerySerialization toBlobQuerySerialization(FileQuerySerialization se } else if (ser instanceof FileQueryParquetSerialization) { return new BlobQueryParquetSerialization(); } else { - throw new IllegalArgumentException( - String.format("'serialization' must be a subtype of %s.", - FileQuerySerialization.class.getSimpleName())); + throw new IllegalArgumentException(SERIALIZATION_MESSAGE); } } From 8b438be2791303fdd6afd3ca8d6aab05697cd8e4 Mon Sep 17 00:00:00 2001 From: gapra Date: Mon, 14 Jun 2021 09:40:50 -0700 Subject: [PATCH 6/6] Made var final --- .../java/com/azure/storage/file/datalake/Transforms.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/sdk/storage/azure-storage-file-datalake/src/main/java/com/azure/storage/file/datalake/Transforms.java b/sdk/storage/azure-storage-file-datalake/src/main/java/com/azure/storage/file/datalake/Transforms.java index 657aca291ab98..955fcdb9780d0 100644 --- a/sdk/storage/azure-storage-file-datalake/src/main/java/com/azure/storage/file/datalake/Transforms.java +++ b/sdk/storage/azure-storage-file-datalake/src/main/java/com/azure/storage/file/datalake/Transforms.java @@ -96,9 +96,10 @@ class Transforms { - private static String SERIALIZATION_MESSAGE = String.format("'serialization' must be one of %s, %s, %s or %s.", - FileQueryJsonSerialization.class.getSimpleName(), FileQueryDelimitedSerialization.class.getSimpleName(), - FileQueryArrowSerialization.class.getSimpleName(), FileQueryParquetSerialization.class.getSimpleName()); + private static final String SERIALIZATION_MESSAGE = String.format("'serialization' must be one of %s, %s, %s or " + + "%s.", FileQueryJsonSerialization.class.getSimpleName(), + FileQueryDelimitedSerialization.class.getSimpleName(), FileQueryArrowSerialization.class.getSimpleName(), + FileQueryParquetSerialization.class.getSimpleName()); static com.azure.storage.blob.models.PublicAccessType toBlobPublicAccessType(PublicAccessType fileSystemPublicAccessType) {