On Fri, 1 May 2015 17:41:48 -0500
Jaime Casanova <ja...@2ndquadrant.com> wrote:

> 2015-05-01 10:28 GMT-05:00 Eduardo Morras <emorr...@yahoo.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 <emorr...@yahoo.es>

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

Responder a