From ad4932955c855d056cb0df96a5d55931678f1819 Mon Sep 17 00:00:00 2001
From: Nishant Sharma <nishant.sharma@enterprisedb.com>
Date: Wed, 14 Aug 2024 16:45:52 +0530
Subject: [PATCH v1 1/2] Disallow empty Foreign Table column option name i.e
 (column_name '').

---
 src/backend/commands/tablecmds.c | 16 ++++++++++++++++
 1 file changed, 16 insertions(+)

diff --git a/src/backend/commands/tablecmds.c b/src/backend/commands/tablecmds.c
index 0b2a524..ff8d6ba 100644
--- a/src/backend/commands/tablecmds.c
+++ b/src/backend/commands/tablecmds.c
@@ -14214,10 +14214,26 @@ ATExecAlterColumnGenericOptions(Relation rel,
 	Form_pg_attribute atttableform;
 	AttrNumber	attnum;
 	ObjectAddress address;
+	ListCell   *lc;
 
 	if (options == NIL)
 		return InvalidObjectAddress;
 
+	foreach(lc, options)
+	{
+		DefElem    *def = (DefElem *) lfirst(lc);
+
+		if (strcmp(def->defname, "column_name") == 0)
+		{
+			char	   *gen_col_opt = defGetString(def);
+
+			if (gen_col_opt && gen_col_opt[0] == '\0')
+				ereport(ERROR,
+						(errcode(ERRCODE_INVALID_PARAMETER_VALUE),
+						 errmsg("column generic option name cannot be empty")));
+		}
+	}
+
 	/* First, determine FDW validator associated to the foreign table. */
 	ftrel = table_open(ForeignTableRelationId, AccessShareLock);
 	tuple = SearchSysCache1(FOREIGNTABLEREL, ObjectIdGetDatum(rel->rd_id));
-- 
1.8.3.1

