mirror of https://github.com/citusdata/citus.git
Add support for SET ACCESS METHOD in altering a distributed table (#6525)
Co-authored-by: TsinghuaLucky912 <postgres@localhost.localdomain>pull/6526/head
parent
c2193608c9
commit
29f0196fdf
|
@ -2992,6 +2992,9 @@ ErrorIfUnsupportedAlterTableStmt(AlterTableStmt *alterTableStatement)
|
|||
break;
|
||||
}
|
||||
|
||||
#if PG_VERSION_NUM >= PG_VERSION_15
|
||||
case AT_SetAccessMethod:
|
||||
#endif
|
||||
case AT_SetNotNull:
|
||||
case AT_ReplicaIdentity:
|
||||
case AT_ChangeOwner:
|
||||
|
@ -3007,6 +3010,7 @@ ErrorIfUnsupportedAlterTableStmt(AlterTableStmt *alterTableStatement)
|
|||
{
|
||||
/*
|
||||
* We will not perform any special check for:
|
||||
* ALTER TABLE .. SET ACCESS METHOD ..
|
||||
* ALTER TABLE .. ALTER COLUMN .. SET NOT NULL
|
||||
* ALTER TABLE .. REPLICA IDENTITY ..
|
||||
* ALTER TABLE .. VALIDATE CONSTRAINT ..
|
||||
|
|
|
@ -1456,6 +1456,36 @@ NOTICE: drop cascades to 2 other objects
|
|||
CREATE DATABASE db_with_oid OID 987654;
|
||||
NOTICE: Citus partially supports CREATE DATABASE for distributed databases
|
||||
DROP DATABASE db_with_oid;
|
||||
-- SET ACCESS METHOD
|
||||
-- Create a heap2 table am handler with heapam handler
|
||||
CREATE ACCESS METHOD heap2 TYPE TABLE HANDLER heap_tableam_handler;
|
||||
SELECT run_command_on_workers($$CREATE ACCESS METHOD heap2 TYPE TABLE HANDLER heap_tableam_handler$$);
|
||||
run_command_on_workers
|
||||
---------------------------------------------------------------------
|
||||
(localhost,57637,t,"CREATE ACCESS METHOD")
|
||||
(localhost,57638,t,"CREATE ACCESS METHOD")
|
||||
(2 rows)
|
||||
|
||||
CREATE TABLE mx_ddl_table2 (
|
||||
key int primary key,
|
||||
value int
|
||||
);
|
||||
SELECT create_distributed_table('mx_ddl_table2', 'key', 'hash', shard_count=> 4);
|
||||
create_distributed_table
|
||||
---------------------------------------------------------------------
|
||||
|
||||
(1 row)
|
||||
|
||||
ALTER TABLE mx_ddl_table2 SET ACCESS METHOD heap2;
|
||||
DROP TABLE mx_ddl_table2;
|
||||
DROP ACCESS METHOD heap2;
|
||||
SELECT run_command_on_workers($$DROP ACCESS METHOD heap2$$);
|
||||
run_command_on_workers
|
||||
---------------------------------------------------------------------
|
||||
(localhost,57637,t,"DROP ACCESS METHOD")
|
||||
(localhost,57638,t,"DROP ACCESS METHOD")
|
||||
(2 rows)
|
||||
|
||||
-- Clean up
|
||||
\set VERBOSITY terse
|
||||
SET client_min_messages TO ERROR;
|
||||
|
|
|
@ -924,6 +924,21 @@ DROP SERVER foreign_server CASCADE;
|
|||
CREATE DATABASE db_with_oid OID 987654;
|
||||
DROP DATABASE db_with_oid;
|
||||
|
||||
-- SET ACCESS METHOD
|
||||
-- Create a heap2 table am handler with heapam handler
|
||||
CREATE ACCESS METHOD heap2 TYPE TABLE HANDLER heap_tableam_handler;
|
||||
SELECT run_command_on_workers($$CREATE ACCESS METHOD heap2 TYPE TABLE HANDLER heap_tableam_handler$$);
|
||||
CREATE TABLE mx_ddl_table2 (
|
||||
key int primary key,
|
||||
value int
|
||||
);
|
||||
SELECT create_distributed_table('mx_ddl_table2', 'key', 'hash', shard_count=> 4);
|
||||
ALTER TABLE mx_ddl_table2 SET ACCESS METHOD heap2;
|
||||
|
||||
DROP TABLE mx_ddl_table2;
|
||||
DROP ACCESS METHOD heap2;
|
||||
SELECT run_command_on_workers($$DROP ACCESS METHOD heap2$$);
|
||||
|
||||
-- Clean up
|
||||
\set VERBOSITY terse
|
||||
SET client_min_messages TO ERROR;
|
||||
|
|
Loading…
Reference in New Issue