Edit report at https://bugs.php.net/bug.php?id=41146&edit=1
ID: 41146 Comment by: yohgaki at ohgaki dot net Reported by: shade at nekto dot com Summary: pg_meta_data does not return fields description Status: Assigned Type: Feature/Change Request Package: PostgreSQL related Operating System: * PHP Version: 5.2.1 Assigned To: yohgaki Block user comment: N Private report: N New Comment: The reason that the function fails is PostgreSQL's schema is changed when minor version is updated. I'll look into so that it can perform proper query for current connection. Previous Comments: ------------------------------------------------------------------------ [2007-04-20 08:27:42] shade at nekto dot com Description: ------------ I found that pg_meta_data do not returns fields descriptions in result. I explore sources and found that table's meta fteched by query, citated below. I do not have free FreeBSD host for programming experiments, but i upgrade a query little bit, adding ability to fetch description from fields. Can you use my query to add to pg_meta_data() ability to return field descriptions? Reproduce code: --------------- Original code: smart_str_appends(&querystr, "SELECT a.attname, a.attnum, t.typname, a.attlen, a.attnotNULL, a.atthasdef, a.attndims " "FROM pg_class as c, pg_attribute a, pg_type t " "WHERE a.attnum > 0 AND a.attrelid = c.oid AND c.relname = '"); tmp_name = php_addslashes((char *)table_name, strlen(table_name), &new_len, 0 TSRMLS_CC); smart_str_appendl(&querystr, tmp_name, new_len); efree(tmp_name); smart_str_appends(&querystr, "' AND a.atttypid = t.oid ORDER BY a.attnum;"); smart_str_0(&querystr); Changed code, that i proposes: smart_str_appends(&querystr, "SELECT a.attname, a.attnum, t.typname, a.attlen, a.attnotNULL, a.atthasdef, a.attndims, d.description " "FROM pg_class as c JOIN pg_attribute a on (a.attrelid = c.oid) JOIN pg_type t on (a.atttypid = t.oid) " "LEFT JOIN pg_description d on (d.objoid=a.attrelid and d.objsubid=a.attnum and c.oid=d.objoid) " "WHERE a.attnum > 0 AND c.relname = '"); tmp_name = php_addslashes((char *)table_name, strlen(table_name), &new_len, 0 TSRMLS_CC); smart_str_appendl(&querystr, tmp_name, new_len); efree(tmp_name); smart_str_appends(&querystr, "' ORDER BY a.attnum;"); smart_str_0(&querystr); Expected result: ---------------- Information about table, including fields description (aka comments). Actual result: -------------- No any descriptions :( ------------------------------------------------------------------------ -- Edit this bug report at https://bugs.php.net/bug.php?id=41146&edit=1