Re: how to add a new column in pg_proc table

Lists: pgsql-hackers
From: noman naeem <doublevision_17(at)yahoo(dot)com>
To: pgsql-hackers(at)postgresql(dot)org
Subject: how to add a new column in pg_proc table
Date: 2005-01-25 15:44:18
Message-ID: 20050125154418.38439.qmail@web41526.mail.yahoo.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-hackers

Hello Every one,

I am a student and working on my final year project,
I chose postgres as my development database,because of
its flexable architecture and extensibility.

I need to add a column of text type in pg_proc table
which is the part of the system catalog.I need to have
it so that I can proceed with my project.

I already know about the pg_proc.c and the structure
which contains all the relevent table columns in this
file.I also know about the script that generates the
.bki file with the file format as well.But ....

I keep on getting errors.It be very helpful if some
one can guide me regarding the basic steps for adding
a column in the pg_proc table......it would be indeed
of a great a help.

Regards,
Nauman


__________________________________
Do you Yahoo!?
The all-new My Yahoo! - Get yours free!
http://my.yahoo.com


From: Alvaro Herrera <alvherre(at)dcc(dot)uchile(dot)cl>
To: noman naeem <doublevision_17(at)yahoo(dot)com>
Cc: pgsql-hackers(at)postgresql(dot)org
Subject: Re: how to add a new column in pg_proc table
Date: 2005-01-25 15:57:02
Message-ID: 20050125155702.GA26006@dcc.uchile.cl
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-hackers

On Tue, Jan 25, 2005 at 07:44:18AM -0800, noman naeem wrote:

Hi,

> I need to add a column of text type in pg_proc table
> which is the part of the system catalog.I need to have
> it so that I can proceed with my project.
>
[snip]
>
> I keep on getting errors.It be very helpful if some
> one can guide me regarding the basic steps for adding
> a column in the pg_proc table......

What did you do exactly? What errors you get?

--
Alvaro Herrera (<alvherre[(at)]dcc(dot)uchile(dot)cl>)
"I can't go to a restaurant and order food because I keep looking at the
fonts on the menu. Five minutes later I realize that it's also talking
about food" (Donald Knuth)


From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: noman naeem <doublevision_17(at)yahoo(dot)com>
Cc: pgsql-hackers(at)postgresql(dot)org
Subject: Re: how to add a new column in pg_proc table
Date: 2005-01-25 16:39:35
Message-ID: 4218.1106671175@sss.pgh.pa.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-hackers

noman naeem <doublevision_17(at)yahoo(dot)com> writes:
> I keep on getting errors.It be very helpful if some
> one can guide me regarding the basic steps for adding
> a column in the pg_proc table...

The odds are that you didn't correctly update either pg_proc.h itself,
the preset pg_attribute rows for it in pg_attribute.h (both versions!),
or you just forgot to adjust the number-of-attributes for pg_proc in
pg_class.h.

In pg_proc.h, remember that you have to fix the struct declaration,
the #defines for attribute numbers, plus adjust all the built-in entries
(that last is a *real* PITA...)

Not to mention adjust code that uses or updates pg_proc, particularly
catalog/pg_proc.c.

One other nonobvious gotcha is that varlength fields must be physically
positioned after all fixed-width fields, because the C code tends to
assume that it can get at fixed-width fields by struct overlay.

I'd suggest looking at the last patch that added a field to pg_proc for
guidelines and to make sure you did not miss anything:

2004-01-06 18:55 tgl

* doc/src/sgml/catalogs.sgml, src/backend/bootstrap/bootstrap.c,
src/backend/catalog/pg_aggregate.c, src/backend/catalog/pg_proc.c,
src/backend/commands/functioncmds.c, src/backend/nodes/copyfuncs.c,
src/backend/nodes/equalfuncs.c, src/backend/parser/gram.y,
src/backend/utils/adt/sets.c, src/backend/utils/fmgr/fmgr.c,
src/include/catalog/catversion.h,
src/include/catalog/pg_attribute.h, src/include/catalog/pg_class.h,
src/include/catalog/pg_proc.h, src/include/nodes/nodes.h,
src/include/nodes/parsenodes.h, src/pl/plperl/plperl.c,
src/pl/plpgsql/src/pl_comp.c, src/pl/plpython/plpython.c,
src/pl/tcl/pltcl.c: Apply the core parts of Dennis Bjorklund's
patch to allow function parameters to be declared with names.
pg_proc has a column to store names, and CREATE FUNCTION can insert
data into it, but that's all as yet. I need to do more work on the
pg_dump and plpgsql portions of the patch before committing those,
but I thought I'd get the bulky changes in before the tree drifts
under me. initdb forced due to pg_proc change.

regards, tom lane


From: noman naeem <doublevision_17(at)yahoo(dot)com>
To: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
Cc: pgsql-hackers(at)postgresql(dot)org
Subject: Re: how to add a new column in pg_proc table
Date: 2005-01-25 18:12:11
Message-ID: 20050125181211.59335.qmail@web41529.mail.yahoo.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-hackers

Tom,
Thanks for the reply I rechanged the
pg_proc.h,pg_attribute.h and pg_class.h but still
facing errors,rather this time there were two
different errors.

They came at the time of frmgrtab.h file creation,they
are

fmgrtab.c:25: error: syntax error before '-' token
fmgrtab.c:2168: error: syntax error before '}' token

there are loads and loads of such errors.

what do u say....

