Re: Getting rid of SQLValueFunction

Michael Paquier <michael@paquier.xyz>

From: Michael Paquier <michael@paquier.xyz>
To: Ian Lawrence Barwick <barwick@gmail.com>
Cc: Ted Yu <yuzhihong@gmail.com>, Tom Lane <tgl@sss.pgh.pa.us>, Corey Huinker <corey.huinker@gmail.com>, Postgres hackers <pgsql-hackers@lists.postgresql.org>
Date: 2022-12-30T11:51:15Z
Lists: pgsql-hackers
On Fri, Dec 30, 2022 at 10:57:52AM +0900, Ian Lawrence Barwick wrote:
> I noticed this commit (f193883f) introduces following regressions:
> 
>     postgres=# SELECT current_timestamp(7);
>     WARNING:  TIMESTAMP(7) WITH TIME ZONE precision reduced to maximum
> allowed, 6
>     ERROR:  timestamp(7) precision must be between 0 and 6
> 
>     postgres=# SELECT localtimestamp(7);
>     WARNING:  TIMESTAMP(7) precision reduced to maximum allowed, 6
>     ERROR:  timestamp(7) precision must be between 0 and 6
> 
> Suggested fix attached.

The two changes in timestamp.c are fine,  Now I can see that the same
mistake was introduced in date.c.  The WARNINGs were issued and the
compilation went through the same way as the default, but they passed
down an incorrect precision, so I have fixed all that.  Coverage has
been added for all four, while the patch proposed covered only two.
--
Michael

Commits

  1. Fix precision handling for some COERCE_SQL_SYNTAX functions

  2. Replace SQLValueFunction by COERCE_SQL_SYNTAX

  3. Switch SQLValueFunction on "name" to use COERCE_SQL_SYNTAX

  4. Improve coverage of ruleutils.c for SQLValueFunctions