pg.ddx.io  pgsql-hackers@postgresql.org mailing list archive  
help / color / mirror / Atom feed
From: Tom Lane <tgl@sss.pgh.pa.us>
To: Jeff Davis <pgsql@j-davis.com>
Cc: Corey Huinker <corey.huinker@gmail.com>
Cc: Magnus Hagander <magnus@hagander.net>
Cc: Stephen Frost <sfrost@snowman.net>
Cc: Ashutosh Bapat <ashutosh.bapat.oss@gmail.com>
Cc: Matthias van de Meent <boekewurm+postgres@gmail.com>
Cc: Peter Smith <smithpb2250@gmail.com>
Cc: PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>
Cc: Tomas Vondra <tomas.vondra@enterprisedb.com>
Subject: Re: Statistics Import and Export
Date: Tue, 02 Apr 2024 17:31:07 -0400
Message-ID: <1841621.1712093467@sss.pgh.pa.us> (raw)
In-Reply-To: <95a34a5131611e1a987a6fe538a441c33ca52842.camel@j-davis.com>
References: <Zei1xMGH8SJS9yoc@tamriel.snowman.net>
	<54f190b6c757da2a33cce811949e9dd9601fcba7.camel@j-davis.com>
	<1632327b74a734f8c434eb75e824160d2b06a697.camel@j-davis.com>
	<CADkLM=dOUfTtpmE70mx5SmdEs11hic61G-wPa45pB1iC3NRABg@mail.gmail.com>
	<16412b8b7ae443cb7470006beff3011927048860.camel@j-davis.com>
	<CADkLM=cq1n2wbxhV23pOeUKReBPZxZyELDsDJ3VAxkYBSVAe0g@mail.gmail.com>
	<CADkLM=d_WYoFq75eoNHso+9EFDi=Q2BtCmxQYMjrgLL4=v5dxw@mail.gmail.com>
	<1b1bd1ec39ab3de09a17bf7b241021067e5bd63c.camel@j-davis.com>
	<CADkLM=eJXPQD=pWwwm+4Y48haiMmznB8dCECNMrwr59niY8ESw@mail.gmail.com>
	<2bce855db8259c5672a09f863a307ca07b967b68.camel@j-davis.com>
	<CADkLM=dw=fkvPRmOw74UDYnLzXwkDyMSY1k2jsU5=xXBAj7Mpw@mail.gmail.com>
	<5e94c358caedf2a231dd71624c3578db7227a265.camel@j-davis.com>
	<CADkLM=dztWa9shWHyq=+rS9KvbZQ2v54tnOcYT+g8psf0B7w_A@mail.gmail.com>
	<CADkLM=fFwkd7VbO4SPCyX-2f-fyGraka5J+5fcp1QMrCefu68Q@mail.gmail.com>
	<CADkLM=cioQmOFh98qQmqVEkVPjLYszEhZtNtUbmmNAdHOSr3WQ@mail.gmail.com>
	<CAOuzzgpfm9hROr_g8L! ouvpOeqv4yxk3qXPXU9Sn2nnqzPpP5UA@mail.gmail.com>
	<718fa933c2c58d0ecc61995ab5c7ca1fe78d6369.camel@j-davis.com>
	<CADkLM=f9FOu9Z2GT1cbtRaffDvtXyUOuv2HMVw0=phYe2T2D9w@mail.gmail.com>
	<CABUevEz1gLOkWSh_Vd9LQh-JM4i=Mu7PVT9ffc77TmH0Zh3TzA@mail.gmail.com>
	<CADkLM=dTY5bkMB4WO0aTYEOP=re0_QjWfYyPd-A5-BvEQdn9cA@mail.gmail.com>
	<790773.1711910899@sss.pgh.pa.us>
	<8bc6ffe1e5abeac0fdde1a83d95409f0463af013.camel@j-davis.com>
	<1141637.1711994977@sss.pgh.pa.us>
	<CADkLM=f+29F1csUZ=7ic0dPwQgV2C1NJycb8A-rk8GQkxC=Jwg@mail.gmail.com>
	<1215956.1711999455@sss.pgh.pa.us>
	<CADkLM=crgW-p8EpR2QLnmRC7axFXeW-2QbKSb4jpuwoCaYqDEA@mail.gmail.com>
	<1321788.1712005745@sss.pgh.pa.us>
	<CADkLM=fpbw6EC3hW4N-RxwxMcNBH8F+M6atyiOapL-PkgfWZCg@mail.gmail.com>
	<1328631.1712008078@sss.pgh.pa.us>
	<CADkLM=daPdFB8V0tgFxK-dLowFsAEzWRWJHyxij7BG3kBjcouA@mail.gmail.com>
	<7d37175cd5b56ab04940ed6b5a72354ae90783ee.camel@j-davis.com>
	<CADkLM=dFrHKkMeBKwFJz4FsC0vTDmjoc3iy-+cfL=XKBAY5UjA@mail.gmail.com>
	<95a34a5131611e1a987a6fe538a44! 1c33ca52842.camel@j-davis.com>

