Re: pgsql: Implement operator class parameters

Поиск
Список
Период
Сортировка
От Andres Freund
Тема Re: pgsql: Implement operator class parameters
Дата
Msg-id 20200330183614.qrfi7zipcqiztpti@alap3.anarazel.de
обсуждение исходный текст
Ответ на pgsql: Implement operator class parameters  (Alexander Korotkov <akorotkov@postgresql.org>)
Ответы Re: pgsql: Implement operator class parameters
Список pgsql-committers
Hi,

On 2020-03-30 16:17:53 +0000, Alexander Korotkov wrote:
> Implement operator class parameters
> 
> PostgreSQL provides set of template index access methods, where opclasses have
> much freedom in the semantics of indexing.  These index AMs are GiST, GIN,
> SP-GiST and BRIN.  There opclasses define representation of keys, operations on
> them and supported search strategies.  So, it's natural that opclasses may be
> faced some tradeoffs, which require user-side decision.  This commit implements
> opclass parameters allowing users to set some values, which tell opclass how to
> index the particular dataset.
> 
> This commit doesn't introduce new storage in system catalog.  Instead it uses
> pg_attribute.attoptions, which is used for table column storage options but
> unused for index attributes.
> 
> In order to evade changing signature of each opclass support function, we
> implement unified way to pass options to opclass support functions.  Options
> are set to fn_expr as the constant bytea expression.  It's possible due to the
> fact that opclass support functions are executed outside of expressions, so
> fn_expr is unused for them.
> 
> This commit comes with some examples of opclass options usage.  We parametrize
> signature length in GiST.  That applies to multiple opclasses: tsvector_ops,
> gist__intbig_ops, gist_ltree_ops, gist__ltree_ops, gist_trgm_ops and
> gist_hstore_ops.  Also we parametrize maximum number of integer ranges for
> gist__int_ops.  However, the main future usage of this feature is expected
> to be json, where users would be able to specify which way to index particular
> json parts.
> 
> Catversion is bumped.
> 
> Discussion: https://postgr.es/m/d22c3a18-31c7-1879-fc11-4c1ce2f5e5af%40postgrespro.ru
> Author: Nikita Glukhov, revised by me
> Reviwed-by: Nikolay Shaplov, Robert Haas, Tom Lane, Tomas Vondra, Alvaro Herrera

This triggers a few new (harmless) warnings for me:
In file included from /home/andres/src/postgresql/src/include/postgres.h:46,
                 from /home/andres/src/postgresql/src/backend/access/index/indexam.c:44:
/home/andres/src/postgresql/src/backend/access/index/indexam.c: In function ‘index_getprocid’:
/home/andres/src/postgresql/src/backend/access/index/indexam.c:782:17: warning: comparison is always true due to
limitedrange of data type [-Wtype-limits]
 
  782 |  Assert(procnum >= 0 && procnum <= (uint16) nproc);
      |                 ^~
/home/andres/src/postgresql/src/backend/access/index/indexam.c:782:2: note: in expansion of macro ‘Assert’
  782 |  Assert(procnum >= 0 && procnum <= (uint16) nproc);
      |  ^~~~~~
/home/andres/src/postgresql/src/backend/access/index/indexam.c: In function ‘index_getprocinfo’:
/home/andres/src/postgresql/src/backend/access/index/indexam.c:818:17: warning: comparison is always true due to
limitedrange of data type [-Wtype-limits]
 
  818 |  Assert(procnum >= 0 && procnum <= (uint16) nproc);
      |                 ^~
/home/andres/src/postgresql/src/include/c.h:782:9: note: in definition of macro ‘Assert’
  782 |   if (!(condition)) \
      |         ^~~~~~~~~
PostgreSQL installation complete.

Greetings,

Andres Freund



В списке pgsql-committers по дате отправления:

Предыдущее
От: Alexander Korotkov
Дата:
Сообщение: pgsql: Implement operator class parameters
Следующее
От: Peter Geoghegan
Дата:
Сообщение: pgsql: Consistently truncate non-key suffix columns.