From 2720347760b843ed6dc870270df0e8b43a1aab93 Mon Sep 17 00:00:00 2001 From: Peter Eisentraut Date: Thu, 22 Jun 2023 14:17:34 +0200 Subject: [PATCH 04/17] Make more use of makeColumnDef() Since we already have it, we might as well make full use of it, instead of assembling ColumnDef by hand in several places. --- src/backend/commands/sequence.c | 29 +++++++---------------- src/backend/commands/tablecmds.c | 14 +---------- src/backend/parser/parse_utilcmd.c | 37 ++++++------------------------ 3 files changed, 16 insertions(+), 64 deletions(-) diff --git a/src/backend/commands/sequence.c b/src/backend/commands/sequence.c index ef01449678..c6fea33676 100644 --- a/src/backend/commands/sequence.c +++ b/src/backend/commands/sequence.c @@ -172,40 +172,27 @@ DefineSequence(ParseState *pstate, CreateSeqStmt *seq) stmt->tableElts = NIL; for (i = SEQ_COL_FIRSTCOL; i <= SEQ_COL_LASTCOL; i++) { - ColumnDef *coldef = makeNode(ColumnDef); - - coldef->inhcount = 0; - coldef->is_local = true; - coldef->is_not_null = true; - coldef->is_from_type = false; - coldef->storage = 0; - coldef->raw_default = NULL; - coldef->cooked_default = NULL; - coldef->collClause = NULL; - coldef->collOid = InvalidOid; - coldef->constraints = NIL; - coldef->location = -1; - - null[i - 1] = false; + ColumnDef *coldef; switch (i) { case SEQ_COL_LASTVAL: - coldef->typeName = makeTypeNameFromOid(INT8OID, -1); - coldef->colname = "last_value"; + coldef = makeColumnDef("last_value", INT8OID, -1, InvalidOid); value[i - 1] = Int64GetDatumFast(seqdataform.last_value); break; case SEQ_COL_LOG: - coldef->typeName = makeTypeNameFromOid(INT8OID, -1); - coldef->colname = "log_cnt"; + coldef = makeColumnDef("log_cnt", INT8OID, -1, InvalidOid); value[i - 1] = Int64GetDatum((int64) 0); break; case SEQ_COL_CALLED: - coldef->typeName = makeTypeNameFromOid(BOOLOID, -1); - coldef->colname = "is_called"; + coldef = makeColumnDef("is_called", BOOLOID, -1, InvalidOid); value[i - 1] = BoolGetDatum(false); break; } + + coldef->is_not_null = true; + null[i - 1] = false; + stmt->tableElts = lappend(stmt->tableElts, coldef); } diff --git a/src/backend/commands/tablecmds.c b/src/backend/commands/tablecmds.c index a5493705aa..a6482a6d72 100644 --- a/src/backend/commands/tablecmds.c +++ b/src/backend/commands/tablecmds.c @@ -2677,27 +2677,15 @@ MergeAttributes(List *schema, List *supers, char relpersistence, /* * No, create a new inherited column */ - def = makeNode(ColumnDef); - def->colname = pstrdup(attributeName); - def->typeName = makeTypeNameFromOid(attribute->atttypid, - attribute->atttypmod); + def = makeColumnDef(attributeName, attribute->atttypid, attribute->atttypmod, attribute->attcollation); def->inhcount = 1; def->is_local = false; def->is_not_null = attribute->attnotnull; - def->is_from_type = false; def->storage = attribute->attstorage; - def->raw_default = NULL; - def->cooked_default = NULL; def->generated = attribute->attgenerated; - def->collClause = NULL; - def->collOid = attribute->attcollation; - def->constraints = NIL; - def->location = -1; if (CompressionMethodIsValid(attribute->attcompression)) def->compression = pstrdup(GetCompressionMethodName(attribute->attcompression)); - else - def->compression = NULL; inhSchema = lappend(inhSchema, def); newattmap->attnums[parent_attno - 1] = ++child_attno; } diff --git a/src/backend/parser/parse_utilcmd.c b/src/backend/parser/parse_utilcmd.c index d67580fc77..53420306ec 100644 --- a/src/backend/parser/parse_utilcmd.c +++ b/src/backend/parser/parse_utilcmd.c @@ -1019,7 +1019,6 @@ transformTableLikeClause(CreateStmtContext *cxt, TableLikeClause *table_like_cla { Form_pg_attribute attribute = TupleDescAttr(tupleDesc, parent_attno - 1); - char *attributeName = NameStr(attribute->attname); ColumnDef *def; /* @@ -1029,26 +1028,15 @@ transformTableLikeClause(CreateStmtContext *cxt, TableLikeClause *table_like_cla continue; /* - * Create a new column, which is marked as NOT inherited. - * + * Create a new column definition + */ + def = makeColumnDef(NameStr(attribute->attname), attribute->atttypid, attribute->atttypmod, attribute->attcollation); + + /* * For constraints, ONLY the NOT NULL constraint is inherited by the * new column definition per SQL99. */ - def = makeNode(ColumnDef); - def->colname = pstrdup(attributeName); - def->typeName = makeTypeNameFromOid(attribute->atttypid, - attribute->atttypmod); - def->inhcount = 0; - def->is_local = true; def->is_not_null = attribute->attnotnull; - def->is_from_type = false; - def->storage = 0; - def->raw_default = NULL; - def->cooked_default = NULL; - def->collClause = NULL; - def->collOid = attribute->attcollation; - def->constraints = NIL; - def->location = -1; /* * Add to column list @@ -1476,20 +1464,9 @@ transformOfType(CreateStmtContext *cxt, TypeName *ofTypename) if (attr->attisdropped) continue; - n = makeNode(ColumnDef); - n->colname = pstrdup(NameStr(attr->attname)); - n->typeName = makeTypeNameFromOid(attr->atttypid, attr->atttypmod); - n->inhcount = 0; - n->is_local = true; - n->is_not_null = false; + n = makeColumnDef(NameStr(attr->attname), attr->atttypid, attr->atttypmod, attr->attcollation); n->is_from_type = true; - n->storage = 0; - n->raw_default = NULL; - n->cooked_default = NULL; - n->collClause = NULL; - n->collOid = attr->attcollation; - n->constraints = NIL; - n->location = -1; + cxt->columns = lappend(cxt->columns, n); } ReleaseTupleDesc(tupdesc); -- 2.41.0