• john.arnott (12/15/2012)


    SanDroid, your explanation has me puzzled. The first quote says that one cannot use an expression containing a float expression in the key column of an indexed view. By itself, this would appear not to apply to the QOD situation where the index is based on an INT column. How then is this a clear explanation for prohibiting the use of an index on a view if Numeric_RoundAbort is On? Wouldn't that setting only affect the evaluation of an expression that depended on a float or other expression that's not strictly deterministic at the lowest (machine) level?

    The second part of your explanation didn't help me any more than the first. You pose an apparently rhetorical question, "How would the database engine test the values of an indexed view for the right data percision when executing or running the TSQL from a client if that client connection has the SET option ARITHABORT turned ON?" I don't follow why that setting (or NUMERIC_ROUNDABORT turned OFF as I think you may have meant) would affect what the engine would do with an INT column.

    Your final paragraph actually echoes Hugo when you say it seems likely the engine would have to test the absolute deterministic characteristics of all components of the view index. If I may take that thought forward, wouldn't that mean the engine instead just says "if NUMERIC_ROUNDABORT is OFF, then non-deterministic values COULD be there, and I don't want to go looking for that possibility deep down inside". This would be how I understood Hugo's speculation, back where we started. Can this be cleared up WITHOUT speculation?

    Thanks for writing this so I didn't have to 🙂