Change DomainObjectQueryExecutor to use the new generic CreateScalarQuery/CreateCollectionQuery overloads:
ExecuteScalar should be reimplemented to use CreateScalarQuery<T>.
If any fetch requests are found within the query (i.e., "RemoveTrailingFetchRequests" returns a non-empty collection), throw a NotSupportedException: Scalar queries cannot perform eager fetching.
Use Execute to get the value and return it.
I think all of those conversions (from null/DBNull.Value, Convert.ChangeType) are no longer required.
ExecuteCollection should be reimplemented to use CreateSequenceQuery<T>.
Use Execute to get the sequence and return it.
ExecuteSingle should call ExecuteCollection, just like it already does, but it must no longer call ExecuteScalar. Remove the injected _storageTypeInformationProvider, it shouldn't be used any longer.
Remove now unused DomainObjectQueryGenerator.CreateQuery method.
Remove now unused SqlQueryGeneratorResult.QueryKind.GroupQuery.
Enable integration tests.