Pufferung von Treffern im ResultSet

Hallo zusammen,
ich schreibe eine Client/Server-Anwendung (in Java), welche auch die Moeglichkeit bieten soll, eine “paged query” abzusetzen. Der Benutzer bekommt z.B. nur die ersten 50 Treffer einer Abfrage zu sehen, (obwohl seine Suchkriterien eigentlich sehr viel mehr Treffer ergeben wuerden) und kann sich anschliessend z.B. die naechsten 50 Treffer anzeigen lassen.
Dass man dieses Verhalten mit OFFSET und LIMIT realisieren kann, weiss ich. Mein Problem besteht nun aber darin, dass nicht jeder Benutzer jeden Datensatz sehen darf und das Berechtigungsmodul konfigurierbar ist, ich also zum Programmierzeitpunkt nicht weiss, welche Regeln welche Treffermenge beschraenken. Daher sieht das bisherige Konzept vor, dass meine DB-Schnittstelle den SELECT nur mit OFFSET aber ohne LIMIT absetzt, anschliessend in einer Schleife aus dem ResultSet Java-Objekte generiert und fuer jedes Java-Objekt die Berechtigungspruefung ausfuehrt. Erlaubt die Berechtigung, dass der Benutzer das Objekt sehen darf, wird das Objekt in die Ergebnisliste uebernommen. Das geht nun so lange, bis die gewuenschte Trefferanzahl in der Ergebnisliste ist oder das gesamte ResultSet abgearbeitet ist. Da ich vorher nicht weiss, wieviele Objekte an der Berechtigungspruefung scheitern, kann ich auch kein LIMIT angeben.

Nun zu meiner Frage: Wenn ich kein LIMIT angebe, wie gross ist dann das von postgresql gelieferte ResultSet? Enthaelt es bereits alle Treffer (was zu einer sehr schlechten Performance fuehren koennte) oder wird nur eine bestimmte Anzahl Treffer uebergeben und bei Bedarf nachgeladen?

Danke fuer Eure Muehe
Hermann

Wenn Deine Zugriffsregeln schon im WHERE zuschlagen erledigt sich die Frage von selber. Um Deine Frage zu beantworten: Ja, nein.

Andreas