Re: Trying to understand pg_get_expr() - Mailing list pgsql-general

From Marcos Pegoraro
Subject Re: Trying to understand pg_get_expr()
Date
Msg-id CAB-JLwZ0G43CCePwT0UOZddUV5pi5UWA4uSKi2hk+bzEvZJdKA@mail.gmail.com
Whole thread
In response to Re: Trying to understand pg_get_expr()  (Tom Lane <tgl@sss.pgh.pa.us>)
List pgsql-general
Em ter., 17 de mar. de 2026 às 18:04, Tom Lane <tgl@sss.pgh.pa.us> escreveu:
PG's parser automatically attributes type integer to an unadorned
integer literal, so no cast is necessary there, and pg_get_expr
doesn't add one.  But an unadorned string like 'test' does not
have a determinate type (well, it has type "unknown", but that
is an implementation artifact).  We emit a cast construct to show
what type the constant was resolved as.

The bigger picture here is that pg_get_expr relies on the same
code that is used for purposes like dumping views.  We want the
output to be such that subexpressions of a view will certainly
be parsed as the same type they were interpreted as before

Thanks Tom

If your fields default to a string, then all them will have to cast back to its type when calling that function.

CREATE TABLE default_test (
     id integer,
     fld_1 varchar DEFAULT 'test',
     fld_2 integer DEFAULT '150'::text::integer,
     fld_3 date DEFAULT '2026/05/01',
     fld_4 timestamp DEFAULT '2026/05/01',
     fld_5 text DEFAULT 'x',
     fld_6 boolean DEFAULT 'on'::text::boolean,
     fld_7 int4range DEFAULT '[1,2)',
     fld_8 char DEFAULT '1'
);

regards
Marcos

pgsql-general by date:

Previous
From: Tom Lane
Date:
Subject: Re: Trying to understand pg_get_expr()
Next
From: Rob Sargent
Date:
Subject: Re: help debugging an issue with selectivity