mirror of
https://git.postgresql.org/git/postgresql.git
synced 2024-10-02 19:36:52 +02:00
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:
parent
2b088c8e4a
commit
1fa9241bdd
@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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;
|
||||||
|
|
||||||
|
@ -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);
|
||||||
|
Loading…
Reference in New Issue
Block a user