Problems found when compare pgsql odbc 8.0 and myodbc 3.5 using EOModeler - Mailing list pgsql-odbc
From | YL |
---|---|
Subject | Problems found when compare pgsql odbc 8.0 and myodbc 3.5 using EOModeler |
Date | |
Msg-id | 011901c5a800$e5b751b0$0800a8c0@grace Whole thread Raw |
List | pgsql-odbc |
EOModeler is a GUI tool to model the database schema as well as the mapping between database records and EnterpriseObjects. The version I'm using comes with database adaptors for Oracle, Sybase,Informix,LDAp FlatFile,Openbase and ODBC. I've used EOModeler with many differenct databases including most of the above, plus SQL server , MySQL, Access (via ODBC). All worked very well. But PostgreSQL+pgsqlODBC8.0 not work properly with EOModeler. I can connect the database fine with EOModeler (can fetch all records in specified table within EOModeler), however, EOModeler cannot get the necessary info about PostgreSQL data types. Below are the comparison of responses between pgsql odbc 8.0 and myodbc 3.5 when EOModeler tries to get the meta info, which show that pgsql odbc reports nothing about the 'typeInfo' expected by EOModeler, while myodbc reports all 'typeInfo' (shown below). Consequently, EOModeler and related framework know nothing about how to talk to pgsql database properly. By manully editing the typeInfo that EOModeler obtained and saved (as a text file), EOModeler starts working with pgsql. My editing was based on some guess and the info from myodbc+mysql; which is not complete nor reliablel. can someone help me to get a complete typeInfo based one the following comparison? Thanks a lot. { EOModelVersion = 2.1; adaptorName = ODBC; connectionDictionary = { connectionString = "DSN=PostgreSQL;DATABASE=EPost;SERVER=localhost;PORT=5432;UID=postgres;PWD=* *****;ReadOnly=0;Protocol=6.4;FakeOidIndex=0;ShowOidColumn=0;RowVersioning=0 ;ShowSystemTables=0;ConnSettings=;Fetch=100;Socket=8192;UnknownSizes=0;MaxVa rcharSize=254;MaxLongVarcharSize=8190;Debug=0;CommLog=0;Optimizer=1;Ksqo=1;U seDeclareFetch=0;TextAsLongVarchar=1;UnknownsAsLongVarchar=0;BoolsAsChar=1;P arse=0;CancelAsFreeStmt=0;ExtraSysTablePrefixes=dd_;;LFConversion=1;Updatabl eCursors=0;DisallowPremature=0;TrueIsMinus1=0;BI=0;ByteaAsLongVarBinary=0;Us eServerSidePrepare=0"; driverInfo = { DBMS_NAME = PostgreSQL; DBMS_VER = "08.00.0100 PostgreSQL 8.0.3 on i686-pc-mingw32, compiled by GCC gcc.exe (GCC) 3.4.2 (mingw-sK\U0161\n2`\355\275"; DRIVER_NAME = PSQLODBC.DLL; DRIVER_ODBC_VER = 03.00; DRIVER_VER = 08.00.0100; EOF_ENABLE_SQLPUTDATA = Y; NON_NULLABLE_COLUMNS = Y; ODBC_API_CONFORMANCE = LEVEL1; ODBC_SQL_CONFORMANCE = CORE; SQL_FN_STR_UCASE = Y; SQL_IDENTIFIER_QUOTE_CHAR = "\""; SQL_ODBC_SQL_OPT_IEF = N; }; typeInfo = { }; }; entities = ({className = Person; name = Person; }); internalInfo = {}; } { EOModelVersion = 2.1; adaptorName = ODBC; connectionDictionary = { connectionString = "DSN=TypeGraphMySQL;DATABASE=TypeGraph;SERVER=localhost;UID=elim;PWD=******; PORT=;OPTION=0;STMT=;"; driverInfo = { DBMS_NAME = MySQL; DBMS_VER = "5.0.1-alpha-nt"; DRIVER_NAME = myodbc3.dll; DRIVER_ODBC_VER = 03.51; DRIVER_VER = 03.51.11; EOF_ENABLE_SQLPUTDATA = Y; NON_NULLABLE_COLUMNS = Y; ODBC_API_CONFORMANCE = LEVEL1; ODBC_SQL_CONFORMANCE = CORE; SQL_FN_STR_UCASE = Y; SQL_IDENTIFIER_QUOTE_CHAR = "`"; SQL_ODBC_SQL_OPT_IEF = N; }; typeInfo = { bigint = { createParams = 0; defaultODBCType = (BIGINT); isNullable = YES; isSearchable = YES; precision = 19; }; "bigint unsigned" = { createParams = 0; defaultODBCType = (BIGINT); isNullable = YES; isSearchable = YES; precision = 20; }; bit = { createParams = 0; defaultODBCType = (BIT); isNullable = YES; isSearchable = YES; precision = 1; }; blob = { createParams = 0; defaultODBCType = ("LONG VARBINARY"); isNullable = YES; isSearchable = YES; precision = 65535; }; char = { createParams = 1; defaultODBCType = (CHAR); isNullable = YES; isSearchable = YES; precision = 255; }; date = { createParams = 0; defaultODBCType = (DATE); isNullable = YES; isSearchable = YES; precision = 10; }; datetime = { createParams = 0; defaultODBCType = (TIMESTAMP); isNullable = YES; isSearchable = YES; maxScale = 0; minScale = 0; precision = 21; }; decimal = { createParams = 2; defaultODBCType = (DECIMAL); isNullable = YES; isSearchable = YES; maxScale = 19; minScale = 0; precision = 19; }; double = { createParams = 0; defaultODBCType = (FLOAT, DOUBLE); isNullable = YES; isSearchable = YES; maxScale = 4; minScale = 0; precision = 15; }; enum = { createParams = 0; defaultODBCType = (VARCHAR); isNullable = YES; isSearchable = YES; precision = 255; }; float = { createParams = 0; defaultODBCType = (REAL); isNullable = YES; isSearchable = NO; maxScale = 2; minScale = 0; precision = 7; }; int = { createParams = 0; defaultODBCType = (INTEGER); isNullable = YES; isSearchable = YES; precision = 10; }; "int unsigned" = { createParams = 0; defaultODBCType = (INTEGER); isNullable = YES; isSearchable = YES; precision = 10; }; integer = { createParams = 0; defaultODBCType = (INTEGER); isNullable = YES; isSearchable = YES; precision = 10; }; "integer unsigned" = { createParams = 0; defaultODBCType = (INTEGER); isNullable = YES; isSearchable = YES; precision = 10; }; "long varbinary" = { createParams = 0; defaultODBCType = ("LONG VARBINARY"); isNullable = YES; isSearchable = YES; precision = 16777215; }; "long varchar" = { createParams = 0; defaultODBCType = ("LONG VARCHAR"); isNullable = YES; isSearchable = YES; precision = 16777215; }; longblob = { createParams = 0; defaultODBCType = ("LONG VARBINARY"); isNullable = YES; isSearchable = YES; precision = 2147483647; }; mediumblob = { createParams = 0; defaultODBCType = ("LONG VARBINARY"); isNullable = YES; isSearchable = YES; precision = 16777215; }; mediumint = { createParams = 0; defaultODBCType = (INTEGER); isNullable = YES; isSearchable = YES; precision = 7; }; "mediumint unsigned" = { createParams = 0; defaultODBCType = (INTEGER); isNullable = YES; isSearchable = YES; precision = 8; }; mediumtext = { createParams = 0; defaultODBCType = ("LONG VARCHAR"); isNullable = YES; isSearchable = YES; precision = 16777215; }; numeric = { createParams = 2; defaultODBCType = (NUMERIC); isNullable = YES; isSearchable = YES; maxScale = 19; minScale = 0; precision = 19; }; set = { createParams = 0; defaultODBCType = (VARCHAR); isNullable = YES; isSearchable = YES; precision = 255; }; smallint = { createParams = 0; defaultODBCType = (SMALLINT); isNullable = YES; isSearchable = YES; precision = 5; }; "smallint unsigned" = { createParams = 0; defaultODBCType = (SMALLINT); isNullable = YES; isSearchable = YES; precision = 5; }; text = { createParams = 0; defaultODBCType = ("LONG VARCHAR", VARCHAR); isNullable = YES; isSearchable = YES; precision = 65535; }; time = { createParams = 0; defaultODBCType = (TIME); isNullable = YES; isSearchable = YES; precision = 6; }; timestamp = { createParams = 0; defaultODBCType = (TIMESTAMP); isNullable = NO; isSearchable = YES; maxScale = 0; minScale = 0; precision = 14; }; tinyblob = { createParams = 0; defaultODBCType = ("LONG VARBINARY"); isNullable = YES; isSearchable = YES; precision = 255; }; tinyint = { createParams = 0; defaultODBCType = (TINYINT); isNullable = YES; isSearchable = YES; precision = 3; }; "tinyint unsigned" = { createParams = 0; defaultODBCType = (TINYINT); isNullable = YES; isSearchable = YES; precision = 3; }; varchar = { createParams = 1; defaultODBCType = (VARCHAR); isNullable = YES; isSearchable = YES; precision = 255; }; year = { createParams = 0; defaultODBCType = (SMALLINT); isNullable = YES; isSearchable = YES; precision = 4; }; }; }; entities = ( {className = ERelation; name = ERelation; }, {className = EType; name = EType; } ); internalInfo = {}; }
pgsql-odbc by date: