On Wed, Feb 8, 2012 at 12:19 PM, Chetan Suttraway <
chetan.suttra...@enterprisedb.com> wrote:

>
>
> On Wed, Feb 8, 2012 at 8:15 AM, Robert Haas <robertmh...@gmail.com> wrote:
>
>> On Tue, Feb 7, 2012 at 4:25 PM, Peter Eisentraut <pete...@gmx.net> wrote:
>> > On ons, 2012-02-01 at 15:53 +0530, Chetan Suttraway wrote:
>> >> This is regarding the TODO item :
>> >> "Add SPI_gettypmod() to return a field's typemod from a TupleDesc"
>> >
>> > My first thought was, this should be spelled SPI_gettypmod().  Not sure
>> > what others think.
>>
>> +1.
>>
>>
> The reason for using SPI_gettypemod() name was that I did see
> SPI_gettypeid().
>
> Anyways, will update patch with recommended name.
>
>
> Regards,
> Chetan
>
>
>
Please refer the attached patch  which now uses SPI_gettypmod() name.

Regards,
Chetan

-- 
EnterpriseDB Corporation
The Enterprise PostgreSQL Company

 Website: www.enterprisedb.com
EnterpriseDB Blog : http://blogs.enterprisedb.com
Follow us on Twitter : http://www.twitter.com/enterprisedb
diff --git a/src/backend/executor/spi.c b/src/backend/executor/spi.c
index 81f284c..1f4632e 100644
--- a/src/backend/executor/spi.c
+++ b/src/backend/executor/spi.c
@@ -955,6 +955,24 @@ SPI_gettypeid(TupleDesc tupdesc, int fnumber)
 		return (SystemAttributeDefinition(fnumber, true))->atttypid;
 }
 
+int4
+SPI_gettypmod(TupleDesc tupdesc, int fnumber)
+{
+	SPI_result = 0;
+
+	if (fnumber > tupdesc->natts || fnumber == 0 ||
+		fnumber <= FirstLowInvalidHeapAttributeNumber)
+	{
+		SPI_result = SPI_ERROR_NOATTRIBUTE;
+		return -1;
+	}
+
+	if (fnumber > 0)
+		return tupdesc->attrs[fnumber - 1]->atttypmod;
+	else
+		return (SystemAttributeDefinition(fnumber, true))->atttypmod;
+}
+
 char *
 SPI_getrelname(Relation rel)
 {
diff --git a/src/include/executor/spi.h b/src/include/executor/spi.h
index cfbaa14..dedb1c7 100644
--- a/src/include/executor/spi.h
+++ b/src/include/executor/spi.h
@@ -113,6 +113,7 @@ extern char *SPI_getvalue(HeapTuple tuple, TupleDesc tupdesc, int fnumber);
 extern Datum SPI_getbinval(HeapTuple tuple, TupleDesc tupdesc, int fnumber, bool *isnull);
 extern char *SPI_gettype(TupleDesc tupdesc, int fnumber);
 extern Oid	SPI_gettypeid(TupleDesc tupdesc, int fnumber);
+extern int4 SPI_gettypmod(TupleDesc tupdesc, int fnumber);
 extern char *SPI_getrelname(Relation rel);
 extern char *SPI_getnspname(Relation rel);
 extern void *SPI_palloc(Size size);
-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers

Reply via email to