pg.ddx.io  pgsql-sql@postgresql.org mailing list archive  
help / color / mirror / Atom feed
From: John <jfabiani@yolo.com>
To: pgsql-sql@postgresql.org
Subject: trouble with getting the field names
Date: Mon, 26 Oct 2009 16:41:49 -0700
Message-ID: <200910261641.49211.jfabiani@yolo.com> (raw)

Below is a SQL statement that was created to retreive the primary key , and 
column names and data types for a table name and a schema.  The problem is 
that is works very well if I only use the 'public' schema.  But it does not 
work if I use a 'system' schema I created (owned my me).  The offending line 
is "AND pg_table_is_visible(c.oid)"  which makes me believe I done something 
wrong with the roles?  IOW if I drop the "pg_table_is_visible" it works with 
my 'system' schema.  So I need a better guru than myself to help/tell me what 
I did wrong.  Thanks in advance!

SELECT a.attname, t.typname, 
EXISTS(SELECT * FROM generate_series(0, 31) idx(n) 
WHERE a.attnum = i.indkey[idx.n]) AS isprimary 
FROM pg_class c 
JOIN pg_namespace n ON n.oid = c.relnamespace 
JOIN pg_attribute a ON a.attrelid = c.oid 
JOIN pg_type t ON t.oid  = a.atttypid LEFT 
JOIN pg_index i ON i.indrelid = c.oid AND i.indisprimary 
WHERE c.relname = 'sys_company' AND n.nspname = 'system' 
AND a.attname NOT IN  ('ctid', 'cmin', 'cmax', 'tableoid', 'xmax', 'xmin') 
AND has_schema_privilege(n.oid, 'usage') 
AND has_table_privilege(c.oid, 'select') 
AND pg_table_is_visible(c.oid) ORDER BY c.relname, a.attname

Johnf



view thread (2+ messages)  latest in thread

Message-ID: <200910261641.49211.jfabiani@yolo.com>
Permalink:  ../200910261641.49211.jfabiani@yolo.com/
Also on:    postgresql.org/message-id/200910261641.49211.jfabiani@yolo.com

 · 

reply

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Reply to all the recipients using the --to and --cc options:
  reply via email

  To: pgsql-sql@postgresql.org
  Cc: jfabiani@yolo.com
  Subject: Re: trouble with getting the field names
  In-Reply-To: <200910261641.49211.jfabiani@yolo.com>

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

This inbox is served by DDX for PostgreSQL; see mirroring instructions
for how to clone and mirror all data and code used for this inbox