Re: maintaining backwards compatibility for to_regclass argument type change from cstring to text

From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: Michael Rasmussen <michaelr(at)porch(dot)com>
Cc: "pgsql-general(at)postgresql(dot)org" <pgsql-general(at)postgresql(dot)org>
Subject: Re: maintaining backwards compatibility for to_regclass argument type change from cstring to text
Date: 2016-12-01 04:49:42
Message-ID: 15698.1480567782@sss.pgh.pa.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

Michael Rasmussen <michaelr(at)porch(dot)com> writes:
> I have encountered an issue in testing our upgrade from 9.4.4 to 9.6.1. Per the changes detailed in https://www.postgresql.org/message-id/E1aGVwY-0002Pu-Uk%40gemulon.postgresql.org, the argument types of the to_reg*() functions were changed from cstring to text.

Right.

> I am now faced with having to support both 9.4 and 9.6 as we will not be upgrading all servers simultaneously. The solution I have come up with is to use if-else statements that check the numeric version of the cluster the function is installed on. An example:

Personally, I'd try to convert everything to new style, and put a shim
function into pre-9.6 deployments only. This seems to work:

create function to_regclass(text) returns regclass
language sql as 'select to_regclass($1::cstring)';

regards, tom lane

In response to

Browse pgsql-general by date

  From Date Subject
Next Message George 2016-12-01 08:07:36 Re: Index is not used for "IN (non-correlated subquery)"
Previous Message Joseph Brenner 2016-12-01 04:48:41 No select privileges when not connecting from login postgres