Re: [INTERFACES] Re: M$-Access'97 and TIMESTAMPs
От | David Hartwig |
---|---|
Тема | Re: [INTERFACES] Re: M$-Access'97 and TIMESTAMPs |
Дата | |
Msg-id | 35813143.7703ABDD@insightdist.com обсуждение исходный текст |
Ответ на | Re: [INTERFACES] Re: M$-Access'97 and TIMESTAMPs ("Jose' Soares Da Silva" <sferac@bo.nettuno.it>) |
Ответы |
Re: [INTERFACES] Re: M$-Access'97 and TIMESTAMPs
|
Список | pgsql-interfaces |
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 <stdio.h> /* for sprintf() */ #include <string.h> #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 );
В списке pgsql-interfaces по дате отправления: