From e506ca40634b0e893ea888aaf18896cab309f704 Mon Sep 17 00:00:00 2001 From: Bruce Momjian Date: Mon, 12 Nov 2001 06:09:09 +0000 Subject: [PATCH] Tables without oids wouldn't be able to be used inside fk constraints, since some of the checks in the trigger did a SELECT oid. Since the oid wasn't actually used, I changed this to SELECT 1. My test case with non-oid tables now works and fk regression appears to run fine on my machine. Stephan Szabo --- src/backend/utils/adt/ri_triggers.c | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/src/backend/utils/adt/ri_triggers.c b/src/backend/utils/adt/ri_triggers.c index 071b7248d8..6fcc814252 100644 --- a/src/backend/utils/adt/ri_triggers.c +++ b/src/backend/utils/adt/ri_triggers.c @@ -18,7 +18,7 @@ * Portions Copyright (c) 2000-2001, PostgreSQL Global Development Group * Copyright 1999 Jan Wieck * - * $Header: /cvsroot/pgsql/src/backend/utils/adt/ri_triggers.c,v 1.30 2001/11/12 00:46:36 tgl Exp $ + * $Header: /cvsroot/pgsql/src/backend/utils/adt/ri_triggers.c,v 1.31 2001/11/12 06:09:09 momjian Exp $ * * ---------- */ @@ -232,10 +232,10 @@ RI_FKey_check(PG_FUNCTION_ARGS) /* --------- * The query string built is - * SELECT oid FROM ONLY + * SELECT 1 FROM ONLY * ---------- */ - sprintf(querystr, "SELECT oid FROM ONLY \"%s\" FOR UPDATE OF \"%s\"", + sprintf(querystr, "SELECT 1 FROM ONLY \"%s\" FOR UPDATE OF \"%s\"", tgargs[RI_PK_RELNAME_ARGNO], tgargs[RI_PK_RELNAME_ARGNO]); @@ -376,14 +376,14 @@ RI_FKey_check(PG_FUNCTION_ARGS) /* ---------- * The query string built is - * SELECT oid FROM ONLY WHERE pkatt1 = $1 [AND ...] + * SELECT 1 FROM ONLY WHERE pkatt1 = $1 [AND ...] * The type id's for the $ parameters are those of the * corresponding FK attributes. Thus, SPI_prepare could * eventually fail if the parser cannot identify some way * how to compare these two types by '='. * ---------- */ - sprintf(querystr, "SELECT oid FROM ONLY \"%s\"", + sprintf(querystr, "SELECT 1 FROM ONLY \"%s\"", tgargs[RI_PK_RELNAME_ARGNO]); querysep = "WHERE"; for (i = 0; i < qkey.nkeypairs; i++) @@ -609,14 +609,14 @@ RI_FKey_noaction_del(PG_FUNCTION_ARGS) /* ---------- * The query string built is - * SELECT oid FROM ONLY WHERE fkatt1 = $1 [AND ...] + * SELECT 1 FROM ONLY WHERE fkatt1 = $1 [AND ...] * The type id's for the $ parameters are those of the * corresponding PK attributes. Thus, SPI_prepare could * eventually fail if the parser cannot identify some way * how to compare these two types by '='. * ---------- */ - sprintf(querystr, "SELECT oid FROM ONLY \"%s\"", + sprintf(querystr, "SELECT 1 FROM ONLY \"%s\"", tgargs[RI_FK_RELNAME_ARGNO]); querysep = "WHERE"; for (i = 0; i < qkey.nkeypairs; i++) @@ -823,14 +823,14 @@ RI_FKey_noaction_upd(PG_FUNCTION_ARGS) /* ---------- * The query string built is - * SELECT oid FROM ONLY WHERE fkatt1 = $1 [AND ...] + * SELECT 1 FROM ONLY WHERE fkatt1 = $1 [AND ...] * The type id's for the $ parameters are those of the * corresponding PK attributes. Thus, SPI_prepare could * eventually fail if the parser cannot identify some way * how to compare these two types by '='. * ---------- */ - sprintf(querystr, "SELECT oid FROM ONLY \"%s\"", + sprintf(querystr, "SELECT 1 FROM ONLY \"%s\"", tgargs[RI_FK_RELNAME_ARGNO]); querysep = "WHERE"; for (i = 0; i < qkey.nkeypairs; i++) @@ -1450,14 +1450,14 @@ RI_FKey_restrict_del(PG_FUNCTION_ARGS) /* ---------- * The query string built is - * SELECT oid FROM ONLY WHERE fkatt1 = $1 [AND ...] + * SELECT 1 FROM ONLY WHERE fkatt1 = $1 [AND ...] * The type id's for the $ parameters are those of the * corresponding PK attributes. Thus, SPI_prepare could * eventually fail if the parser cannot identify some way * how to compare these two types by '='. * ---------- */ - sprintf(querystr, "SELECT oid FROM ONLY \"%s\"", + sprintf(querystr, "SELECT 1 FROM ONLY \"%s\"", tgargs[RI_FK_RELNAME_ARGNO]); querysep = "WHERE"; for (i = 0; i < qkey.nkeypairs; i++) @@ -1670,14 +1670,14 @@ RI_FKey_restrict_upd(PG_FUNCTION_ARGS) /* ---------- * The query string built is - * SELECT oid FROM ONLY WHERE fkatt1 = $1 [AND ...] + * SELECT 1 FROM ONLY WHERE fkatt1 = $1 [AND ...] * The type id's for the $ parameters are those of the * corresponding PK attributes. Thus, SPI_prepare could * eventually fail if the parser cannot identify some way * how to compare these two types by '='. * ---------- */ - sprintf(querystr, "SELECT oid FROM ONLY \"%s\"", + sprintf(querystr, "SELECT 1 FROM ONLY \"%s\"", tgargs[RI_FK_RELNAME_ARGNO]); querysep = "WHERE"; for (i = 0; i < qkey.nkeypairs; i++) -- 2.40.0