Re: Adquiriendo informacion del schema de una tabla/vista con libpq

From: Eduardo Morras <emorrasg(at)yahoo(dot)es>
To: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: Adquiriendo informacion del schema de una tabla/vista con libpq
Date: 2015-05-02 09:40:10
Message-ID: 20150502114010.8f1843cb2b4bdb9bb36fb623@yahoo.es
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

On Fri, 1 May 2015 17:41:48 -0500
Jaime Casanova <jaime(at)2ndquadrant(dot)com> wrote:

> 2015-05-01 10:28 GMT-05:00 Eduardo Morras <emorrasg(at)yahoo(dot)es>:
> >
> > Muy buenas,
> >
> > Estoy desarrollando una extension en C para una aplicacion y
> > necesito obtener el schema de una tabla o vista. El nombre de la
> > tabla/vista lo conozco solo en tiempo de ejecucion, ademas tampoco
> > se si es una tabla o una vista.
>
> Y si usas las vistas information_schema.tables e
> information_schema.columns?
>
> En el primero puedes ver la columna table_type para saber si 'BASE
> TABLE' o 'VIEW', en la segunda puedes ver nombre, posición y tipo de
> dato de cada columna sea tabla o vista.

Esa es otra opcion que me parece mas acertada, ya que puedo usar la misma query para ambas.

> > ¿Hay alguna forma de hacerlo usando libpq de forma directa llamando
> > a una funcion? Algo como PG_get_table_info(char * nombretabla, int
> > *num_col, char **nombre_columna, int *tipo_columna) o que devuelva
> > un *struct con dicha informacion?
> >
> > No he encontrado nada en la documentacion del capitulo 31, aparte
> > de consultar directamente a las tablas del sistema.
> >
>
> No he encontrado como hacerlo con una función de libpq

He estado buscando más en el codigo de libpq (src/interfaces/libpq/fe-exec.c lineas 2710 y siguientes), y creo que haciendo un:

SELECT * FROM Tabla1 LIMIT 1;

Y mirando PGResult->attDescs[field_num].typid .format , .name etc... puedo obtener la informacion de forma directa, aunque leer datos de PGResult directamente no esta soportado ya que puede cambiar de una version a otra :( Lo que me ahorro es parsear la consulta, añadiendo un monton de codigo.

Opiniones de hacerlo con PGResult?

> --
> Jaime Casanova www.2ndQuadrant.com
> Professional PostgreSQL: Soporte 24x7 y capacitación

--- ---
Eduardo Morras <emorrasg(at)yahoo(dot)es>

-
Enviado a la lista de correo pgsql-es-ayuda (pgsql-es-ayuda(at)postgresql(dot)org)
Para cambiar tu suscripción:
http://www.postgresql.org/mailpref/pgsql-es-ayuda

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Romero hotmail 2015-05-04 06:31:25
Previous Message Jaime Casanova 2015-05-01 22:41:48 Re: Adquiriendo informacion del schema de una tabla/vista con libpq