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 <alvherre@alvh.no-ip.org>
Discussion: https://www.postgresql.org/message-id/flat/52a125e4-ff9a-95f5-9f61-b87cf447e4da@eisentraut.org
This commit is contained in:
Peter Eisentraut 2023-08-29 08:41:04 +02:00
parent 2b088c8e4a
commit 1fa9241bdd
3 changed files with 19 additions and 65 deletions

View File

@ -172,40 +172,27 @@ DefineSequence(ParseState *pstate, CreateSeqStmt *seq)
stmt->tableElts = NIL; stmt->tableElts = NIL;
for (i = SEQ_COL_FIRSTCOL; i <= SEQ_COL_LASTCOL; i++) for (i = SEQ_COL_FIRSTCOL; i <= SEQ_COL_LASTCOL; i++)
{ {
ColumnDef *coldef = makeNode(ColumnDef); ColumnDef *coldef;
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;
switch (i) switch (i)
{ {
case SEQ_COL_LASTVAL: case SEQ_COL_LASTVAL:
coldef->typeName = makeTypeNameFromOid(INT8OID, -1); coldef = makeColumnDef("last_value", INT8OID, -1, InvalidOid);
coldef->colname = "last_value";
value[i - 1] = Int64GetDatumFast(seqdataform.last_value); value[i - 1] = Int64GetDatumFast(seqdataform.last_value);
break; break;
case SEQ_COL_LOG: case SEQ_COL_LOG:
coldef->typeName = makeTypeNameFromOid(INT8OID, -1); coldef = makeColumnDef("log_cnt", INT8OID, -1, InvalidOid);
coldef->colname = "log_cnt";
value[i - 1] = Int64GetDatum((int64) 0); value[i - 1] = Int64GetDatum((int64) 0);
break; break;
case SEQ_COL_CALLED: case SEQ_COL_CALLED:
coldef->typeName = makeTypeNameFromOid(BOOLOID, -1); coldef = makeColumnDef("is_called", BOOLOID, -1, InvalidOid);
coldef->colname = "is_called";
value[i - 1] = BoolGetDatum(false); value[i - 1] = BoolGetDatum(false);
break; break;
} }
coldef->is_not_null = true;
null[i - 1] = false;
stmt->tableElts = lappend(stmt->tableElts, coldef); stmt->tableElts = lappend(stmt->tableElts, coldef);
} }

View File

@ -2755,10 +2755,8 @@ MergeAttributes(List *schema, List *supers, char relpersistence,
/* /*
* No, create a new inherited column * No, create a new inherited column
*/ */
def = makeNode(ColumnDef); def = makeColumnDef(attributeName, attribute->atttypid,
def->colname = pstrdup(attributeName); attribute->atttypmod, attribute->attcollation);
def->typeName = makeTypeNameFromOid(attribute->atttypid,
attribute->atttypmod);
def->inhcount = 1; def->inhcount = 1;
def->is_local = false; def->is_local = false;
/* mark attnotnull if parent has it and it's not NO INHERIT */ /* 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, bms_is_member(parent_attno - FirstLowInvalidHeapAttributeNumber,
pkattrs)) pkattrs))
def->is_not_null = true; def->is_not_null = true;
def->is_from_type = false;
def->storage = attribute->attstorage; def->storage = attribute->attstorage;
def->raw_default = NULL;
def->cooked_default = NULL;
def->generated = attribute->attgenerated; def->generated = attribute->attgenerated;
def->collClause = NULL;
def->collOid = attribute->attcollation;
def->constraints = NIL;
def->location = -1;
if (CompressionMethodIsValid(attribute->attcompression)) if (CompressionMethodIsValid(attribute->attcompression))
def->compression = def->compression =
pstrdup(GetCompressionMethodName(attribute->attcompression)); pstrdup(GetCompressionMethodName(attribute->attcompression));
else
def->compression = NULL;
inhSchema = lappend(inhSchema, def); inhSchema = lappend(inhSchema, def);
newattmap->attnums[parent_attno - 1] = ++child_attno; newattmap->attnums[parent_attno - 1] = ++child_attno;

View File

@ -1066,7 +1066,6 @@ transformTableLikeClause(CreateStmtContext *cxt, TableLikeClause *table_like_cla
{ {
Form_pg_attribute attribute = TupleDescAttr(tupleDesc, Form_pg_attribute attribute = TupleDescAttr(tupleDesc,
parent_attno - 1); parent_attno - 1);
char *attributeName = NameStr(attribute->attname);
ColumnDef *def; ColumnDef *def;
/* /*
@ -1076,29 +1075,18 @@ transformTableLikeClause(CreateStmtContext *cxt, TableLikeClause *table_like_cla
continue; 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 * For constraints, ONLY the not-null constraint is inherited by the
* new column definition per SQL99; however we cannot do that * new column definition per SQL99; however we cannot do that
* correctly here, so we leave it for expandTableLikeClause to handle. * 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) if (attribute->attnotnull)
process_notnull_constraints = true; 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 * Add to column list
@ -1635,20 +1623,10 @@ transformOfType(CreateStmtContext *cxt, TypeName *ofTypename)
if (attr->attisdropped) if (attr->attisdropped)
continue; continue;
n = makeNode(ColumnDef); n = makeColumnDef(NameStr(attr->attname), attr->atttypid,
n->colname = pstrdup(NameStr(attr->attname)); attr->atttypmod, attr->attcollation);
n->typeName = makeTypeNameFromOid(attr->atttypid, attr->atttypmod);
n->inhcount = 0;
n->is_local = true;
n->is_not_null = false;
n->is_from_type = true; 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); cxt->columns = lappend(cxt->columns, n);
} }
ReleaseTupleDesc(tupdesc); ReleaseTupleDesc(tupdesc);