summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Eisentraut2023-08-29 06:41:04 +0000
committerPeter Eisentraut2023-08-29 06:45:05 +0000
commit1fa9241bdd0e44d2b602b2dd4b6f0a4d0d402e76 (patch)
tree0976faaea29bd6201d07b067ed4db9d14bbbe5c9
parent2b088c8e4a2c9879d2f37fa4b38ae925184cea64 (diff)
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. Reviewed-by: Alvaro Herrera <[email protected]> Discussion: https://www.postgresql.org/message-id/flat/[email protected]
-rw-r--r--src/backend/commands/sequence.c29
-rw-r--r--src/backend/commands/tablecmds.c15
-rw-r--r--src/backend/parser/parse_utilcmd.c40
3 files changed, 19 insertions, 65 deletions
diff --git a/src/backend/commands/sequence.c b/src/backend/commands/sequence.c
index ef1b8a92f2..0b0003fcc8 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 2ac6f8b334..a8c40ace10 100644
--- a/src/backend/commands/tablecmds.c
+++ b/src/backend/commands/tablecmds.c
@@ -2755,10 +2755,8 @@ 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;
/* mark attnotnull if parent has it and it's not NO INHERIT */
@@ -2766,20 +2764,11 @@ MergeAttributes(List *schema, List *supers, char relpersistence,
bms_is_member(parent_attno - FirstLowInvalidHeapAttributeNumber,
pkattrs))
def->is_not_null = true;
- 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 bab7b87fe8..55c315f0e2 100644
--- a/src/backend/parser/parse_utilcmd.c
+++ b/src/backend/parser/parse_utilcmd.c
@@ -1066,7 +1066,6 @@ transformTableLikeClause(CreateStmtContext *cxt, TableLikeClause *table_like_cla
{
Form_pg_attribute attribute = TupleDescAttr(tupleDesc,
parent_attno - 1);
- char *attributeName = NameStr(attribute->attname);
ColumnDef *def;
/*
@@ -1076,29 +1075,18 @@ 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; however we cannot do that
* correctly here, so we leave it for expandTableLikeClause to handle.
*/
- 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 = false;
if (attribute->attnotnull)
process_notnull_constraints = true;
- 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
@@ -1635,20 +1623,10 @@ 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);