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