Greetings,

We are having an issue with BestIndex in our Virtual Table implementation.
Allow us to illustrate the problem with a simple example.

We create a virtual table named 'vt' that conceptually has 3 columns
"value1, value2, value3" and then we want to execute the following queries:

1) select value1 from vt where value1 = 7;

In this case, BestIndex passes the equal constraint on the first column and
by setting the output as pdxInfo->aConstraintUsage[0].argvIndex = 1,
we indicate that we accept this specific constraint. So, at Filter we get
the value 7 as argument0. Everything behaves normally so far.

However, in case we run any of the following equivalent queries (that
should pass to Filter more than one value), we get an error message
"xBestIndex returned an invalid plan":

2) select value1 from vt where value1 = 7 or value1 = 8;
3) select value1 from vt where value1 in (select * from tableA);    //
suppose tableA contains an integer 'id' column and records (7, 8)
4) select value1 from vt, tableA where value1 = tableA.id;

Again, in each case we set pdxInfo->aConstraintUsage[0].argvIndex = 1 but
we get the above error message.

This behavior seems rather weird, so we'd like some expert help on what we
might be doing wrong.


Thank you for your time,
Manos Karvounis
Stamatis Christoforidis

Reply via email to