I can't use a FidFilter to calculate an extent in ArcSDE.
I believe the problem stems from the fact that ArcSDEQuery.calculateQueryExtent(...) is using FidReader.NULL_READER when calling createQuery rather than obtaining the FID strategy from the typeInfo as is done in the ArcSDEQuery.calculateResultCount(...), which does work correctly with a FidFilter.
boundsQuery = createQuery(session, fullSchema, realQuery, FIDReader.NULL_READER,
final FIDReader fidStrategy = typeInfo.getFidStrategy();
countQuery = createQuery(session, fullSchema, query, fidStrategy, versioningHandler);
I think ArcSDEQuery.createInprocessViewQuery(...) may have a similar issue since it also just uses a NULL_READER, but my usage doesn't follow this code path so I can't say for sure.