Re: compress method for spgist - 2

Lists: pgsql-hackers
From: Teodor Sigaev <teodor(at)sigaev(dot)ru>
To: Pgsql Hackers <pgsql-hackers(at)postgresql(dot)org>
Subject: compress method for spgist - 2
Date: 2014-12-01 12:44:31
Message-ID: 547C62AF.2050207@sigaev.ru
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-hackers


Initial message:
http://www.postgresql.org/message-id/5447B3FF.2080406@sigaev.ru

Second version fixes a forgotten changes in pg_am.

--
Teodor Sigaev E-mail: teodor(at)sigaev(dot)ru
WWW: http://www.sigaev.ru/

Attachment Content-Type Size
spgist_compress_method-2.patch.gz application/x-gzip 1.7 KB

From: Heikki Linnakangas <hlinnakangas(at)vmware(dot)com>
To: Teodor Sigaev <teodor(at)sigaev(dot)ru>, Pgsql Hackers <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: compress method for spgist - 2
Date: 2014-12-05 13:23:48
Message-ID: 5481B1E4.60606@vmware.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-hackers

On 12/01/2014 02:44 PM, Teodor Sigaev wrote:
>
> Initial message:
> http://www.postgresql.org/message-id/5447B3FF.2080406@sigaev.ru
>
> Second version fixes a forgotten changes in pg_am.

> + /* Get the information we need about each relevant datatypes */
> +
> + if (OidIsValid(cache->config.leafType) && cache->config.leafType != atttype)
> + {
> + if (!OidIsValid(index_getprocid(index, 1, SPGIST_COMPRESS_PROC)))
> + ereport(ERROR,
> + (errcode(ERRCODE_INVALID_PARAMETER_VALUE),
> + errmsg("compress method is not defined although input and leaf types are differ")));
> +
> + fillTypeDesc(&cache->attType, cache->config.leafType);
> + }
> + else
> + {
> + fillTypeDesc(&cache->attType, atttype);
> + }
> +

For some datatypes, the compress method might be useful even if the leaf
type is the same as the column type. For example, you could allow
indexing text datums larger than the page size, with a compress function
that just truncates the input.

Could you find some use for this in one of the built-in or contrib
types? Just to have something that exercises it as part of the
regression suite. How about creating an opclass for the built-in polygon
type that stores the bounding box, like the PostGIS guys are doing?

The documentation needs to be updated.

- Heikki