X-Original-To: pgsql-odbc@postgresql.org Received: from smtp.web.de (smtp02.web.de [217.72.192.151]) by postgresql.org (Postfix) with ESMTP id 5BBEE474E44 for ; Fri, 21 Mar 2003 11:19:39 -0500 (EST) Received: from p5081816a.dip0.t-ipconnect.de ([80.129.129.106] helo=web.de) by smtp.web.de with asmtp (TLSv1:RC4-MD5:128) (WEB.DE(Exim) 4.97 #53) id 18wPF9-000664-00 for pgsql-odbc@postgresql.org; Fri, 21 Mar 2003 17:19:43 +0100 Message-ID: <3E7B3BA7.20709@web.de> Date: Fri, 21 Mar 2003 17:19:51 +0100 From: Andreas Pflug User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.3a) Gecko/20021212 X-Accept-Language: en-us, en MIME-Version: 1.0 To: pgsql-odbc@postgresql.org Subject: using domain types with ODBC, esp. lo Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit X-Archive-Number: 200303/43 X-Sequence-Number: 2762 In my schema definitions, I usually don't use basic datatypes, but self defined domains. This seems to work in general, but I encountered problems with blobs. I'm using CREATE DOMAIN t_image AS lo; While inserting data isn't sensitive to domains, selecting won't work. The reason is that the row's datatype obtained with CI_read_fields is compared to lo's oid. t_image's oid is different, so the column is handled wrong. This means, that at the moment domains are not usable on lo columns with ODBC. As a workaround, the driver could maintain an internal list of domain's oids, mapping them to lo's oid when CI_read_fields detects one. There might be another flaw inside CI_read_fields. The well-known data types PG_TYPE_DATETIME, PG_TYPE_TIMESTAMP_NO_TMZONE, PG_TYPE_TIME, PT_TYPE_TIME_WITH_TMZONE are handled in a special way concerning the atttypmod field. This will fail for domain types of that base type. Actually, best thing for this problems would be if the backend would deliver the base type oid, not the user type oid. And lo could be hard-coded to the backend too... :-) Regards, Andreas