Thread: psqlODBC Bug Report - Issue with Reverse Engineering PostgreSQL Database in Visio 2002
psqlODBC Bug Report - Issue with Reverse Engineering PostgreSQL Database in Visio 2002
psqlODBC Driver Version: 07.03.0100
PostgreSQL Database Version: 7.3.4
Error message: "Data source client error: State:S1000,Native:7,Origin: ERROR: parser: parse error at or near "pg_catalog" at character 402".
Commlog file: C:\psqlodbc_5120.log (attached)
ODBC trace log file: <sql.log not found>
Application: Microsoft Visio 2002 SR-1 v10.0.2514
Operating System: Microsoft Windows XP Professional SP1
When I attempt to reverse engineer a PostgreSQL database using Microsoft Visio 2002, and specify that I want "Foreign key" objects to be imported, I receive the following error: "Data source client error: State:S1000,Native:7,Origin: ERROR: parser: parse error at or near "pg_catalog" at character 402".
I then enabled logging in the psqlODBC driver setup, and was able to determine the cause of the problem - a missing comma in a generated SQL statement. The actual SQL statement recovered from the log file follows. The missing comma occurs at character position 399, or immediately after the phrase "pg_catalog.pg_namespace pn"...
SELECT pt.tgargs, pt.tgnargs, pt.tgdeferrable, pt.tginitdeferred, pp1.proname, pp2.proname, pc.oid, pc1.oid, pc1.relname, pn.nspname FROM pg_catalog.pg_class pc, pg_catalog.pg_proc pp1, pg_catalog.pg_proc pp2, pg_catalog.pg_trigger pt1, pg_catalog.pg_trigger pt2, pg_catalog.pg_proc pp, pg_catalog.pg_trigger pt, pg_catalog.pg_class pc1, pg_catalog.pg_namespace pn pg_catalog.pg_namespace pn1 WHERE pt.tgrelid = pc.oid AND pp.oid = pt.tgfoid AND pt1.tgconstrrelid = pc.oid AND pp1.oid = pt1.tgfoid AND pt2.tgfoid = pp2.oid AND pt2.tgconstrrelid = pc.oid AND ((pc.relname='provider') AND (pn1.oid = pc.relnamespace) AND (pn1.nspname = 'public') AND (pp.proname LIKE '%ins') AND (pp1.proname LIKE '%upd') AND (pp2.proname LIKE '%del') AND (pt1.tgrelid=pt.tgconstrrelid) AND (pt1.tgconstrname=pt.tgconstrname) AND (pt2.tgrelid=pt.tgconstrrelid) AND (pt2.tgconstrname=pt.tgconstrname) AND (pt.tgconstrrelid=pc1.oid) AND (pc1.relnamespace=pn.oid))
Upon inserting the comma, the copied SQL statement executes fine in a pgAdmin2 SQL execution window. The questions I have are:
1) Is this a psqlODBC bug?
2) Is this a Visio bug?
3) Is there a known fix for this issue?
Thanks in advance for any information pertaining to this issue.
Gary Faulkner
Enterprise Information Solutions
garyf@eisolution.com
Attachment
Re: psqlODBC Bug Report - Issue with Reverse Engineering PostgreSQL Database in Visio 2002
-----Original Message-----
From: Gary FaulknerpsqlODBC Driver Version: 07.03.0100
PostgreSQL Database Version: 7.3.4
Error message: "Data source client error: State:S1000,Native:7,Origin: ERROR: parser: parse error at or near "pg_catalog" at character 402".
Commlog file: C:\psqlodbc_5120.log (attached)
ODBC trace log file: <sql.log not found>
Application: Microsoft Visio 2002 SR-1 v10.0.2514
Operating System: Microsoft Windows XP Professional SP1
When I attempt to reverse engineer a PostgreSQL database using Microsoft Visio 2002, and specify that I want "Foreign key" objects to be imported, I receive the following error: "Data source client error: State:S1000,Native:7,Origin: ERROR: parser: parse error at or near "pg_catalog" at character 402".
I then enabled logging in the psqlODBC driver setup, and was able to determine the cause of the problem - a missing comma in a generated SQL statement. The actual SQL statement recovered from the log file follows. The missing comma occurs at character position 399, or immediately after the phrase "pg_catalog.pg_namespace pn"...
SELECT pt.tgargs, pt.tgnargs, pt.tgdeferrable, pt.tginitdeferred, pp1.proname, pp2.proname, pc.oid, pc1.oid, pc1.relname, pn.nspname FROM pg_catalog.pg_class pc, pg_catalog.pg_proc pp1, pg_catalog.pg_proc pp2, pg_catalog.pg_trigger pt1, pg_catalog.pg_trigger pt2, pg_catalog.pg_proc pp, pg_catalog.pg_trigger pt, pg_catalog.pg_class pc1, pg_catalog.pg_namespace pn pg_catalog.pg_namespace pn1 WHERE pt.tgrelid = pc.oid AND pp.oid = pt.tgfoid AND pt1.tgconstrrelid = pc.oid AND pp1.oid = pt1.tgfoid AND pt2.tgfoid = pp2.oid AND pt2.tgconstrrelid = pc.oid AND ((pc.relname='provider') AND (pn1.oid = pc.relnamespace) AND (pn1.nspname = 'public') AND (pp.proname LIKE '%ins') AND (pp1.proname LIKE '%upd') AND (pp2.proname LIKE '%del') AND (pt1.tgrelid=pt.tgconstrrelid) AND (pt1.tgconstrname=pt.tgconstrname) AND (pt2.tgrelid=pt.tgconstrrelid) AND (pt2.tgconstrname=pt.tgconstrname) AND (pt.tgconstrrelid=pc1.oid) AND (pc1.relnamespace=pn.oid))
Upon inserting the comma, the copied SQL statement executes fine in a pgAdmin2 SQL execution window. The questions I have are:
1) Is this a psqlODBC bug?
2) Is this a Visio bug?
3) Is there a known fix for this issue?
Thanks in advance for any information pertaining to this issue.
Gary Faulkner
Enterprise Information Solutions
garyf@eisolution.com