in Amazon.QLDB.Driver.IntegrationTests/StatementExecutionTests.cs [664:726]
public void Execute_InsertAndReadIonTypes_IonTypesAreInsertedAndRead(IIonValue ionValue)
{
// Given.
// Create Ion struct to be inserted.
IIonValue ionStruct = ValueFactory.NewEmptyStruct();
ionStruct.SetField(Constants.ColumnName, ionValue);
var query = $"INSERT INTO {Constants.TableName} ?";
var insertCount = qldbDriver.Execute(txn =>
{
var result = txn.Execute(query, ionStruct);
var count = 0;
foreach (var row in result)
{
count++;
}
return count;
});
Assert.AreEqual(1, insertCount);
// When.
IIonValue searchResult;
if (ionValue.IsNull)
{
var searchQuery = $@"SELECT VALUE { Constants.ColumnName } FROM { Constants.TableName }
WHERE { Constants.ColumnName } IS NULL";
searchResult = qldbDriver.Execute(txn =>
{
var result = txn.Execute(searchQuery);
IIonValue ionVal = null;
foreach (var row in result)
{
ionVal = row;
}
return ionVal;
});
}
else
{
var searchQuery = $@"SELECT VALUE { Constants.ColumnName } FROM { Constants.TableName }
WHERE { Constants.ColumnName } = ?";
searchResult = qldbDriver.Execute(txn =>
{
var result = txn.Execute(searchQuery, ionValue);
IIonValue ionVal = null;
foreach (var row in result)
{
ionVal = row;
}
return ionVal;
});
}
// Then.
if (searchResult.Type() != ionValue.Type())
{
Assert.Fail($"The queried value type, { searchResult.Type().ToString() }," +
$"does not match { ionValue.Type().ToString() }.");
}
}