Could you tell me from where I can have the last patch
that added a field to pg_proc for
guidelines of which you suggested.

awaiting for reply.....

Thanks,
Nauman

--- Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> wrote:

> noman naeem <doublevision_17(at)yahoo(dot)com> writes:
> > I keep on getting errors.It be very helpful if
> some
> > one can guide me regarding the basic steps for
> adding
> > a column in the pg_proc table...
>
> The odds are that you didn't correctly update either
> pg_proc.h itself,
> the preset pg_attribute rows for it in
> pg_attribute.h (both versions!),
> or you just forgot to adjust the
> number-of-attributes for pg_proc in
> pg_class.h.
>
> In pg_proc.h, remember that you have to fix the
> struct declaration,
> the #defines for attribute numbers, plus adjust all
> the built-in entries
> (that last is a *real* PITA...)
>
> Not to mention adjust code that uses or updates
> pg_proc, particularly
> catalog/pg_proc.c.
>
> One other nonobvious gotcha is that varlength fields
> must be physically
> positioned after all fixed-width fields, because the
> C code tends to
> assume that it can get at fixed-width fields by
> struct overlay.
>
> I'd suggest looking at the last patch that added a
> field to pg_proc for
> guidelines and to make sure you did not miss
> anything:
>
> 2004-01-06 18:55 tgl
>
> * doc/src/sgml/catalogs.sgml,
> src/backend/bootstrap/bootstrap.c,
> src/backend/catalog/pg_aggregate.c,
> src/backend/catalog/pg_proc.c,
> src/backend/commands/functioncmds.c,
> src/backend/nodes/copyfuncs.c,
> src/backend/nodes/equalfuncs.c,
> src/backend/parser/gram.y,
> src/backend/utils/adt/sets.c,
> src/backend/utils/fmgr/fmgr.c,
> src/include/catalog/catversion.h,
> src/include/catalog/pg_attribute.h,
> src/include/catalog/pg_class.h,
> src/include/catalog/pg_proc.h,
> src/include/nodes/nodes.h,
> src/include/nodes/parsenodes.h,
> src/pl/plperl/plperl.c,
> src/pl/plpgsql/src/pl_comp.c,
> src/pl/plpython/plpython.c,
> src/pl/tcl/pltcl.c: Apply the core parts of Dennis
> Bjorklund's
> patch to allow function parameters to be declared
> with names.
> pg_proc has a column to store names, and CREATE
> FUNCTION can insert
> data into it, but that's all as yet. I need to do
> more work on the
> pg_dump and plpgsql portions of the patch before
> committing those,
> but I thought I'd get the bulky changes in before
> the tree drifts
> under me. initdb forced due to pg_proc change.
>
> regards, tom lane
>



__________________________________
Do you Yahoo!?
Yahoo! Mail - You care about security. So do we.
http://promotions.yahoo.com/new_mail


From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: noman naeem <doublevision_17(at)yahoo(dot)com>
Cc: pgsql-hackers(at)postgresql(dot)org
Subject: Re: how to add a new column in pg_proc table
Date: 2005-01-25 18:19:21
Message-ID: 5427.1106677161@sss.pgh.pa.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-hackers

noman naeem <doublevision_17(at)yahoo(dot)com> writes:
> They came at the time of frmgrtab.h file creation,they
> are

> fmgrtab.c:25: error: syntax error before '-' token
> fmgrtab.c:2168: error: syntax error before '}' token

> there are loads and loads of such errors.

I suppose you forgot to update the Gen_fmgrtab.sh script
to account for new column numbering in pg_proc.

> Could you tell me from where I can have the last patch

See our CVS server --- a checkout and then "cvs diff" around
the time point I identified for you should do the trick.

regards, tom lane


From: noman naeem <doublevision_17(at)yahoo(dot)com>
To: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
Cc: pgsql-hackers(at)postgresql(dot)org
Subject: Re: how to add a new column in pg_proc table
Date: 2005-01-26 13:20:51
Message-ID: 20050126132051.7772.qmail@web41526.mail.yahoo.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-hackers

Hello Tom,

Now I have been able to generate valid bki file and
have been able to avoid all the errors thanks to
you,but still have not been able to add that
column.Now at initdb the database fails to initialize
itself.And the error it gives is.

duplicate key violates unique constraint
"pg_attribute_relid_attnum_index"

I am very sure it is due to pg_attribute.h file in
which I have inserted the entry for "protempsrc"
column.

The main thing is I am unable to understand this
insert statement structure.Please guide,I am in an
urgency.

It would be great if you can describe what it does and
means.

DATA(insert ( 1255 protempsrc 26 -1 -1 -1 0 -1 -1 f x
i f f f t 0));

--- Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> wrote:

> noman naeem <doublevision_17(at)yahoo(dot)com> writes:
> > They came at the time of frmgrtab.h file
> creation,they
> > are
>
> > fmgrtab.c:25: error: syntax error before '-' token
> > fmgrtab.c:2168: error: syntax error before '}'
> token
>
> > there are loads and loads of such errors.
>
> I suppose you forgot to update the Gen_fmgrtab.sh
> script
> to account for new column numbering in pg_proc.
>
> > Could you tell me from where I can have the last
> patch
>
> See our CVS server --- a checkout and then "cvs
> diff" around
> the time point I identified for you should do the
> trick.
>
> regards, tom lane
>


__________________________________
Do you Yahoo!?
All your favorites on one personal page Try My Yahoo!
http://my.yahoo.com