If you have a table located at /db/table
with partitions /db/table/partition=1
and then move the table location to /db2/table/ along with the partitions and their data
the location of the partitions will be incorrect when you list them, still pointing to /db/table/partition=1
running a "Alter table recover partitions" seems to check only for the existence of partition=1 in the table location, and ignores that the prior path has changed. So when you run a query it will not find those partitions and report 0 rows.
it should be noted that hive has the same behavior.