Add SPI_gettypmod() fucntion
Hi hackers,
My name is Miguel Angel de Blas. I'm newbie and it's my first collaborationso I
hope it's correct ;-)
I created a function SPI_gettypmod:
int32 SPI_gettypmod(TupleDesc tupdesc, int fnumber);
Return -1 when type not need type-specific data or error.
ref TODO:
Add SPI_gettypmod() to return a field's typemod from a TupleDesc
- http://archives.postgresql.org/pgsql-hackers/2005-11/msg00250.php
Regards
Attachments:
SPI_gettypmod.patchapplication/octet-stream; name=SPI_gettypmod.patchDownload
*** a/doc/src/sgml/spi.sgml
--- b/doc/src/sgml/spi.sgml
***************
*** 3186,3191 **** Oid SPI_gettypeid(TupleDesc <parameter>rowdesc</parameter>, int <parameter>colnu
--- 3186,3257 ----
<!-- *********************************************** -->
+ <refentry id="spi-spi-gettypmod">
+ <refmeta>
+ <refentrytitle>SPI_gettypmod</refentrytitle>
+ <manvolnum>3</manvolnum>
+ </refmeta>
+
+ <refnamediv>
+ <refname>SPI_gettypmod</refname>
+ <refpurpose>return the type-specific data of the specified column</refpurpose>
+ </refnamediv>
+
+ <indexterm><primary>SPI_gettypmod</primary></indexterm>
+
+ <refsynopsisdiv>
+ <synopsis>
+ int32 SPI_gettypmod(TupleDesc <parameter>rowdesc</parameter>, int <parameter>colnumber</parameter>)
+ </synopsis>
+ </refsynopsisdiv>
+
+ <refsect1>
+ <title>Description</title>
+
+ <para>
+ <function>SPI_gettypmod</function> returns the
+ type-specific data of the data type of the specified column.
+ </para>
+ </refsect1>
+
+ <refsect1>
+ <title>Arguments</title>
+
+ <variablelist>
+ <varlistentry>
+ <term><literal>TupleDesc <parameter>rowdesc</parameter></literal></term>
+ <listitem>
+ <para>
+ input row description
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><literal>int <parameter>colnumber</parameter></literal></term>
+ <listitem>
+ <para>
+ column number (count starts at 1)
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+
+ <refsect1>
+ <title>Return Value</title>
+
+ <para>
+ The type-specific data of the data type of the specified column
+ or -1 for types that do not need type-specific data or error. On error,
+ <varname>SPI_result</varname> is set to
+ <symbol>SPI_ERROR_NOATTRIBUTE</symbol>.
+ </para>
+ </refsect1>
+ </refentry>
+
+ <!-- *********************************************** -->
+
<refentry id="spi-spi-getrelname">
<refmeta>
<refentrytitle>SPI_getrelname</refentrytitle>
*** a/src/backend/executor/spi.c
--- b/src/backend/executor/spi.c
***************
*** 958,963 **** SPI_gettypeid(TupleDesc tupdesc, int fnumber)
--- 958,981 ----
return (SystemAttributeDefinition(fnumber, true))->atttypid;
}
+ int32
+ 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)
{
*** a/src/include/executor/spi.h
--- b/src/include/executor/spi.h
***************
*** 116,121 **** extern char *SPI_getvalue(HeapTuple tuple, TupleDesc tupdesc, int fnumber);
--- 116,122 ----
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 int32 SPI_gettypmod(TupleDesc tupdesc, int fnumber);
extern char *SPI_getrelname(Relation rel);
extern char *SPI_getnspname(Relation rel);
extern void *SPI_palloc(Size size);
On Friday, April 12, 2013 4:24 AM Miguel Angel de Blas Burdalo wrote:
Hi hackers,
My name is Miguel Angel de Blas. I'm newbie and it's my first collaboration so I hope it's correct ;-)
I created a function SPI_gettypmod:
int32 SPI_gettypmod(TupleDesc tupdesc, int fnumber);
Return -1 when type not need type-specific data or error.
ref TODO:
Add SPI_gettypmod() to return a field's typemod from a TupleDesc
• http://archives.postgresql.org/pgsql-hackers/2005-11/msg00250.php
Mark Wong has already proposed a patch in next Commit Fest for this feature. Please refer below Commit Fest entry:
https://commitfest.postgresql.org/action/patch_view?id=1082
With Regards,
Amit Kapila.
--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers
On Fri, Apr 12, 2013 at 7:53 AM, Miguel Angel de Blas Burdalo <
migueldeblas@gmail.com> wrote:
Hi hackers,
My name is Miguel Angel de Blas. I'm newbie and it's my first
collaboration so I hope it's correct ;-)I created a function SPI_gettypmod:
int32 SPI_gettypmod(TupleDesc tupdesc, int fnumber);
Return -1 when type not need type-specific data or error.
Even if you do not implement it, you can help as well in reviewing and
testing the feature!
--
Michael