2007/10/9, Bruce Momjian <bruce@momjian.us>:
> Pavel Stehule wrote:
> > 2007/10/9, Bruce Momjian <bruce@momjian.us>:
> > > Pavel Stehule wrote:
> > > > 4.1)
> > > >
> > > > To SELECT a random row, use:
> > > > SELECT col
> > > > FROM tab
> > > > ORDER BY random()
> > > > LIMIT 1;
> > > >
> > > > + On bigger tables this solution is slow. Please, find smarter
> > > > solution on network.
> > > >
> > >
> > > Well, give me a better example that works.
> >
> > Better universal solution doesn't exist. Exists only unelegant
> > solutions - but mutch faster.
> >
> > SELECT id, ...
> > FROM data
> > WHERE id = ANY(ARRAY(
> > SELECT (random()*:max_id)::int
> > FROM generate_series(1,20)))
> > LIMIT 1;
> >
> > max_id is host variable ~ real max id + some
> >
> > -- fast solution if id is PK of data
>
> Right. We really only want general solutions in the FAQ.
>
ok. I accept it. Can be some note there? Not this strange select.
> > > > 4.19)
> > > >
> > > > + most of problems with invalid OIDs in cache are solved in PostgreSQL
> > > > 8.3. Please remeber, so every replanning of SQL statements needs time.
> > > > Write your application, they can exist without cache invalidation.
> > >
> > > Agreed. Item removed.
> > >
> >
> > Cache invalidation isn't 100% protection before this error message.
> > With specific using of EXECUTE statement, you can get this message
> > too. But all temp tables related problems are solved.
>
> OK, let's see how many bug reports we get and we can always re-add it.
>
It's true :). You have to try really wild things inside plpgsql procedures.
Pavel