Say what you will about cms, it has alot of nice stuff in it. Look at packages/cms/www/modules/sitemap/index.tcl for an example that uses a paginator.
It appears that the paginator does a single query and caches the result. The results are then returned as multirow datasource.