Thread: Filtering ODBC table list

Filtering ODBC table list

From
Stephen Frost
Date:
Greetings,

  We've run into a couple of issues that, in general, I think would be
  helped greatly by having some way to filter the list of tables which
  are shown in the ODBC link/import list.  I'm curious if that is
  something which is possible to implement, the difficulty involved, and
  if anyone would be interested in working on it.

  Basically, it's like this:

  #1: Too many tables.  If you have more than (I think) 65,535 tables in
  the database, access breaks.  What happens is that if you pick a table
  beyond that point, it just tries to pull in all tables past that
  limit.  For example, 70,000 tables, user picks table 67,000 (and
  *just* that table in the ODBC link list) then access will try and
  link/import all tables from 65,536 -> 70,000.  This is kind of a
  problem.  I might be off on the exact numbers, but I don't think so.

  #2: Permissions issues.  Showing tables that a user doesn't have
  access to is, at best, frustrating.  Even just filtering based on
  usage rights on schemas would be an improvement, if not going the full
  way to relation-level permission checks.  It really strikes me that
  that's not a terribly difficult thing to check or incorporate into a
  query that pulls the table info.

  #3: Slow.  It takes *forever* on a gigabit link w/ a good desktop box
  and a fast-as-hell server to get a full table list (see the 70k tables
  example above for the number of tables we're talking about here).  I
  don't know what the latency is from but I suspect it's from Access
  getting the table definitions and whatnot for every table.  The server
  doesn't seem busy at all while this is going on.  I'm really hopeful
  that some kind of filtering mechanism would improve this situation
  greatly by only pulling down and getting the info for those tables
  which someone is interested in/has access to.

  What I would like to see, honestly, is two things:  A config toggle to
  say "only show schemas/tables I have access to" and some way to say,
  preferrably w/o changing some "config" option, "show me only tables in
  this schema" or "show me only tables in schemas that match this
  regexp".  I realize there are limitations from Access and the ODBC
  interface that might make these things impossible to do, if so, I'd
  really like to hear about them now so I can think about how I could
  implement the same thing through some other means (like making a bunch
  of different databases or something; I'd hate it, but if there's no
  other way... <Shrug>).

  Comments?  Thoughts?  I might be able to get some time to work on this
  myself, but I'd really like to hear what other people think or if
  anyone else is interested in working on it or already has some
  solution before spending resources on it.

      Thanks,

        Stephen

Attachment

Re: Filtering ODBC table list

From
"Obe, Regina"
Date:
 I think 2 is already done in the latest ODBC driver.  I installed it
recently on a client pc and was surprised that I didn't see the table I
had just created as a link option when trying to link via Access and
then after adding permissions to the table in PostgreSQL, I then saw it
in the list.

Hope that helps,
Regina

-----Original Message-----
From: pgsql-odbc-owner@postgresql.org
[mailto:pgsql-odbc-owner@postgresql.org] On Behalf Of Stephen Frost
Sent: Wednesday, October 03, 2007 8:57 AM
To: PostgreSQL ODBC List
Subject: [ODBC] Filtering ODBC table list

Greetings,

  We've run into a couple of issues that, in general, I think would be
  helped greatly by having some way to filter the list of tables which
  are shown in the ODBC link/import list.  I'm curious if that is
  something which is possible to implement, the difficulty involved, and
  if anyone would be interested in working on it.

  Basically, it's like this:

  #1: Too many tables.  If you have more than (I think) 65,535 tables in
  the database, access breaks.  What happens is that if you pick a table
  beyond that point, it just tries to pull in all tables past that
  limit.  For example, 70,000 tables, user picks table 67,000 (and
  *just* that table in the ODBC link list) then access will try and
  link/import all tables from 65,536 -> 70,000.  This is kind of a
  problem.  I might be off on the exact numbers, but I don't think so.

  #2: Permissions issues.  Showing tables that a user doesn't have
  access to is, at best, frustrating.  Even just filtering based on
  usage rights on schemas would be an improvement, if not going the full
  way to relation-level permission checks.  It really strikes me that
  that's not a terribly difficult thing to check or incorporate into a
  query that pulls the table info.

  #3: Slow.  It takes *forever* on a gigabit link w/ a good desktop box
  and a fast-as-hell server to get a full table list (see the 70k tables
  example above for the number of tables we're talking about here).  I
  don't know what the latency is from but I suspect it's from Access
  getting the table definitions and whatnot for every table.  The server
  doesn't seem busy at all while this is going on.  I'm really hopeful
  that some kind of filtering mechanism would improve this situation
  greatly by only pulling down and getting the info for those tables
  which someone is interested in/has access to.

  What I would like to see, honestly, is two things:  A config toggle to
  say "only show schemas/tables I have access to" and some way to say,
  preferrably w/o changing some "config" option, "show me only tables in
  this schema" or "show me only tables in schemas that match this
  regexp".  I realize there are limitations from Access and the ODBC
  interface that might make these things impossible to do, if so, I'd
  really like to hear about them now so I can think about how I could
  implement the same thing through some other means (like making a bunch
  of different databases or something; I'd hate it, but if there's no
  other way... <Shrug>).

  Comments?  Thoughts?  I might be able to get some time to work on this
  myself, but I'd really like to hear what other people think or if
  anyone else is interested in working on it or already has some
  solution before spending resources on it.

      Thanks,

        Stephen

-----------------------------------------
The substance of this message, including any attachments, may be
confidential, legally privileged and/or exempt from disclosure
pursuant to Massachusetts law. It is intended
solely for the addressee. If you received this in error, please
contact the sender and delete the material from any computer.


Re: Filtering ODBC table list

From
Mark Cave-Ayland
Date:
On Wed, 2007-10-03 at 09:15 -0400, Obe, Regina wrote:
>  I think 2 is already done in the latest ODBC driver.  I installed it
> recently on a client pc and was surprised that I didn't see the table I
> had just created as a link option when trying to link via Access and
> then after adding permissions to the table in PostgreSQL, I then saw it
> in the list.
>
> Hope that helps,
> Regina


Hi Regina/Steve,

I posted a patch for #2 here:
http://archives.postgresql.org/pgsql-odbc/2007-06/msg00028.php, although
if you continue reading the following discussions, the patch was
rejected as-is. Inoue-san, did a version of this patch get applied to
CVS?


Kind regards,

Mark.

--
ILande - Open Source Consultancy
http://www.ilande.co.uk