Problema de paginação usando Offset do postgresql

Utilizando o pager do doctrine observei uma inconsistência nos resultados paginados, e ao pesquisar descobri o seguinte:

o paginator gerava o código:

SELECT ... ORDER BY weight DESC LIMIT 10 OFFSET 10

acontece que o mesmo registro que aparece na página 2 aparecia também na página 5, isso porque o Offset do postgres necessita obrigatóriamente de um order by único para o offset funcionar corretamente.

Meus registros estavam todos com o weight = 0, ou seja, não havia uma ordem única e fazia com que a paginação não funcionasse corretamente.

Então a dica é sempre ordenar por peso (weight) e mais um outro campo único, como o id por exemplo.

link útil: http://www.postgresql.org/docs/8.3/static/queries-limit.html