[Gambas-user] Postgres - obscure problem with oids

Bruce adamnt42 at gmail.com
Sat Oct 31 04:59:26 CET 2020


I have a table ("tableext") which is an "extension" to the system 
pg_catalog pg_class table. tableext relates to the pg_class on 1:1 basis 
via the pg_class OID. Inn the tableext class that oid (called "tname")
a) is the primary key and
b) has a datatype of "regclass", IOW the table displays the OID as a 
table name instead of an OID.
That is all standard stuff in postgres whwn dealing with the catalog.

Here's my problem. In Gambas I am trying to update a row in this 
tableext table.

I can get an updateable result using
hBuffer = $srcConn.Edit("dd.tableext", "tname = &1::regclass", 
txtTableName.Text)

In other words I am forcing the integer OID from the tname. That's fine 
and I get an updatable cursor.

But when I get to the hBuffer.Update point Gambas is trying to use the 
string tname and I cant see how to tell it to pass the ::regclass back 
to the postgres server, A sample db.debug output of the query it is 
trying to execute is:

UPDATE "dd"."tableext"
SET "cat" = $$LOOKUP$$,
     "facade" = $$Reference$$,
     "is audited" = FALSE,
     "strength" = $$STRONG$$,
     "aspect" = $$Reference$$,
     "comments" = NULL,
     "disposition" = NULL,
     "centity" = NULL,
     "boclass" = $$BPGroups$$
WHERE "tname" = $$bpgroups$$


I need that last line to be

WHERE "tname" = $$bpgroups$$::regclass.

Any clues (apart from writing specific update queries which is too 
onerous for the number of thesse I have to do).

tia
bruce


More information about the User mailing list