Hi, On Sun, Feb 20, 2022 at 08:07:20AM +0200, Markur Sens wrote: > Suppose I have defined an additional type in a PG extension. > > Is it possible to add custom accessors to that type -much like jsonb does- > but use an API/hook without touching the core PG grammar & parser? Unfortunately no. > Hypothetical Examples: > > Assuming I have a TextFile type I’d like to implement syntax like: > > (‘/home/me/a.txt’::TextFile).firstline > (‘/home/me/a.txt’::TextFile).lastline > (‘/home/me/a.txt’::TextFile).countlines() > (‘/home/me/a.txt’::TextFile).size() > (‘/home/me/a.txt’::TextFile).datemodified() Maybe you could rely on some old grammar hack to have something a bit similar, as (expr).funcname is an alias for funcname(expr). For instance: # create function f1(int) returns text as $$ begin return 'val: ' || $1::text; end; $$ language plpgsql; # create table t as select 1 as id; # select (5).f1, (id).f1 from t; f1 | f1 --------+-------- val: 5 | val: 1 (1 row) I don't know if that would be enough for you needs. Otherwise, the only option would be tocreate an operator instead, like mytype -> 'myaccessor' or something like that.