From: | "Anoop Kumar" <anoopk(at)pervasive-postgres(dot)com> |
---|---|
To: | <pgsql-odbc(at)postgresql(dot)org> |
Subject: | Patch for Bug No: 1254 |
Date: | 2005-04-21 09:09:16 |
Message-ID: | 02767D4600E59A4487233B23AEF5C5991F1733@blrmail1.aus.pervasive.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-odbc |
I am sending a patch for the following bug:
http://gborg.postgresql.org/project/psqlodbc/bugs/bugupdate.php?1254
The patch was tested on postgresql (ver. 8.0.1), psqlodbc (ver.
08.00.0101), Windows XP (client side) and Windows XP with SP2 (Server
end)/Fedora Core 3 (Server end).
Regards
Anoop
------------------------------------------------------------------------
-----------------------------------------
Index: info.c
===================================================================
RCS file: /usr/local/cvsroot/psqlodbc/info.c,v
retrieving revision 1.1.1.1
diff -u -r1.1.1.1 info.c
--- info.c 21 Apr 2005 05:27:13 -0000 1.1.1.1
+++ info.c 21 Apr 2005 05:29:28 -0000
@@ -1217,6 +1217,7 @@
table_types[MAX_INFO_STRING];
char show_system_tables,
show_regular_tables,
+ remarks[254], //Added for holding Table
Description, if any.
show_views;
char regular_table,
view,
@@ -1254,9 +1255,18 @@
if (conn->schema_support)
{
/* view is represented by its relkind since 7.1 */
- strcpy(tables_query, "select relname, nspname, relkind"
- " from pg_catalog.pg_class c, pg_catalog.pg_namespace
n");
- strcat(tables_query, " where relkind in ('r', 'v')");
+
+ /* Previously it was:
+ * strcpy(tables_query, "select relname, nspname,
relkind"
+ * from pg_catalog.pg_class c, pg_catalog.pg_namespace
n");
+ * strcat(tables_query, " where relkind in ('r', 'v')");
+ * Modified query to retrieve the description of the
table:
+ */
+
+ strcpy(tables_query,"SELECT DISTINCT tt.relname,
tt.nspname, tt.relkind, COALESCE(d.description,'') from");
+ strcat(tables_query," (SELECT c.oid as oid, c.tableoid as
tableoid, n.nspname as nspname, c.relname, c.relkind");
+ strcat(tables_query," FROM pg_catalog.pg_class c LEFT
JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace");
+ strcat(tables_query," WHERE c.relkind IN ('r', 'v') ");
}
else if (PG_VERSION_GE(conn, 7.1))
{
@@ -1367,7 +1377,16 @@
strcat(tables_query, " and relname !~ '^xinv[0-9]+'");
if (conn->schema_support)
- strcat(tables_query, " and n.oid = relnamespace order by
nspname, relname");
+ {
+ /* Previously it was:
+ * strcat(tables_query, " and n.oid = relnamespace order
by nspname, relname");
+ * Modified query to retrieve the description of the
table:
+ */
+
+ strcat(tables_query," ) AS tt LEFT JOIN
pg_catalog.pg_description d ");
+ strcat(tables_query," ON (tt.oid = d.objoid AND
tt.tableoid = d.classoid AND d.objsubid = 0)");
+ strcat(tables_query," order by nspname, relname");
+ }
else
strcat(tables_query, " and usesysid = relowner order by
relname");
@@ -1427,7 +1446,15 @@
SC_error_copy(stmt, tbl_stmt);
goto cleanup;
}
-
+ /* Binds the description column to variable 'remarks' */
+ result = PGAPI_BindCol(htbl_stmt, 4, internal_asis_type,
+ remarks, 254,
NULL);
+ if ((result != SQL_SUCCESS) && (result !=
SQL_SUCCESS_WITH_INFO))
+ {
+ SC_error_copy(stmt, tbl_stmt);
+ goto cleanup;
+ }
+
if (res = QR_Constructor(), !res)
{
SC_set_error(stmt, STMT_NO_MEMORY_ERROR, "Couldn't
allocate memory for PGAPI_Tables result.");
@@ -1525,7 +1552,7 @@
set_tuplefield_null(&row->tuple[1]);
set_tuplefield_string(&row->tuple[2],
table_name);
set_tuplefield_string(&row->tuple[3], systable ?
"SYSTEM TABLE" : (view ? "VIEW" : "TABLE"));
- set_tuplefield_string(&row->tuple[4], "");
+ set_tuplefield_string(&row->tuple[4], remarks);
/*** set_tuplefield_string(&row->tuple[4],
"TABLE"); ***/
QR_add_tuple(res, row);
------------------------------------------------------------------------
---------------------------------------------
From | Date | Subject | |
---|---|---|---|
Next Message | Mohan, Ross | 2005-04-21 14:42:16 | Re: Joel's Performance Issues WAS : Opteron vs Xeon |
Previous Message | Delio Costa Cavalcanti - DATAPREVCE | 2005-04-20 11:29:28 | ODBC error |