So far I have PR https://github.com/apache/calcite/pull/1721 that adds verification to EnumerableTableScan constructor.
Unfortunately, we have a lot of test cases that assume the relation would be EnumerableTableScan even in the case test verifies logical plan only :( That is why I added extra logging and asserts to EnumerableTableScan so it throws an exception if someone tries to create wrong relation. Note: I discovered Enumerable does not support tables with struct, array, and map fields, so I added system properties to selectively enable/disable activating enumerable for those rowtypes. I'm inclined to commit 1721 shortly as it is a pre-requisite for other cost-related commits. Vladimir