RE: Funcion que retorna el numero de atributos de una relacion

From: "Edwin Quijada" <listas_quijada(at)hotmail(dot)com>
To: jp(dot)espino(at)gmail(dot)com
Cc: pgsql-es-ayuda(at)postgresql(dot)org
Subject: RE: Funcion que retorna el numero de atributos de una relacion
Date: 2005-05-05 13:25:29
Message-ID: BAY1-F1AFB337B6022FE5708B7FE31A0@phx.gbl
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Por que no la haces con select a las tablas pg_class y pg_attribute. Existe
una forma mas facil que no es con C y es en SQL

*-------------------------------------------------------*
*-Edwin Quijada
*-Developer DataBase
*-JQ Microsistemas
*-809-747-2787
* " Si deseas lograr cosas excepcionales debes de hacer cosas fuera de lo
comun"
*-------------------------------------------------------*

>From: Juan Pablo Espino <jp(dot)espino(at)gmail(dot)com>
>Reply-To: Juan Pablo Espino <jp(dot)espino(at)gmail(dot)com>
>To: "pgsql-es-ayuda(at)postgresql(dot)org" <pgsql-es-ayuda(at)postgresql(dot)org>
>Subject: [pgsql-es-ayuda] Funcion que retorna el numero de atributos de una
>relacion
>Date: Wed, 4 May 2005 16:11:36 -0500
>
>Hola a todos,
>
>Escribi una funcion en C que retorna el numero de atributos de una
>relacion, pero me aparece un warning que no se de donde ni por que, a
>pesar de eso todo parece funcionar bien.
>Aqui pongo la funcion
>
>#include "postgres.h"
>#include "fmgr.h"
>#include "executor/spi.h"
>#include "commands/trigger.h"
>
>/*esta es para convertir de text a char*/
>char
>*text_2_char(text *t)
>{
> int32 new_size = VARSIZE(t) - VARHDRSZ;
> char *new = (char *) palloc(new_size + 1);
>
> if (t->vl_dat == NULL)
> {
> elog(ERROR, "No es una cadena valida");
> return NULL;
> }
>
> memcpy(new, t->vl_dat, new_size);
> *(new + new_size) = '\0';
>
> return new;
>}
>
>/*esta es la funcion en cuestion*/
>PG_FUNCTION_INFO_V1(num_att);
>Datum
>num_att(PG_FUNCTION_ARGS)
>{
> text *t = PG_GETARG_TEXT_P(0);
> char *new;
> int32 n;
> TupleDesc tupdesc;
>
> new = text_2_char(t);
> tupdesc = RelationNameGetTupleDesc(new);
> n = (int32) tupdesc->natts;
> PG_RETURN_INT32(n);
>}
>
>El warning:
>numero.c:35: warning: asignacin makes pointer from integer without a cast
>
>La linea 35 es: tupdesc = RelationNameGetTupleDesc(new);
>Les agradezco cualquier ayuda, sugerencia o comentario, saludos
>
>
>Juan P. Espino
>
>---------------------------(fin del mensaje)---------------------------
>TIP 5: ¿Has leído nuestro extenso FAQ?
>
> http://www.postgresql.org/files/documentation/faqs/FAQ.html

_________________________________________________________________
Las mejores tiendas, los precios mas bajos, entregas en todo el mundo,
YupiMSN Compras: http://latam.msn.com/compras/

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Patricio Muñoz 2005-05-05 14:06:35 Re: Postgres / Centos
Previous Message Nicolás Domínguez Florit 2005-05-05 10:43:42 Re: Vistas vacias por ODBC pero en psql bien