public async Task QueryAsync_FatalError() { // Arrange await using DisposingContainer test = await GetTestContainerAsync(); BlockBlobClient blockBlobClient = InstrumentClient(test.Container.GetBlockBlobClient(GetNewBlobName())); Stream stream = CreateDataStream(Constants.KB); await blockBlobClient.UploadAsync(stream); string query = @"SELECT * from BlobStorage;"; BlobQueryJsonTextOptions jsonTextConfiguration = new BlobQueryJsonTextOptions { RecordSeparator = "\n" }; BlobQueryOptions options = new BlobQueryOptions { InputTextConfiguration = jsonTextConfiguration }; // Act - with no IBlobQueryErrorReceiver Response <BlobDownloadInfo> response = await blockBlobClient.QueryAsync( query, options); using StreamReader streamReader = new StreamReader(response.Value.Content); string s = await streamReader.ReadToEndAsync(); // Act - with IBlobQueryErrorReceiver BlobQueryError expectedBlobQueryError = new BlobQueryError { IsFatal = true, Name = "ParseError", Description = "Unexpected token ',' at [byte: 3]. Expecting tokens '{', or '['.", Position = 0 }; BlobQueryErrorHandler errorHandler = new BlobQueryErrorHandler(expectedBlobQueryError); options = new BlobQueryOptions { InputTextConfiguration = jsonTextConfiguration, }; options.ErrorHandler += errorHandler.Handle; response = await blockBlobClient.QueryAsync( query, options); using StreamReader streamReader2 = new StreamReader(response.Value.Content); s = await streamReader2.ReadToEndAsync(); }
public async Task QueryAsync_QueryTextConfigurations() { await using DisposingContainer test = await GetTestContainerAsync(); BlockBlobClient blockBlobClient = InstrumentClient(test.Container.GetBlockBlobClient(GetNewBlobName())); Stream stream = CreateDataStream(Constants.KB); await blockBlobClient.UploadAsync(stream); // Act string query = @"SELECT _2 from BlobStorage WHERE _1 > 250;"; BlobQueryCsvTextOptions csvTextConfiguration = new BlobQueryCsvTextOptions { ColumnSeparator = ",", QuotationCharacter = '"', EscapeCharacter = '\\', RecordSeparator = "\n", HasHeaders = false }; BlobQueryJsonTextOptions jsonTextConfiguration = new BlobQueryJsonTextOptions { RecordSeparator = "\n" }; BlobQueryOptions options = new BlobQueryOptions { InputTextConfiguration = csvTextConfiguration, OutputTextConfiguration = jsonTextConfiguration }; // Act Response <BlobDownloadInfo> response = await blockBlobClient.QueryAsync( query, options); using StreamReader streamReader = new StreamReader(response.Value.Content); string s = await streamReader.ReadToEndAsync(); // Assert Assert.AreEqual("{\"_1\":\"400\"}\n{\"_1\":\"400\"}\n{\"_1\":\"400\"}\n{\"_1\":\"400\"}\n{\"_1\":\"400\"}\n{\"_1\":\"400\"}\n{\"_1\":\"400\"}\n{\"_1\":\"400\"}\n{\"_1\":\"400\"}\n{\"_1\":\"400\"}\n{\"_1\":\"400\"}\n{\"_1\":\"400\"}\n{\"_1\":\"400\"}\n{\"_1\":\"400\"}\n{\"_1\":\"400\"}\n{\"_1\":\"400\"}\n{\"_1\":\"400\"}\n{\"_1\":\"400\"}\n{\"_1\":\"400\"}\n{\"_1\":\"400\"}\n{\"_1\":\"400\"}\n{\"_1\":\"400\"}\n{\"_1\":\"400\"}\n{\"_1\":\"400\"}\n{\"_1\":\"400\"}\n{\"_1\":\"400\"}\n{\"_1\":\"400\"}\n{\"_1\":\"400\"}\n{\"_1\":\"400\"}\n{\"_1\":\"400\"}\n{\"_1\":\"400\"}\n{\"_1\":\"400\"}\n", s); }
public PSBlobQueryJsonTextConfiguration(BlobQueryJsonTextOptions config) { this.RecordSeparator = config.RecordSeparator; this.Type = BlobQueryConfigType.Json; }