When there is a table (or view, or sequence) of the same name in one schema as another, and both of these schemas are in the set search_path, only the first schema in the search path will show that name in the output of \d[S+]. (Also \dt, \dv, etc)

PostgreSQL versions:  8.2.x, 8.3.x, 8.4.4, 9.0.0
Operating System: Linux (Ubuntu 10 and RedHat EL5 tested)

Running the attached file to create tables in schemas, then running the below commands show output as noted. At the bottom, I have also simulated what I expect the output to be.

I *think* this is a bug. I did not expect filtration to occur with table/view names in the output of a simple "\d". This also seems to prevent display of any tables where a table of the same name exists in the pg_catalog schema.

Thank you. Please let me know if this is a known issue, or if there's anything I can do to help describe the problem.

                                                           - Chris


% \i pgsql9.bugshow-database.sql
% \d
           List of relations
 Schema |     Name     | Type  | Owner
--------+--------------+-------+-------
 test2  | test_table   | table | cross
 test2  | test_table_2 | table | cross
(2 rows)

% set search_path to test1,test2;
% \d

Output:

           List of relations
 Schema |     Name     | Type  | Owner
--------+--------------+-------+-------
 test1  | test_table   | table | cross
 test1  | test_table_1 | table | cross
 test2  | test_table_2 | table | cross
(3 rows)

Expected Output:

           List of relations
 Schema |     Name     | Type  | Owner
--------+--------------+-------+-------
 test1  | test_table   | table | cross
 test1  | test_table_1 | table | cross
 test2  | test_table   | table | cross
 test2  | test_table_2 | table | cross
(4 rows)

--
-- PostgreSQL database dump
--

SET statement_timeout = 0;
SET client_encoding = 'UTF8';
SET standard_conforming_strings = off;
SET check_function_bodies = false;
SET client_min_messages = warning;
SET escape_string_warning = off;

--
-- Name: test1; Type: SCHEMA; Schema: -; Owner: cross
--

CREATE SCHEMA test1;


ALTER SCHEMA test1 OWNER TO "cross";

--
-- Name: test2; Type: SCHEMA; Schema: -; Owner: cross
--

CREATE SCHEMA test2;


ALTER SCHEMA test2 OWNER TO "cross";

--
-- Name: plpgsql; Type: PROCEDURAL LANGUAGE; Schema: -; Owner: postgres
--

CREATE OR REPLACE PROCEDURAL LANGUAGE plpgsql;


ALTER PROCEDURAL LANGUAGE plpgsql OWNER TO postgres;

SET search_path = test1, pg_catalog;

SET default_tablespace = '';

SET default_with_oids = false;

--
-- Name: test_table; Type: TABLE; Schema: test1; Owner: cross; Tablespace: 
--

CREATE TABLE test_table (
    id integer,
    test2_schema boolean DEFAULT false,
    nonce integer
);


ALTER TABLE test1.test_table OWNER TO "cross";

--
-- Name: test_table_1; Type: TABLE; Schema: test1; Owner: cross; Tablespace: 
--

CREATE TABLE test_table_1 (
    id integer,
    test1_schema boolean DEFAULT true
);


ALTER TABLE test1.test_table_1 OWNER TO "cross";

SET search_path = test2, pg_catalog;

--
-- Name: test_table; Type: TABLE; Schema: test2; Owner: cross; Tablespace: 
--

CREATE TABLE test_table (
    id integer,
    test2_schema boolean DEFAULT true,
    extra_field integer
);


ALTER TABLE test2.test_table OWNER TO "cross";

--
-- Name: test_table_2; Type: TABLE; Schema: test2; Owner: cross; Tablespace: 
--

CREATE TABLE test_table_2 (
    id integer,
    test2_schema boolean DEFAULT true
);


ALTER TABLE test2.test_table_2 OWNER TO "cross";

SET search_path = test1, pg_catalog;

--
-- Data for Name: test_table; Type: TABLE DATA; Schema: test1; Owner: cross
--

COPY test_table (id, test2_schema, nonce) FROM stdin;
\.


--
-- Data for Name: test_table_1; Type: TABLE DATA; Schema: test1; Owner: cross
--

COPY test_table_1 (id, test1_schema) FROM stdin;
\.


SET search_path = test2, pg_catalog;

--
-- Data for Name: test_table; Type: TABLE DATA; Schema: test2; Owner: cross
--

COPY test_table (id, test2_schema, extra_field) FROM stdin;
\.


--
-- Data for Name: test_table_2; Type: TABLE DATA; Schema: test2; Owner: cross
--

COPY test_table_2 (id, test2_schema) FROM stdin;
\.


--
-- Name: public; Type: ACL; Schema: -; Owner: postgres
--

REVOKE ALL ON SCHEMA public FROM PUBLIC;
REVOKE ALL ON SCHEMA public FROM postgres;
GRANT ALL ON SCHEMA public TO postgres;
GRANT ALL ON SCHEMA public TO PUBLIC;


--
-- PostgreSQL database dump complete
--

-- 
Sent via pgsql-bugs mailing list (pgsql-bugs@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-bugs

Reply via email to