Received: from u1.abs.net (root@u1.abs.net [207.114.0.131]) by hub.org (8.8.8/8.7.5) with ESMTP id LAA08450 for ; Fri, 12 Jun 1998 11:12:27 -0400 (EDT) Received: from insightdist.com (nobody@localhost) by u1.abs.net (8.9.0/8.9.0) with UUCP id KAA06083 for pgsql-interfaces@postgreSQL.org; Fri, 12 Jun 1998 10:57:56 -0400 (EDT) X-Authentication-Warning: u1.abs.net: nobody set sender to insightdist.com!daveh using -f Received: from ceodev by insightdist.com (AIX 3.2/UCB 5.64/4.03) id AA33726; Fri, 12 Jun 1998 10:45:21 -0400 Received: from daveh by ceodev (AIX 4.1/UCB 5.64/4.03) id AA80468; Fri, 12 Jun 1998 10:45:19 -0400 Message-Id: <35813D7F.2E097E35@insightdist.com> Date: Fri, 12 Jun 1998 10:38:55 -0400 From: David Hartwig Organization: Insight Distribution Systems X-Mailer: Mozilla 4.05 [en] (Win95; I) Mime-Version: 1.0 To: "Jose' Soares Da Silva" , Byron Nikolaidis , interfaces postgres Subject: Re: [INTERFACES] Re: M$-Access'97 and TIMESTAMPs References: <35813143.7703ABDD@insightdist.com> Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Oops! Here's a better way without the shared module. -- Overload int4eq create function int4eq(xid,int4) returns bool as '' language 'internal'; create operator = ( leftarg=xid, rightarg=int4, procedure=int4eq, commutator='=', negator='<>', restrict=eqsel, join=eqjoinsel ); David Hartwig wrote: > Here is is what you will need. I hope you know how to compile a shared lib for your > platform. This can be an adventure if you have not done it before. You will have to > adjust the path in the CREATE FUNCTION statement to your lib dir. Run the SQL after you > compile and install the shared lib. To test, do something like: > > SELECT * FROM foo WHERE xmin = {some_constant} > > I plan to submit a patch to make this a part of the 6.4 base release. > > Jose' Soares Da Silva wrote: > > > On Thu, 11 Jun 1998, Byron Nikolaidis wrote: > > > > > Jose', > > > > > > I got row versioning working with the "xmin" field. Since it is a system column, and > > > automatically updates, you would not need triggers all over the place on every table. > > > I made it a datasource option called "Row Versioning". > > > > > > It works well with Access except for two minor caveats: > > > > > > 1) The driver has to report the 'xmin' field in SQLColumns. There is no way around > > > that I can see. Access, thus displays it. Users can of course hide the column if they > > > hate looking at it. And Access won't let you type into this field which is good. > > > > > > 2) You have to create an '=' operator for the xid type on the postgres side since one > > > does not already exist. I have the code to do it if you are interested (it is very > > > small). For 6.4, we would make sure this operator is added. > > > > > Ok Byron, I think this is a good solution. > > In this way we don't need to add a TIMESTAMP to every table there's already a > > XMIN present. > > In any way, what's happen with TIMESTAMPs ? May we have Access recognize it as > > DATETIME or we can't because Access beleaves that's a ROWVER ? > > I would like to try it. Please Byron may you send me the code for '=' operator > > for xid type. > > Jose' > > ------------------------------------------------------------------------ > /* Insight Distribution Systems - System V - Apr 1998 */ > static char accntnum_c[] = "@(#)accntnum.c 1.1 /sccs/sql/extend/s.accntnum.c 4/28/98 09:06:54"; > > #include /* for sprintf() */ > #include > #include "postgres.h" > #include "utils/palloc.h" > > bool > xidint4_eq(int32 arg1, int32 arg2) > { > return (arg1 == arg2); > } > > ------------------------------------------------------------------------ > -- Insight Distribution Systems - System V - Apr 1998 > -- %W% :%P% %G% %U%" > > create function xidint4_eq(xid,int4) > returns bool > as '/ceo/pgsql/lib/xidint4.so' > language 'c'; > > create operator = ( > leftarg=xid, > rightarg=int4, > procedure=xidint4_eq, > commutator='=', > negator='<>', > restrict=eqsel, > join=eqjoinsel > );