Re: [HACKERS] Open 6.4 items - Mailing list pgsql-hackers

From Thomas G. Lockhart
Subject Re: [HACKERS] Open 6.4 items
Date
Msg-id 35E99CB4.A8375D91@alumni.caltech.edu
Whole thread Raw
In response to Re: [HACKERS] Open 6.4 items  (Peter T Mount <peter@retep.org.uk>)
Responses Re: [HACKERS] Open 6.4 items  (Bruce Momjian <maillist@candle.pha.pa.us>)
List pgsql-hackers
Works fine _if_ the user has database creation privileges:

tgl=> create table test (x text, s serial);
NOTICE: CREATE TABLE will create implicit sequence test_s_seq for SERIAL
column test.s
NOTICE: CREATE TABLE/UNIQUE will create implicit index test_s_key for
table test
CREATE

This statement internally expands to roughly the following:
create table test (x text, s int4 default nextval('test_s_seq'));
create unique index test_s_key on test (s);
create sequence test_s_seq;

If the user has no database creation privileges, then apparently there
is some checking which insists that the sequence referenced in the
implicit default clause actually exists:

tgl=> create table test (x text, i int default nextval('test_s_seq'));
ERROR: pg_aclcheck: class "test_s_seq" not found

So, it looks like the sequence should internally be created before the
table, though in some cases it doesn't matter. I was concerned that this
might be the case, and the parser is not at the moment configured to
allow this. Should be able to fix it up, or have just limited SERIAL
support for the v6.4 release :(

                        - Tom

pgsql-hackers by date:

Previous
From: Michael Meskes
Date:
Subject: Re: [HACKERS] 6.4 HISTORY file
Next
From: The Hermit Hacker
Date:
Subject: Re: [HACKERS] Release 6.4