NEW + tableOID

NEW + tableOID

am 13.08.2010 23:08:15 von Ricardo Bayley

--0016e659f4d89e6593048dbae1e6
Content-Type: text/plain; charset=UTF-8

Hi Fellows,

I have a bunch of tables which I need to perform a Full Text Search.
The approach I am using is to insert into another table (the searcheable
table): tsvector information, tableOID and the record Id

I do this with triggers. This issue I have is that the tableoid data cannot
be used with the NEW keyword. I always get value 0 instead of the actual
tableoid.

Insert statement looks something like this:
INSERT INTO fts.fdata(tbl_oid, id, vector_info)
VALUES (NEW.tableoid, NEW.id, NEW.vector_info)

So how can I get the tableoid in a trigger function ?


regards,


Ricardo

--0016e659f4d89e6593048dbae1e6
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

Hi Fellows,


I have a bunch of tables which I need to per=
form a Full Text Search. 
The approach I am using is to inse=
rt into another table (the searcheable table):  tsvector information, =
tableOID and the record Id


I do this with triggers. This issue I have is that the =
tableoid data cannot be used with the NEW keyword. I always get value 0 ins=
tead of the actual tableoid.

Insert statement look=
s something like this:

INSERT INTO fts.fdata(tbl_oid, id, vector_info)
VALUES =
(NEW.tableoid, NEW.id, NEW.vector_info)

So h=
ow can I get the tableoid in a trigger function ?



regards,


Ricardo v>



--0016e659f4d89e6593048dbae1e6--

Re: NEW + tableOID

am 13.08.2010 23:33:01 von Ricardo Bayley

--0016364ef6102d8057048dbb3a51
Content-Type: text/plain; charset=UTF-8

By the way,

Another option to do this, is to do some table Inheritance. So Full Text
Search is perform on each table.

So which scenario is better ? Triggers which insert data into a third table,
or Inheritance ?

Thanks in advanced !


Ricardo.

On Fri, Aug 13, 2010 at 6:08 PM, Ricardo Bayley wrote:

> Hi Fellows,
>
> I have a bunch of tables which I need to perform a Full Text Search.
> The approach I am using is to insert into another table (the searcheable
> table): tsvector information, tableOID and the record Id
>
> I do this with triggers. This issue I have is that the tableoid data cannot
> be used with the NEW keyword. I always get value 0 instead of the actual
> tableoid.
>
> Insert statement looks something like this:
> INSERT INTO fts.fdata(tbl_oid, id, vector_info)
> VALUES (NEW.tableoid, NEW.id, NEW.vector_info)
>
> So how can I get the tableoid in a trigger function ?
>
>
> regards,
>
>
> Ricardo
>
>

--0016364ef6102d8057048dbb3a51
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

By the way,


Another option to do this, is to do some tab=
le Inheritance. So Full Text Search is perform on each table.
>
So which scenario is better ? Triggers which insert data into a=
third table,  or Inheritance ?


Thanks in advanced !


>
Ricardo.

On Fri, Aug 13, 201=
0 at 6:08 PM, Ricardo Bayley < o.bayley@gmail.com">ricardo.bayley@gmail.com> wrote:

x #ccc solid;padding-left:1ex;">Hi Fellows,

I have a bun=
ch of tables which I need to perform a Full Text Search. 
Th=
e approach I am using is to insert into another table (the searcheable tabl=
e):  tsvector information, tableOID and the record Id



I do this with triggers. This issue I have is that the =
tableoid data cannot be used with the NEW keyword. I always get value 0 ins=
tead of the actual tableoid.

Insert statement look=
s something like this:


INSERT INTO fts.fdata(tbl_oid, id, vector_info)
VALUES =
(NEW.tableoid, NEW.id, NEW.vector_info)

So h=
ow can I get the tableoid in a trigger function ?




regards,

r>
Ricardo





--0016364ef6102d8057048dbb3a51--

Re: NEW + tableOID

am 13.08.2010 23:45:05 von Tom Lane

Ricardo Bayley writes:
> I do this with triggers. This issue I have is that the tableoid data cannot
> be used with the NEW keyword. I always get value 0 instead of the actual
> tableoid.

That might work in an AFTER trigger, but it definitely won't work in a
BEFORE trigger, because the NEW row isn't actually part of the table at
that point. You'd probably be better off to rely on the trigger
function TG_RELID parameter instead, anyway.

regards, tom lane

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

Re: NEW + tableOID

am 14.08.2010 00:05:39 von Ricardo Bayley

--001636416ae3e26973048dbbae95
Content-Type: text/plain; charset=UTF-8

Thanks Tom that was exactly what I was looking for.

Do you think that having just 1 table to perform the Full Text Search is a
better approach than having 1 master table with child tables, and always
querying the Master one ? Which do you believe is faster ?

regards

On Fri, Aug 13, 2010 at 6:45 PM, Tom Lane wrote:

> Ricardo Bayley writes:
> > I do this with triggers. This issue I have is that the tableoid data
> cannot
> > be used with the NEW keyword. I always get value 0 instead of the actual
> > tableoid.
>
> That might work in an AFTER trigger, but it definitely won't work in a
> BEFORE trigger, because the NEW row isn't actually part of the table at
> that point. You'd probably be better off to rely on the trigger
> function TG_RELID parameter instead, anyway.
>
> regards, tom lane
>

--001636416ae3e26973048dbbae95
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

Thanks Tom that was exactly what I was looking for.


Do y=
ou think that having just 1 table to perform the Full Text Search is a bett=
er approach than having 1 master table with child tables, and always queryi=
ng the Master one ? Which do you believe is faster ?


regards

On Fri=
, Aug 13, 2010 at 6:45 PM, Tom Lane < :tgl@sss.pgh.pa.us">tgl@sss.pgh.pa.us> wrote:
class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border-left:1px #ccc solid=
;padding-left:1ex;">
Ricardo Bayley < ..com">ricardo.bayley@gmail.com> writes:

> I do this with triggers. This issue I have is that the tableoid data c=
annot

> be used with the NEW keyword. I always get value 0 instead of the actu=
al

> tableoid.



That might work in an AFTER trigger, but it definitely won't work=
in a

BEFORE trigger, because the NEW row isn't actually part of the table at=


that point.  You'd probably be better off to rely on the trigger r>
function TG_RELID parameter instead, anyway.



                    =C2=
=A0  regards, tom lane




--001636416ae3e26973048dbbae95--