diff --git a/doc/src/sgml/ref/alter_table.sgml b/doc/src/sgml/ref/alter_table.sgml index 5d352abf991..c062a36880d 100644 --- a/doc/src/sgml/ref/alter_table.sgml +++ b/doc/src/sgml/ref/alter_table.sgml @@ -1154,9 +1154,12 @@ WITH ( MODULUS numeric_literal, REM The new partitions will be created the same as tables created with the - SQL command CREATE TABLE partition_nameN (LIKE name INCLUDING ALL EXCLUDING INDEXES EXCLUDING IDENTITY). + SQL command CREATE TABLE partition_nameN (LIKE name INCLUDING ALL EXCLUDING INDEXES EXCLUDING IDENTITY EXCLUDING STATISTICS). The indexes and identity are created later, after moving the data into the new partitions. + Extended statistics aren't copied from the parent table, for consistency with + CREATE TABLE PARTITION OF. + New partitions will have the same table access method as the parent. If the parent table is persistent then new partitions are created persistent. If the parent table is temporary then new partitions @@ -1224,9 +1227,11 @@ WITH ( MODULUS numeric_literal, REM The new partition will be created the same as a table created with the - SQL command CREATE TABLE partition_name (LIKE name INCLUDING ALL EXCLUDING INDEXES EXCLUDING IDENTITY). + SQL command CREATE TABLE partition_name (LIKE name INCLUDING ALL EXCLUDING INDEXES EXCLUDING IDENTITY EXCLUDING STATISTICS). The indexes and identity are created later, after moving the data into the new partition. + Extended statistics aren't copied from the parent table, for consistency with + CREATE TABLE PARTITION OF. The new partition will have the same table access method as the parent. If the parent table is persistent then the new partition is created persistent. If the parent table is temporary then the new partition diff --git a/src/backend/commands/tablecmds.c b/src/backend/commands/tablecmds.c index 7a063ca8ae0..7b6c69b7a52 100644 --- a/src/backend/commands/tablecmds.c +++ b/src/backend/commands/tablecmds.c @@ -20269,7 +20269,7 @@ moveSplitTableRows(Relation rel, Relation splitRel, List *partlist, List *newPar * (newPartName) like table (modelRel) * * Emulates command: CREATE [TEMP] TABLE (LIKE - * INCLUDING ALL EXCLUDING INDEXES EXCLUDING IDENTITY) + * INCLUDING ALL EXCLUDING INDEXES EXCLUDING IDENTITY EXCLUDING STATISTICS) * * Also, this function sets the new partition access method same as parent * table access methods (similarly to CREATE TABLE ... PARTITION OF). It @@ -20313,9 +20313,11 @@ createPartitionTable(RangeVar *newPartName, Relation modelRel, /* * Indexes will be inherited on "attach new partitions" stage, after data - * moving. + * moving. We also don't copy the extended statistics for consistency + * with CREATE TABLE PARTITION OF. */ - tlc->options = CREATE_TABLE_LIKE_ALL & ~(CREATE_TABLE_LIKE_INDEXES | CREATE_TABLE_LIKE_IDENTITY); + tlc->options = CREATE_TABLE_LIKE_ALL & + ~(CREATE_TABLE_LIKE_INDEXES | CREATE_TABLE_LIKE_IDENTITY | CREATE_TABLE_LIKE_STATISTICS); tlc->relationOid = InvalidOid; createStmt->tableElts = lappend(createStmt->tableElts, tlc);