In my particular application I need to get the entire table object. If I get only the names and then call back to the metastore to get a table object at a time, it will be very slow. I have not measured the speed of the call with many tables, however, the hope is that with the offset and limit fields the application can stream those tables across multiple calls as opposed to getting them in one single gigantic batch. I will do the measurement though to find out how bad this is.
The offsets would not be consistent if new tables are created in between, however, this level of consistency is not needed by the application. Think of an application displaying all the tables and their associated columns for a particular user and does that in a paginated way. During pagination if new tables appear or disappear is not critical from the application point of view. The only other way of ensuring that things are consistent would be to run the whole query without offsets and limits or do all this in a long transaction. The later would be bad because it will hold locks on tables while pagination is happening and that would be really bad for other clients. Thoughts?