Jeff Davis <pgsql@j-davis.com> writes:
> On the export side, the problem is that the element type (and
> dimensionality and maybe hasnull) is an important part of the anyarray
> value, but it's not part of the output of anyarray_out(). For new
> versions, we can add a scalar function that simply outputs the
> information we need. For old versions, we can hack it by parsing the
> output of anyarray_send(), which contains the information we need
> (binary outputs are under-specified, but I believe they are specified
> enough in this case).

Yeah, I was thinking yesterday about pulling the anyarray columns in
binary and looking at the header fields.  However, I fear there is a
showstopper problem: anyarray_send will fail if the element type
doesn't have a typsend function, which is entirely possible for
user-defined types (and I'm not even sure we've provided them for
every type in the core distro).  I haven't thought of a good answer
to that other than a new backend function.  However ...

> On the import side, the problem is that there may not be an input
> function to go from a 1-D array of text to a 1-D array of any element
> type we want. For example, there's no input function that will create a
> 1-D array with element type float4[] (that's because Postgres doesn't
> really have arrays-of-arrays, it has multi-dimensional arrays).
> Instead, don't use the input function, pass each element of the 1-D
> text array to the element type's input function (which may be scalar or
> not) and then construct a 1-D array out of that with the appropriate
> element type (which may be scalar or not).

Yup.  I had hoped that we could avoid doing any array-munging inside
pg_set_attribute_stats, but this array-of-arrays problem seems to
mean we have to.  In turn, that means that the whole idea of
declaring the function inputs as anyarray rather than text[] is
probably pointless.  And that means that we don't need the sending
side to know the element type anyway.  So, I apologize for sending
us down a useless side path.  We may as well stick to the function
signature as shown in the v15 patch --- although maybe variadic
any is still worthwhile so that an unrecognized field name doesn't
need to be a hard error?

			regards, tom lane





view thread (543+ messages)  latest in thread

Message-ID: <1841621.1712093467@sss.pgh.pa.us>
Permalink:  ../1841621.1712093467@sss.pgh.pa.us/
Also on:    postgresql.org/message-id/1841621.1712093467@sss.pgh.pa.us

 · 

reply

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Reply to all the recipients using the --to and --cc options:
  reply via email

  To: pgsql-hackers@postgresql.org
  Cc: tgl@sss.pgh.pa.us, pgsql@j-davis.com, corey.huinker@gmail.com, magnus@hagander.net, sfrost@snowman.net, ashutosh.bapat.oss@gmail.com, boekewurm+postgres@gmail.com, smithpb2250@gmail.com, pgsql-hackers@lists.postgresql.org, tomas.vondra@enterprisedb.com
  Subject: Re: Statistics Import and Export
  In-Reply-To: <1841621.1712093467@sss.pgh.pa.us>

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

This inbox is served by DDX for PostgreSQL; see mirroring instructions
for how to clone and mirror all data and code used for this inbox