28ae540d创建于 2024年10月31日历史提交
create user u_alter_disable password '1234@abcd';
grant all privileges to u_alter_disable;
create database db_alter_index_disable;
create database db_restore;
\c db_alter_index_disable
create table alter_index_disable (a int, b int);
create index func_idx_alter_index_disable on alter_index_disable(to_char(a));
alter index func_idx_alter_index_disable disable;
\! @abs_bindir@/gs_dump -p @portstring@ db_alter_index_disable -f @abs_bindir@/dump -F c -w > @abs_bindir@/gs_dump_alter_disable.log 2>&1 ; echo $?
0
\! @abs_bindir@/gs_restore -h 127.0.0.1 -p @portstring@ -U u_alter_disable -W 1234@abcd -d db_restore -F c @abs_bindir@/dump > @abs_bindir@/gs_dump_alter_disable.log 2>&1 ; echo $?
0
\c db_restore
-- the function-based index `func_idx_alter_index_disable` was disabled
explain (costs off) select * from alter_index_disable where to_char(a) = '1';
                           QUERY PLAN                            
-----------------------------------------------------------------
 Seq Scan on alter_index_disable
   Filter: (((int4out(a))::character varying)::text = '1'::text)
(2 rows)

alter index func_idx_alter_index_disable enable;
explain (costs off) select * from alter_index_disable where to_char(a) = '1';
                                QUERY PLAN                                 
---------------------------------------------------------------------------
 Bitmap Heap Scan on alter_index_disable
   Recheck Cond: (((int4out(a))::character varying)::text = '1'::text)
   ->  Bitmap Index Scan on func_idx_alter_index_disable
         Index Cond: (((int4out(a))::character varying)::text = '1'::text)
(4 rows)

\c postgres
drop database db_alter_index_disable;
drop database db_restore;