aboutsummaryrefslogtreecommitdiff
path: root/src/backend/access/common/tupdesc.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/backend/access/common/tupdesc.c')
-rw-r--r--src/backend/access/common/tupdesc.c25
1 files changed, 25 insertions, 0 deletions
diff --git a/src/backend/access/common/tupdesc.c b/src/backend/access/common/tupdesc.c
index 253d6c86f86..ce2c7bce856 100644
--- a/src/backend/access/common/tupdesc.c
+++ b/src/backend/access/common/tupdesc.c
@@ -927,3 +927,28 @@ BuildDescFromLists(const List *names, const List *types, const List *typmods, co
return desc;
}
+
+/*
+ * Get default expression (or NULL if none) for the given attribute number.
+ */
+Node *
+TupleDescGetDefault(TupleDesc tupdesc, AttrNumber attnum)
+{
+ Node *result = NULL;
+
+ if (tupdesc->constr)
+ {
+ AttrDefault *attrdef = tupdesc->constr->defval;
+
+ for (int i = 0; i < tupdesc->constr->num_defval; i++)
+ {
+ if (attrdef[i].adnum == attnum)
+ {
+ result = stringToNode(attrdef[i].adbin);
+ break;
+ }
+ }
+ }
+
+ return result;
+}