commands subdirectory continued -code cleanup

From: John Gray <jgray(at)azuli(dot)co(dot)uk>
To: Hackers List <pgsql-hackers(at)postgresql(dot)org>
Cc: Christopher Kings-Lynne <chriskl(at)familyhealth(dot)com(dot)au>
Subject: commands subdirectory continued -code cleanup
Date: 2002-04-19 19:12:06
Message-ID: 1019243530.1374.179.camel@adzuki
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

Dear all,

I've been looking at tidying up some of the repeated code which now
resides in tablecmds.c - in particular the ALTER TABLE ALTER COLUMN
code.

Most of these routines share common code:

1) AccessExclusive Lock on relation.

2) Relation is a table, not a system table, user is owner.

3) Recurse over child relations.

And several routines then:

4) check column exists

5) check column is not a system attribute

I would propose to combine these checks into two routines:
CanAlterTable(relid,systemOK) [systemOK is for the set statistics case]
GetTargetAttnum(relid,Attname) returns attnum

[This would bring some consistency to checking, for example fixing the
current segfault if you try ALTER TABLE test ALTER COLUMN xmin SET
DEFAULT 3;]

and two macros:

RECURSE_OVER_CHILDREN(relid);
AlterTableDoSomething(childrel,...);
RECURSE_OVER_CHILDREN_END;

(this seems more straightforward than passing the text of the function
call as a macro parameter).

ALTER COLUMN RENAME

Currently, attributes in tables, views and sequences can be renamed.
-tables and views make sense, of course.
Sequences still seem to work after they've had attributes renamed, but I
see little value in being able to do this. Is it OK to prohibit the
renaming of sequence columns?

tcop/utility.c vs. commands/

There are also permissions checks made in tcop/utility.c before
AlterTableOwner and renamerel are called. It may be best to move these
into commands/tablecmds.c. It seems that tcop/utility.c was supposed to
handle the permissions checks for statements, but the inheritance
support has pushed some of that into commands/ . Should permissions
checking for other utility statements be migrated to commands/ for
consistency? I don't propose to do this now -but it might be a later
stage in the process.

If this general outline is OK, I'll work on a patch -this shouldn't be
quite as drastic as the last one :-)

Regards

John

--
John Gray ECHOES: sponsored walks for Christian Aid to the highest
Azuli IT points of English counties, 4th-6th May 2002
www.azuli.co.uk www.stannesmoseley.care4free.net/echoes.html

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message jtp 2002-04-19 19:14:03 general design question
Previous Message Tom Lane 2002-04-19 18:53:49 Re: Really annoying comments...