Subject Re: [ib-support] IN limitation to 1500 ?
Author Ann W. Harrison
I wrote:
> > A predefined table consisting of a session identifier (aka a gen_id
> > assigned to the session) and a value.

Baiting me, Artur Anjos wrote:

>a) A predefined table that it's needed just for a temporary job?

All queries are temporary - all tables exist to support their needs.
At the moment, "temporary" tables are expensive to create (separate
transaction, allocating index root and pointer pages, rewriting the
rdb$database table ... and creating one uses a relation id - and the
max relation id is 32768 and numbers are not reused unless the database
is backed up and restored. We could implement "real" temporary tables
that avoided those limitations, but we haven't.

>b) A predefined table that it's needed just for a limitation of IB/FB IN to
>1500 values?

There is a comment in the code indicating that the 1500 limit fixed
bug 10061, but with no indication of the nature of bug 10061. This
is not the time to increase the limit for FB1. However, increasing
the limit is quite possible for the next release, while I doubt that
we can agree on specifications and implementation of temporary tables
that quickly.

>c) A predefined table that it's needed just for using with ugly statements
>like 'IN( 1500+ values )'?

A workaround is a workaround.

>- Why do I need temporary tables?
>Ops! I mean to say:
>- Hehehe. Why do I need temporary tables?

Well, possibly you cut your teeth on a different database system
whose concurrency constraints made temporary tables necessary and
you haven't got your head around Firebird well enough to look for
more appropriate solutions. Hehehe...


We have answers.