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

From
"Gary Faulkner"
Date:

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
It's a known psqlodbc's bug.
 
Please try the snapshot dll at http://www.geocities.jp/inocchichichi/psqlodbc/ .
 
regards,
Hiroshi Inoue
-----Original Message-----
From: Gary Faulkner

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