0004-Make-more-use-of-makeColumnDef.patch
text/plain
Filename: 0004-Make-more-use-of-makeColumnDef.patch
Type: text/plain
Part: 3
Patch
Format: format-patch
Series: patch 0004
Subject: Make more use of makeColumnDef()
| File | + | − |
|---|---|---|
| src/backend/commands/sequence.c | 8 | 21 |
| src/backend/commands/tablecmds.c | 1 | 13 |
| src/backend/parser/parse_utilcmd.c | 7 | 30 |
From 2720347760b843ed6dc870270df0e8b43a1aab93 Mon Sep 17 00:00:00 2001
From: Peter Eisentraut <peter@eisentraut.org>
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