diff --git a/src/backend/executor/spi.c b/src/backend/executor/spi.c
index 646cfca401aa77730d749503830fd42d054c9b00..16a8ee3212834d9eaf1d76259af1833e798d2151 100644
--- a/src/backend/executor/spi.c
+++ b/src/backend/executor/spi.c
@@ -414,7 +414,10 @@ SPI_getvalue(HeapTuple tuple, TupleDesc tupdesc, int fnumber)
 
 	SPI_result = 0;
 	if (tuple->t_natts < fnumber || fnumber <= 0)
+	{
+		SPI_result = SPI_ERROR_NOATTRIBUTE;
 		return (NULL);
+	}
 
 	val = heap_getattr(tuple, InvalidBuffer, fnumber, tupdesc, &isnull);
 	if (isnull)
@@ -437,7 +440,10 @@ SPI_getbinval(HeapTuple tuple, TupleDesc tupdesc, int fnumber, bool * isnull)
 	*isnull = true;
 	SPI_result = 0;
 	if (tuple->t_natts < fnumber || fnumber <= 0)
+	{
+		SPI_result = SPI_ERROR_NOATTRIBUTE;
 		return ((Datum) NULL);
+	}
 
 	val = heap_getattr(tuple, InvalidBuffer, fnumber, tupdesc, isnull);