Обсуждение: Problem with ODBC in current CVS?

Поиск
Список
Период
Сортировка

Problem with ODBC in current CVS?

От
Bruce Stephens
Дата:
I've been trying to get StarOffice 5.2 working with PostgreSQL grabbed
directly from CVS, and have been having no end of problems (I'm sure I
had this working with StarOffice 5.1 months ago, but I don't remember
how, alas).  (It probably doesn't help that I don't really understand
what ODBC is doing.)

Anyway, using the iodbc driver manager and libpsqlodbc, I seem to be
getting close.  StarOffice connects but shows no tables.  From the
libpsqlodbc log file, it appears to be trying this:

select relname,usename,relhasrules from pg_class,pg_user        where relkind = 'r' and relname !~ '^pg_|^dd_' and
relname !~ '^xinv[0-9]+' and       int4out(usesysid) = int4out(relowner)order by relname
 

which returns no rows when I try it by hand.  These int4out's look
iffy to me.  Aren't usesysid and relowner int2?  Why does it need to
do any conversion anyway?  Why not just usesysid=relowner?  What am I
missing?


Re: Problem with ODBC in current CVS?

От
Bruce Stephens
Дата:
Bruce Stephens <bruce@cenderis.demon.co.uk> writes:

[...]

> select relname,usename,relhasrules from pg_class,pg_user 
>         where relkind = 'r' and relname !~ '^pg_|^dd_' and
>         relname !~ '^xinv[0-9]+' and
>         int4out(usesysid) = int4out(relowner)order by relname
> 
> which returns no rows when I try it by hand.  These int4out's look
> iffy to me.  Aren't usesysid and relowner int2?  Why does it need to
> do any conversion anyway?  Why not just usesysid=relowner?  What am I
> missing?

Hmm.  If I remove the int4out calls from src/interfaces/odbc/info.c,
then things work.  Is this the right thing to do, or have I got
something broken elsewhere which I should fix?

(The regressions pass, BTW, and I'm using a pretty generic box: Debian
unstable, i386, gcc-2.95.2.)


Re: Problem with ODBC in current CVS?

От
Tom Lane
Дата:
Bruce Stephens <bruce@cenderis.demon.co.uk> writes:
> select relname,usename,relhasrules from pg_class,pg_user 
>         where relkind = 'r' and relname !~ '^pg_|^dd_' and
>         relname !~ '^xinv[0-9]+' and
>         int4out(usesysid) = int4out(relowner)order by relname

> which returns no rows when I try it by hand.  These int4out's look
> iffy to me.

They're pretty bogus all right.  I think usesysid=relowner should
work fine.  Try making the appropriate change in
src/interfaces/odbc/info.c and let us know how it goes...
        regards, tom lane


Re: Problem with ODBC in current CVS?

От
Tom Lane
Дата:
Bruce Stephens <bruce@cenderis.demon.co.uk> writes:
> Hmm.  If I remove the int4out calls from src/interfaces/odbc/info.c,
> then things work.

I thought so.  Fix applied to CVS...
        regards, tom lane