Re: support create index on virtual generated column. - Mailing list pgsql-hackers

From ZizhuanLiu X-MAN
Subject Re: support create index on virtual generated column.
Date
Msg-id tencent_0C0B9EAACD88167CA2FCFBC2128B9AA1D105@qq.com
Whole thread
In response to support create index on virtual generated column.  (jian he <jian.universality@gmail.com>)
Responses Re: [PATCH] Remove obsolete LISTEN array growth isolation test
List pgsql-hackers
>Hi everyone,
>
>While revisiting the discussion for `CF6749 — Disallow whole-row index references with virtual generated columns? `
>Based on version V7, I’ve added support for whole-row references within partial indexes, attached V8 patch.
>
>There is one point I may have overlooked: the current implementation appears to only work for btree indexes.
>
>I welcome everyone’s thoughts and look forward to your feedback.
>
>Below are the test results:
>-- test creation of a predicate index with a whole-row expression
>DROP TABLE IF EXISTS test_pg_wholerow;
>NOTICE:  table "test_pg_wholerow" does not exist, skipping
>CREATE TABLE test_pg_wholerow(a int, b int GENERATED ALWAYS AS (a * 2) VIRTUAL, c text);
>CREATE UNIQUE INDEX test_pg_wholerow_pred_idx ON test_pg_wholerow(a) WHERE test_pg_wholerow IS NOT NULL;
>INSERT INTO test_pg_wholerow(a,c) SELECT NULL, NULL FROM generate_series(1, 1000);
>INSERT INTO test_pg_wholerow(a,c) SELECT 1, '1';
>ANALYZE test_pg_wholerow;
>SELECT relname,reltuples FROM pg_catalog.pg_class WHERE relname IN ('test_pg_wholerow', 'test_pg_wholerow_pred_idx')
ORDERBY OID; 
>          relname          | reltuples
>---------------------------+-----------
> test_pg_wholerow          |      1001
> test_pg_wholerow_pred_idx |         1
>(2 rows)
>
>EXPLAIN (COSTS OFF) SELECT *   FROM test_pg_wholerow WHERE test_pg_wholerow IS NOT NULL;
>                           QUERY PLAN
>----------------------------------------------------------------
> Index Scan using test_pg_wholerow_pred_idx on test_pg_wholerow
>(1 row)
>
>EXPLAIN (COSTS OFF) SELECT a   FROM test_pg_wholerow WHERE test_pg_wholerow IS NOT NULL;
>                             QUERY PLAN
>---------------------------------------------------------------------
> Index Only Scan using test_pg_wholerow_pred_idx on test_pg_wholerow
>(1 row)
>
>EXPLAIN (COSTS OFF) SELECT a,b FROM test_pg_wholerow WHERE test_pg_wholerow IS NOT NULL;
>                             QUERY PLAN
>---------------------------------------------------------------------
> Index Only Scan using test_pg_wholerow_pred_idx on test_pg_wholerow
>(1 row)
>
>
>regards,
>--
>ZizhuanLiu (X-MAN)
>44973863@qq.com


Hi, everyone

  Rebase V8 to V9.


regards,
--
ZizhuanLiu (X-MAN) 
44973863@qq.com
Attachment

pgsql-hackers by date:

Previous
From: Fujii Masao
Date:
Subject: Incorrect check in 037_except.pl?
Next
From: Christoph Berg
Date:
Subject: Re: Allow pg_read_all_stats to see database size in \l+