mirror of
https://git.postgresql.org/git/postgresql.git
synced 2024-11-21 03:13:05 +08:00
Another round of updates for new fmgr, mostly in the datetime code.
This commit is contained in:
parent
20ad43b576
commit
ae526b4070
@ -1,7 +1,7 @@
|
||||
/*
|
||||
* PostgreSQL type definitions for managed LargeObjects.
|
||||
*
|
||||
* $Id: lo.c,v 1.3 2000/05/29 01:59:02 tgl Exp $
|
||||
* $Id: lo.c,v 1.4 2000/06/09 01:10:58 tgl Exp $
|
||||
*
|
||||
*/
|
||||
|
||||
@ -76,7 +76,8 @@ lo_in(char *str)
|
||||
/*
|
||||
* There is no Oid passed, so create a new one
|
||||
*/
|
||||
oid = lo_creat(INV_READ | INV_WRITE);
|
||||
oid = DatumGetObjectId(DirectFunctionCall1(lo_creat,
|
||||
Int32GetDatum(INV_READ | INV_WRITE)));
|
||||
if (oid == InvalidOid)
|
||||
{
|
||||
elog(ERROR, "lo_in: InvalidOid returned from lo_creat");
|
||||
@ -186,7 +187,8 @@ lo_manage(PG_FUNCTION_ARGS)
|
||||
char *newv = SPI_getvalue(newtuple, tupdesc, attnum);
|
||||
|
||||
if ((orig != newv && (orig == NULL || newv == NULL)) || (orig != NULL && newv != NULL && strcmp(orig, newv)))
|
||||
lo_unlink(atoi(orig));
|
||||
DirectFunctionCall1(lo_unlink,
|
||||
ObjectIdGetDatum((Oid) atoi(orig)));
|
||||
|
||||
if (newv)
|
||||
pfree(newv);
|
||||
@ -206,7 +208,8 @@ lo_manage(PG_FUNCTION_ARGS)
|
||||
|
||||
if (orig != NULL)
|
||||
{
|
||||
lo_unlink(atoi(orig));
|
||||
DirectFunctionCall1(lo_unlink,
|
||||
ObjectIdGetDatum((Oid) atoi(orig)));
|
||||
|
||||
pfree(orig);
|
||||
}
|
||||
|
@ -62,7 +62,8 @@ moddatetime(PG_FUNCTION_ARGS)
|
||||
tupdesc = rel->rd_att;
|
||||
|
||||
/* Get the current datetime. */
|
||||
newdt = (Datum) timestamp_in("now");
|
||||
newdt = DirectFunctionCall1(timestamp_in,
|
||||
CStringGetDatum("now"));
|
||||
|
||||
/*
|
||||
* This gets the position in the turple of the field we want. args[0]
|
||||
|
@ -8,7 +8,7 @@
|
||||
*
|
||||
*
|
||||
* IDENTIFICATION
|
||||
* $Header: /cvsroot/pgsql/src/backend/access/nbtree/nbtcompare.c,v 1.35 2000/06/05 07:28:36 tgl Exp $
|
||||
* $Header: /cvsroot/pgsql/src/backend/access/nbtree/nbtcompare.c,v 1.36 2000/06/09 01:11:01 tgl Exp $
|
||||
*
|
||||
* NOTES
|
||||
*
|
||||
@ -170,9 +170,12 @@ btoidvectorcmp(PG_FUNCTION_ARGS)
|
||||
PG_RETURN_INT32(0);
|
||||
}
|
||||
|
||||
int32
|
||||
btabstimecmp(AbsoluteTime a, AbsoluteTime b)
|
||||
Datum
|
||||
btabstimecmp(PG_FUNCTION_ARGS)
|
||||
{
|
||||
AbsoluteTime a = PG_GETARG_ABSOLUTETIME(0);
|
||||
AbsoluteTime b = PG_GETARG_ABSOLUTETIME(1);
|
||||
|
||||
if (AbsoluteTimeIsBefore(a, b))
|
||||
PG_RETURN_INT32(-1);
|
||||
else if (AbsoluteTimeIsBefore(b, a))
|
||||
|
@ -6,7 +6,7 @@
|
||||
* Portions Copyright (c) 1996-2000, PostgreSQL, Inc
|
||||
* Portions Copyright (c) 1994, Regents of the University of California
|
||||
*
|
||||
* $Header: /cvsroot/pgsql/src/backend/commands/user.c,v 1.57 2000/06/02 03:58:33 tgl Exp $
|
||||
* $Header: /cvsroot/pgsql/src/backend/commands/user.c,v 1.58 2000/06/09 01:11:04 tgl Exp $
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
@ -122,8 +122,8 @@ write_password_file(Relation rel)
|
||||
"%s\n",
|
||||
nameout(DatumGetName(datum_n)),
|
||||
null_p ? "" : textout((text *) datum_p),
|
||||
null_v ? "\\N" : nabstimeout((AbsoluteTime) datum_v) /* this is how the
|
||||
* parser wants it */
|
||||
null_v ? "\\N" :
|
||||
DatumGetCString(DirectFunctionCall1(nabstimeout, datum_v))
|
||||
);
|
||||
}
|
||||
heap_endscan(scan);
|
||||
@ -268,7 +268,8 @@ CreateUser(CreateUserStmt *stmt)
|
||||
if (stmt->password)
|
||||
new_record[Anum_pg_shadow_passwd - 1] = PointerGetDatum(textin(stmt->password));
|
||||
if (stmt->validUntil)
|
||||
new_record[Anum_pg_shadow_valuntil - 1] = PointerGetDatum(nabstimein(stmt->validUntil));
|
||||
new_record[Anum_pg_shadow_valuntil - 1] =
|
||||
DirectFunctionCall1(nabstimein, CStringGetDatum(stmt->validUntil));
|
||||
|
||||
new_record_nulls[Anum_pg_shadow_usename - 1] = ' ';
|
||||
new_record_nulls[Anum_pg_shadow_usesysid - 1] = ' ';
|
||||
@ -445,7 +446,8 @@ AlterUser(AlterUserStmt *stmt)
|
||||
/* valid until */
|
||||
if (stmt->validUntil)
|
||||
{
|
||||
new_record[Anum_pg_shadow_valuntil - 1] = PointerGetDatum(nabstimein(stmt->validUntil));
|
||||
new_record[Anum_pg_shadow_valuntil - 1] =
|
||||
DirectFunctionCall1(nabstimein, CStringGetDatum(stmt->validUntil));
|
||||
new_record_nulls[Anum_pg_shadow_valuntil - 1] = ' ';
|
||||
}
|
||||
else
|
||||
|
@ -8,7 +8,7 @@
|
||||
*
|
||||
*
|
||||
* IDENTIFICATION
|
||||
* $Header: /cvsroot/pgsql/src/backend/libpq/be-fsstubs.c,v 1.45 2000/06/02 15:57:20 momjian Exp $
|
||||
* $Header: /cvsroot/pgsql/src/backend/libpq/be-fsstubs.c,v 1.46 2000/06/09 01:11:06 tgl Exp $
|
||||
*
|
||||
* NOTES
|
||||
* This should be moved to a more appropriate place. It is here
|
||||
@ -49,6 +49,11 @@
|
||||
#define BUFSIZE 1024
|
||||
#define FNAME_BUFSIZE 8192
|
||||
|
||||
/*
|
||||
* LO "FD"s are indexes into this array.
|
||||
* A non-null entry is a pointer to a LargeObjectDesc allocated in the
|
||||
* LO private memory context.
|
||||
*/
|
||||
static LargeObjectDesc *cookies[MAX_LOBJ_FDS];
|
||||
|
||||
static GlobalMemory fscxt = NULL;
|
||||
@ -61,15 +66,17 @@ static void deleteLOfd(int fd);
|
||||
* File Interfaces for Large Objects
|
||||
*****************************************************************************/
|
||||
|
||||
int
|
||||
lo_open(Oid lobjId, int mode)
|
||||
Datum
|
||||
lo_open(PG_FUNCTION_ARGS)
|
||||
{
|
||||
Oid lobjId = PG_GETARG_OID(0);
|
||||
int32 mode = PG_GETARG_INT32(1);
|
||||
LargeObjectDesc *lobjDesc;
|
||||
int fd;
|
||||
MemoryContext currentContext;
|
||||
|
||||
#if FSDB
|
||||
elog(NOTICE, "LOopen(%u,%d)", lobjId, mode);
|
||||
elog(NOTICE, "lo_open(%u,%d)", lobjId, mode);
|
||||
#endif
|
||||
|
||||
if (fscxt == NULL)
|
||||
@ -84,7 +91,7 @@ lo_open(Oid lobjId, int mode)
|
||||
#if FSDB
|
||||
elog(NOTICE, "cannot open large object %u", lobjId);
|
||||
#endif
|
||||
return -1;
|
||||
PG_RETURN_INT32(-1);
|
||||
}
|
||||
|
||||
fd = newLOfd(lobjDesc);
|
||||
@ -97,26 +104,27 @@ lo_open(Oid lobjId, int mode)
|
||||
elog(NOTICE, "Out of space for large object FDs");
|
||||
#endif
|
||||
|
||||
return fd;
|
||||
PG_RETURN_INT32(fd);
|
||||
}
|
||||
|
||||
int
|
||||
lo_close(int fd)
|
||||
Datum
|
||||
lo_close(PG_FUNCTION_ARGS)
|
||||
{
|
||||
int32 fd = PG_GETARG_INT32(0);
|
||||
MemoryContext currentContext;
|
||||
|
||||
if (fd < 0 || fd >= MAX_LOBJ_FDS)
|
||||
{
|
||||
elog(ERROR, "lo_close: large obj descriptor (%d) out of range", fd);
|
||||
return -2;
|
||||
PG_RETURN_INT32(-2);
|
||||
}
|
||||
if (cookies[fd] == NULL)
|
||||
{
|
||||
elog(ERROR, "lo_close: invalid large obj descriptor (%d)", fd);
|
||||
return -3;
|
||||
PG_RETURN_INT32(-3);
|
||||
}
|
||||
#if FSDB
|
||||
elog(NOTICE, "LOclose(%d)", fd);
|
||||
elog(NOTICE, "lo_close(%d)", fd);
|
||||
#endif
|
||||
|
||||
Assert(fscxt != NULL);
|
||||
@ -127,13 +135,19 @@ lo_close(int fd)
|
||||
MemoryContextSwitchTo(currentContext);
|
||||
|
||||
deleteLOfd(fd);
|
||||
return 0;
|
||||
|
||||
PG_RETURN_INT32(0);
|
||||
}
|
||||
|
||||
/*
|
||||
|
||||
/*****************************************************************************
|
||||
* Bare Read/Write operations --- these are not fmgr-callable!
|
||||
*
|
||||
* We assume the large object supports byte oriented reads and seeks so
|
||||
* that our work is easier.
|
||||
*/
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
int
|
||||
lo_read(int fd, char *buf, int len)
|
||||
{
|
||||
@ -157,7 +171,8 @@ lo_read(int fd, char *buf, int len)
|
||||
status = inv_read(cookies[fd], buf, len);
|
||||
|
||||
MemoryContextSwitchTo(currentContext);
|
||||
return (status);
|
||||
|
||||
return status;
|
||||
}
|
||||
|
||||
int
|
||||
@ -183,25 +198,29 @@ lo_write(int fd, char *buf, int len)
|
||||
status = inv_write(cookies[fd], buf, len);
|
||||
|
||||
MemoryContextSwitchTo(currentContext);
|
||||
return (status);
|
||||
|
||||
return status;
|
||||
}
|
||||
|
||||
|
||||
int
|
||||
lo_lseek(int fd, int offset, int whence)
|
||||
Datum
|
||||
lo_lseek(PG_FUNCTION_ARGS)
|
||||
{
|
||||
int32 fd = PG_GETARG_INT32(0);
|
||||
int32 offset = PG_GETARG_INT32(1);
|
||||
int32 whence = PG_GETARG_INT32(2);
|
||||
MemoryContext currentContext;
|
||||
int status;
|
||||
|
||||
if (fd < 0 || fd >= MAX_LOBJ_FDS)
|
||||
{
|
||||
elog(ERROR, "lo_lseek: large obj descriptor (%d) out of range", fd);
|
||||
return -2;
|
||||
PG_RETURN_INT32(-2);
|
||||
}
|
||||
if (cookies[fd] == NULL)
|
||||
{
|
||||
elog(ERROR, "lo_lseek: invalid large obj descriptor (%d)", fd);
|
||||
return -3;
|
||||
PG_RETURN_INT32(-3);
|
||||
}
|
||||
|
||||
Assert(fscxt != NULL);
|
||||
@ -211,12 +230,13 @@ lo_lseek(int fd, int offset, int whence)
|
||||
|
||||
MemoryContextSwitchTo(currentContext);
|
||||
|
||||
return status;
|
||||
PG_RETURN_INT32(status);
|
||||
}
|
||||
|
||||
Oid
|
||||
lo_creat(int mode)
|
||||
Datum
|
||||
lo_creat(PG_FUNCTION_ARGS)
|
||||
{
|
||||
int32 mode = PG_GETARG_INT32(0);
|
||||
LargeObjectDesc *lobjDesc;
|
||||
MemoryContext currentContext;
|
||||
Oid lobjId;
|
||||
@ -231,31 +251,32 @@ lo_creat(int mode)
|
||||
if (lobjDesc == NULL)
|
||||
{
|
||||
MemoryContextSwitchTo(currentContext);
|
||||
return InvalidOid;
|
||||
PG_RETURN_OID(InvalidOid);
|
||||
}
|
||||
|
||||
lobjId = RelationGetRelid(lobjDesc->heap_r);
|
||||
|
||||
inv_close(lobjDesc);
|
||||
|
||||
/* switch context back to original memory context */
|
||||
MemoryContextSwitchTo(currentContext);
|
||||
|
||||
return lobjId;
|
||||
PG_RETURN_OID(lobjId);
|
||||
}
|
||||
|
||||
int
|
||||
lo_tell(int fd)
|
||||
Datum
|
||||
lo_tell(PG_FUNCTION_ARGS)
|
||||
{
|
||||
int32 fd = PG_GETARG_INT32(0);
|
||||
|
||||
if (fd < 0 || fd >= MAX_LOBJ_FDS)
|
||||
{
|
||||
elog(ERROR, "lo_tell: large object descriptor (%d) out of range", fd);
|
||||
return -2;
|
||||
PG_RETURN_INT32(-2);
|
||||
}
|
||||
if (cookies[fd] == NULL)
|
||||
{
|
||||
elog(ERROR, "lo_tell: invalid large object descriptor (%d)", fd);
|
||||
return -3;
|
||||
PG_RETURN_INT32(-3);
|
||||
}
|
||||
|
||||
/*
|
||||
@ -263,12 +284,13 @@ lo_tell(int fd)
|
||||
* true for now, but is probably more than this module ought to
|
||||
* assume...
|
||||
*/
|
||||
return inv_tell(cookies[fd]);
|
||||
PG_RETURN_INT32(inv_tell(cookies[fd]));
|
||||
}
|
||||
|
||||
int
|
||||
lo_unlink(Oid lobjId)
|
||||
Datum
|
||||
lo_unlink(PG_FUNCTION_ARGS)
|
||||
{
|
||||
Oid lobjId = PG_GETARG_OID(0);
|
||||
|
||||
/*
|
||||
* inv_drop does not need a context switch, indeed it doesn't touch
|
||||
@ -278,35 +300,42 @@ lo_unlink(Oid lobjId)
|
||||
* XXX there ought to be some code to clean up any open LOs that
|
||||
* reference the specified relation... as is, they remain "open".
|
||||
*/
|
||||
return inv_drop(lobjId);
|
||||
PG_RETURN_INT32(inv_drop(lobjId));
|
||||
}
|
||||
|
||||
/*****************************************************************************
|
||||
* Read/Write using varlena
|
||||
* Read/Write using bytea
|
||||
*****************************************************************************/
|
||||
|
||||
struct varlena *
|
||||
loread(int fd, int len)
|
||||
Datum
|
||||
loread(PG_FUNCTION_ARGS)
|
||||
{
|
||||
int32 fd = PG_GETARG_INT32(0);
|
||||
int32 len = PG_GETARG_INT32(1);
|
||||
struct varlena *retval;
|
||||
int totalread = 0;
|
||||
int totalread;
|
||||
|
||||
if (len < 0)
|
||||
len = 0;
|
||||
|
||||
retval = (struct varlena *) palloc(VARHDRSZ + len);
|
||||
totalread = lo_read(fd, VARDATA(retval), len);
|
||||
VARSIZE(retval) = totalread + VARHDRSZ;
|
||||
|
||||
return retval;
|
||||
PG_RETURN_POINTER(retval);
|
||||
}
|
||||
|
||||
int
|
||||
lowrite(int fd, struct varlena * wbuf)
|
||||
Datum
|
||||
lowrite(PG_FUNCTION_ARGS)
|
||||
{
|
||||
int totalwritten;
|
||||
int bytestowrite;
|
||||
int32 fd = PG_GETARG_INT32(0);
|
||||
struct varlena *wbuf = PG_GETARG_VARLENA_P(1);
|
||||
int bytestowrite;
|
||||
int totalwritten;
|
||||
|
||||
bytestowrite = VARSIZE(wbuf) - VARHDRSZ;
|
||||
totalwritten = lo_write(fd, VARDATA(wbuf), bytestowrite);
|
||||
return totalwritten;
|
||||
PG_RETURN_INT32(totalwritten);
|
||||
}
|
||||
|
||||
/*****************************************************************************
|
||||
@ -317,9 +346,10 @@ lowrite(int fd, struct varlena * wbuf)
|
||||
* lo_import -
|
||||
* imports a file as an (inversion) large object.
|
||||
*/
|
||||
Oid
|
||||
lo_import(text *filename)
|
||||
Datum
|
||||
lo_import(PG_FUNCTION_ARGS)
|
||||
{
|
||||
text *filename = PG_GETARG_TEXT_P(0);
|
||||
File fd;
|
||||
int nbytes,
|
||||
tmp;
|
||||
@ -379,16 +409,18 @@ lo_import(text *filename)
|
||||
FileClose(fd);
|
||||
inv_close(lobj);
|
||||
|
||||
return lobjOid;
|
||||
PG_RETURN_OID(lobjOid);
|
||||
}
|
||||
|
||||
/*
|
||||
* lo_export -
|
||||
* exports an (inversion) large object.
|
||||
*/
|
||||
int4
|
||||
lo_export(Oid lobjId, text *filename)
|
||||
Datum
|
||||
lo_export(PG_FUNCTION_ARGS)
|
||||
{
|
||||
Oid lobjId = PG_GETARG_OID(0);
|
||||
text *filename = PG_GETARG_TEXT_P(1);
|
||||
File fd;
|
||||
int nbytes,
|
||||
tmp;
|
||||
@ -445,7 +477,7 @@ lo_export(Oid lobjId, text *filename)
|
||||
inv_close(lobj);
|
||||
FileClose(fd);
|
||||
|
||||
return 1;
|
||||
PG_RETURN_INT32(1);
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -9,7 +9,7 @@
|
||||
* Dec 17, 1997 - Todd A. Brandys
|
||||
* Orignal Version Completed.
|
||||
*
|
||||
* $Id: crypt.c,v 1.24 2000/06/02 15:57:20 momjian Exp $
|
||||
* $Id: crypt.c,v 1.25 2000/06/09 01:11:06 tgl Exp $
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
@ -288,7 +288,8 @@ crypt_verify(Port *port, const char *user, const char *pgpass)
|
||||
if (!valuntil || strcmp(valuntil, "\\N") == 0)
|
||||
vuntil = INVALID_ABSTIME;
|
||||
else
|
||||
vuntil = nabstimein(valuntil);
|
||||
vuntil = DatumGetAbsoluteTime(DirectFunctionCall1(nabstimein,
|
||||
CStringGetDatum(valuntil)));
|
||||
current = GetCurrentAbsoluteTime();
|
||||
if (vuntil != INVALID_ABSTIME && vuntil < current)
|
||||
retval = STATUS_ERROR;
|
||||
|
@ -8,7 +8,7 @@
|
||||
*
|
||||
*
|
||||
* IDENTIFICATION
|
||||
* $Header: /cvsroot/pgsql/src/backend/utils/adt/arrayfuncs.c,v 1.55 2000/06/02 15:57:28 momjian Exp $
|
||||
* $Header: /cvsroot/pgsql/src/backend/utils/adt/arrayfuncs.c,v 1.56 2000/06/09 01:11:08 tgl Exp $
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
@ -538,8 +538,11 @@ _ReadLOArray(char *str,
|
||||
|
||||
if (inputfile == NULL)
|
||||
elog(ERROR, "array_in: missing file name");
|
||||
lobjId = lo_creat(0);
|
||||
*fd = lo_open(lobjId, INV_READ);
|
||||
lobjId = DatumGetObjectId(DirectFunctionCall1(lo_creat,
|
||||
Int32GetDatum(0)));
|
||||
*fd = DatumGetInt32(DirectFunctionCall2(lo_open,
|
||||
ObjectIdGetDatum(lobjId),
|
||||
Int32GetDatum(INV_READ)));
|
||||
if (*fd < 0)
|
||||
elog(ERROR, "Large object create failed");
|
||||
retStr = inputfile;
|
||||
@ -877,17 +880,23 @@ array_ref(ArrayType *array,
|
||||
v = _ReadChunkArray1El(indx, elmlen, fd, array, isNull);
|
||||
else
|
||||
{
|
||||
if (lo_lseek(fd, offset, SEEK_SET) < 0)
|
||||
if (DatumGetInt32(DirectFunctionCall3(lo_lseek,
|
||||
Int32GetDatum(fd),
|
||||
Int32GetDatum(offset),
|
||||
Int32GetDatum(SEEK_SET))) < 0)
|
||||
RETURN_NULL;
|
||||
#ifdef LOARRAY
|
||||
v = (struct varlena *) LOread(fd, elmlen);
|
||||
v = (struct varlena *)
|
||||
DatumGetPointer(DirectFunctionCall2(loread,
|
||||
Int32GetDatum(fd),
|
||||
Int32GetDatum(elmlen)));
|
||||
#endif
|
||||
}
|
||||
if (*isNull)
|
||||
RETURN_NULL;
|
||||
if (VARSIZE(v) - VARHDRSZ < elmlen)
|
||||
RETURN_NULL;
|
||||
lo_close(fd);
|
||||
DirectFunctionCall1(lo_close, Int32GetDatum(fd));
|
||||
retval = (char *) _ArrayCast((char *) VARDATA(v), reftype, elmlen);
|
||||
if (reftype == 0)
|
||||
{ /* not by value */
|
||||
@ -1029,7 +1038,9 @@ array_clip(ArrayType *array,
|
||||
memmove(buff, &rsize, VARHDRSZ);
|
||||
#ifdef LOARRAY
|
||||
if (!*isNull)
|
||||
bytes = LOwrite(newfd, (struct varlena *) buff);
|
||||
bytes = DatumGetInt32(DirectFunctionCall2(lowrite,
|
||||
Int32GetDatum(newfd),
|
||||
PointerGetDatum(buff)));
|
||||
#endif
|
||||
pfree(buff);
|
||||
}
|
||||
@ -1140,20 +1151,25 @@ array_set(ArrayType *array,
|
||||
if ((fd = LOopen(lo_name, ARR_IS_INV(array) ? INV_WRITE : O_WRONLY)) < 0)
|
||||
return (char *) array;
|
||||
#endif
|
||||
if (lo_lseek(fd, offset, SEEK_SET) < 0)
|
||||
if (DatumGetInt32(DirectFunctionCall3(lo_lseek,
|
||||
Int32GetDatum(fd),
|
||||
Int32GetDatum(offset),
|
||||
Int32GetDatum(SEEK_SET))) < 0)
|
||||
return (char *) array;
|
||||
v = (struct varlena *) palloc(elmlen + VARHDRSZ);
|
||||
VARSIZE(v) = elmlen + VARHDRSZ;
|
||||
ArrayCastAndSet(dataPtr, (bool) reftype, elmlen, VARDATA(v));
|
||||
#ifdef LOARRAY
|
||||
n = LOwrite(fd, v);
|
||||
n = DatumGetInt32(DirectFunctionCall2(lowrite,
|
||||
Int32GetDatum(fd),
|
||||
PointerGetDatum(v)));
|
||||
#endif
|
||||
|
||||
/*
|
||||
* if (n < VARSIZE(v) - VARHDRSZ) RETURN_NULL;
|
||||
*/
|
||||
pfree(v);
|
||||
lo_close(fd);
|
||||
DirectFunctionCall1(lo_close, Int32GetDatum(fd));
|
||||
return (char *) array;
|
||||
}
|
||||
if (elmlen > 0)
|
||||
@ -1270,14 +1286,14 @@ array_assgn(ArrayType *array,
|
||||
return (char *) array;
|
||||
#endif
|
||||
_LOArrayRange(lowerIndx, upperIndx, len, fd, newfd, array, 1, isNull);
|
||||
lo_close(newfd);
|
||||
DirectFunctionCall1(lo_close, Int32GetDatum(newfd));
|
||||
}
|
||||
else
|
||||
{
|
||||
_LOArrayRange(lowerIndx, upperIndx, len, fd, (int) ARR_DATA_PTR(newArr),
|
||||
array, 0, isNull);
|
||||
}
|
||||
lo_close(fd);
|
||||
DirectFunctionCall1(lo_close, Int32GetDatum(fd));
|
||||
return (char *) array;
|
||||
}
|
||||
_ArrayRange(lowerIndx, upperIndx, len, ARR_DATA_PTR(newArr), array, 0);
|
||||
@ -1758,7 +1774,10 @@ _LOArrayRange(int *st,
|
||||
mda_get_prod(n, dim, prod);
|
||||
st_pos = tuple2linear(n, st, prod);
|
||||
offset = st_pos * bsize;
|
||||
if (lo_lseek(srcfd, offset, SEEK_SET) < 0)
|
||||
if (DatumGetInt32(DirectFunctionCall3(lo_lseek,
|
||||
Int32GetDatum(srcfd),
|
||||
Int32GetDatum(offset),
|
||||
Int32GetDatum(SEEK_SET))) < 0)
|
||||
return;
|
||||
mda_get_range(n, span, st, endp);
|
||||
mda_get_offset_values(n, dist, prod, span);
|
||||
@ -1770,7 +1789,10 @@ _LOArrayRange(int *st,
|
||||
do
|
||||
{
|
||||
offset += (dist[j] * bsize);
|
||||
if (lo_lseek(srcfd, offset, SEEK_SET) < 0)
|
||||
if (DatumGetInt32(DirectFunctionCall3(lo_lseek,
|
||||
Int32GetDatum(srcfd),
|
||||
Int32GetDatum(offset),
|
||||
Int32GetDatum(SEEK_SET))) < 0)
|
||||
return;
|
||||
tmp = _LOtransfer((char **) &srcfd, inc, 1, (char **) &destfd, isSrcLO, 1);
|
||||
if (tmp < inc)
|
||||
@ -1812,7 +1834,10 @@ _ReadArray(int *st,
|
||||
mda_get_prod(n, dim, prod);
|
||||
st_pos = tuple2linear(n, st, prod);
|
||||
offset = st_pos * bsize;
|
||||
if (lo_lseek(srcfd, offset, SEEK_SET) < 0)
|
||||
if (DatumGetInt32(DirectFunctionCall3(lo_lseek,
|
||||
Int32GetDatum(srcfd),
|
||||
Int32GetDatum(offset),
|
||||
Int32GetDatum(SEEK_SET))) < 0)
|
||||
return;
|
||||
mda_get_range(n, span, st, endp);
|
||||
mda_get_offset_values(n, dist, prod, span);
|
||||
@ -1824,7 +1849,10 @@ _ReadArray(int *st,
|
||||
do
|
||||
{
|
||||
offset += (dist[j] * bsize);
|
||||
if (lo_lseek(srcfd, offset, SEEK_SET) < 0)
|
||||
if (DatumGetInt32(DirectFunctionCall3(lo_lseek,
|
||||
Int32GetDatum(srcfd),
|
||||
Int32GetDatum(offset),
|
||||
Int32GetDatum(SEEK_SET))) < 0)
|
||||
return;
|
||||
tmp = _LOtransfer((char **) &destfd, inc, 1, (char **) &srcfd, 1, isDestLO);
|
||||
if (tmp < inc)
|
||||
@ -1857,13 +1885,18 @@ _LOtransfer(char **destfd,
|
||||
resid > 0 && (inc = min(resid, MAX_READ)) > 0; resid -= inc)
|
||||
{
|
||||
#ifdef LOARRAY
|
||||
v = (struct varlena *) LOread((int) *srcfd, inc);
|
||||
v = (struct varlena *)
|
||||
DatumGetPointer(DirectFunctionCall2(loread,
|
||||
Int32GetDatum((int32) *srcfd),
|
||||
Int32GetDatum(inc)));
|
||||
if (VARSIZE(v) - VARHDRSZ < inc)
|
||||
{
|
||||
pfree(v);
|
||||
return -1;
|
||||
}
|
||||
tmp += LOwrite((int) *destfd, v);
|
||||
tmp += DatumGetInt32(DirectFunctionCall2(lowrite,
|
||||
Int32GetDatum((int32) *destfd),
|
||||
PointerGetDatum(v)));
|
||||
#endif
|
||||
pfree(v);
|
||||
|
||||
|
@ -7,7 +7,7 @@
|
||||
*
|
||||
*
|
||||
* IDENTIFICATION
|
||||
* $Header: /cvsroot/pgsql/src/backend/utils/adt/Attic/chunk.c,v 1.25 2000/01/26 05:57:13 momjian Exp $
|
||||
* $Header: /cvsroot/pgsql/src/backend/utils/adt/Attic/chunk.c,v 1.26 2000/06/09 01:11:08 tgl Exp $
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
@ -385,7 +385,9 @@ write_chunk(struct varlena * a_chunk, int ofile)
|
||||
int got_n = 0;
|
||||
|
||||
#ifdef LOARRAY
|
||||
got_n = LOwrite(ofile, a_chunk);
|
||||
got_n = DatumGetInt32(DirectFunctionCall2(lowrite,
|
||||
Int32GetDatum(ofile),
|
||||
PointerGetDatum(a_chunk)));
|
||||
#endif
|
||||
return got_n;
|
||||
}
|
||||
@ -400,13 +402,19 @@ write_chunk(struct varlena * a_chunk, int ofile)
|
||||
static int
|
||||
seek_and_read(int pos, int size, char *buff, int fp, int from)
|
||||
{
|
||||
struct varlena *v = NULL;
|
||||
struct varlena *v;
|
||||
|
||||
/* Assuming only one file */
|
||||
if (lo_lseek(fp, pos, from) < 0)
|
||||
if (DatumGetInt32(DirectFunctionCall3(lo_lseek,
|
||||
Int32GetDatum(fp),
|
||||
Int32GetDatum(pos),
|
||||
Int32GetDatum(from))) < 0)
|
||||
elog(ERROR, "File seek error");
|
||||
#ifdef LOARRAY
|
||||
v = (struct varlena *) LOread(fp, size);
|
||||
v = (struct varlena *)
|
||||
DatumGetPointer(DirectFunctionCall2(loread,
|
||||
Int32GetDatum(fp),
|
||||
Int32GetDatum(size)));
|
||||
#endif
|
||||
if (VARSIZE(v) - VARHDRSZ < size)
|
||||
elog(ERROR, "File read error");
|
||||
@ -505,7 +513,10 @@ _ReadChunkArray(int *st,
|
||||
for (i = j = 0; i < n; i++)
|
||||
j += chunk_st[i] * PC[i];
|
||||
temp_seek = srcOff = j * csize * bsize;
|
||||
if (lo_lseek(fp, srcOff, SEEK_SET) < 0)
|
||||
if (DatumGetInt32(DirectFunctionCall3(lo_lseek,
|
||||
Int32GetDatum(fp),
|
||||
Int32GetDatum(srcOff),
|
||||
Int32GetDatum(SEEK_SET))) < 0)
|
||||
RETURN_NULL;
|
||||
|
||||
jj = n - 1;
|
||||
@ -526,7 +537,10 @@ _ReadChunkArray(int *st,
|
||||
bptr *= bsize;
|
||||
if (isDestLO)
|
||||
{
|
||||
if (lo_lseek((int) destfp, bptr, SEEK_SET) < 0)
|
||||
if (DatumGetInt32(DirectFunctionCall3(lo_lseek,
|
||||
Int32GetDatum((int32) destfp),
|
||||
Int32GetDatum(bptr),
|
||||
Int32GetDatum(SEEK_SET))) < 0)
|
||||
RETURN_NULL;
|
||||
}
|
||||
else
|
||||
@ -538,7 +552,10 @@ _ReadChunkArray(int *st,
|
||||
{
|
||||
temp = (dist[jj] * csize + block_seek + temp_seek) * bsize;
|
||||
srcOff += temp;
|
||||
if (lo_lseek(fp, srcOff, SEEK_SET) < 0)
|
||||
if (DatumGetInt32(DirectFunctionCall3(lo_lseek,
|
||||
Int32GetDatum(fp),
|
||||
Int32GetDatum(srcOff),
|
||||
Int32GetDatum(SEEK_SET))) < 0)
|
||||
RETURN_NULL;
|
||||
}
|
||||
for (i = n - 1, to_read = bsize; i >= 0;
|
||||
@ -550,14 +567,20 @@ _ReadChunkArray(int *st,
|
||||
if (cdist[j])
|
||||
{
|
||||
srcOff += (cdist[j] * bsize);
|
||||
if (lo_lseek(fp, srcOff, SEEK_SET) < 0)
|
||||
if (DatumGetInt32(DirectFunctionCall3(lo_lseek,
|
||||
Int32GetDatum(fp),
|
||||
Int32GetDatum(srcOff),
|
||||
Int32GetDatum(SEEK_SET))) < 0)
|
||||
RETURN_NULL;
|
||||
}
|
||||
block_seek += cdist[j];
|
||||
bptr += adist[j] * bsize;
|
||||
if (isDestLO)
|
||||
{
|
||||
if (lo_lseek((int) destfp, bptr, SEEK_SET) < 0)
|
||||
if (DatumGetInt32(DirectFunctionCall3(lo_lseek,
|
||||
Int32GetDatum((int32) destfp),
|
||||
Int32GetDatum(bptr),
|
||||
Int32GetDatum(SEEK_SET))) < 0)
|
||||
RETURN_NULL;
|
||||
}
|
||||
else
|
||||
@ -675,10 +698,16 @@ _ReadChunkArray1El(int *st,
|
||||
srcOff += (st[i] - chunk_st[i] * C[i]) * PCHUNK[i];
|
||||
|
||||
srcOff *= bsize;
|
||||
if (lo_lseek(fp, srcOff, SEEK_SET) < 0)
|
||||
if (DatumGetInt32(DirectFunctionCall3(lo_lseek,
|
||||
Int32GetDatum(fp),
|
||||
Int32GetDatum(srcOff),
|
||||
Int32GetDatum(SEEK_SET))) < 0)
|
||||
RETURN_NULL;
|
||||
#ifdef LOARRAY
|
||||
return (struct varlena *) LOread(fp, bsize);
|
||||
return (struct varlena *)
|
||||
DatumGetPointer(DirectFunctionCall2(loread,
|
||||
Int32GetDatum(fp),
|
||||
Int32GetDatum(bsize)));
|
||||
#endif
|
||||
return (struct varlena *) 0;
|
||||
}
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -1,7 +1,7 @@
|
||||
/* -----------------------------------------------------------------------
|
||||
* formatting.c
|
||||
*
|
||||
* $Header: /cvsroot/pgsql/src/backend/utils/adt/formatting.c,v 1.9 2000/06/05 07:28:51 tgl Exp $
|
||||
* $Header: /cvsroot/pgsql/src/backend/utils/adt/formatting.c,v 1.10 2000/06/09 01:11:08 tgl Exp $
|
||||
*
|
||||
*
|
||||
* Portions Copyright (c) 1999-2000, PostgreSQL, Inc
|
||||
@ -2372,9 +2372,11 @@ DCH_cache_search(char *str)
|
||||
* TIMESTAMP to_char()
|
||||
* -------------------
|
||||
*/
|
||||
text *
|
||||
timestamp_to_char(Timestamp *dt, text *fmt)
|
||||
Datum
|
||||
timestamp_to_char(PG_FUNCTION_ARGS)
|
||||
{
|
||||
Timestamp dt = PG_GETARG_TIMESTAMP(0);
|
||||
text *fmt = PG_GETARG_TEXT_P(1);
|
||||
text *result,
|
||||
*result_tmp;
|
||||
FormatNode *format;
|
||||
@ -2386,13 +2388,10 @@ timestamp_to_char(Timestamp *dt, text *fmt)
|
||||
flag = 0,
|
||||
x = 0;
|
||||
|
||||
if ((!PointerIsValid(dt)) || (!PointerIsValid(fmt)))
|
||||
return NULL;
|
||||
|
||||
len = VARSIZE(fmt) - VARHDRSZ;
|
||||
|
||||
if ((!len) || (TIMESTAMP_NOT_FINITE(*dt)))
|
||||
return textin("");
|
||||
if ((!len) || (TIMESTAMP_NOT_FINITE(dt)))
|
||||
return PointerGetDatum(textin(""));
|
||||
|
||||
tm->tm_sec = 0;
|
||||
tm->tm_year = 0;
|
||||
@ -2404,18 +2403,18 @@ timestamp_to_char(Timestamp *dt, text *fmt)
|
||||
tm->tm_isdst = 0;
|
||||
tm->tm_mon = 1;
|
||||
|
||||
if (TIMESTAMP_IS_EPOCH(*dt))
|
||||
if (TIMESTAMP_IS_EPOCH(dt))
|
||||
{
|
||||
x = timestamp2tm(SetTimestamp(*dt), NULL, tm, &fsec, NULL);
|
||||
x = timestamp2tm(SetTimestamp(dt), NULL, tm, &fsec, NULL);
|
||||
|
||||
}
|
||||
else if (TIMESTAMP_IS_CURRENT(*dt))
|
||||
else if (TIMESTAMP_IS_CURRENT(dt))
|
||||
{
|
||||
x = timestamp2tm(SetTimestamp(*dt), &tz, tm, &fsec, &tzn);
|
||||
x = timestamp2tm(SetTimestamp(dt), &tz, tm, &fsec, &tzn);
|
||||
|
||||
}
|
||||
else
|
||||
x = timestamp2tm(*dt, &tz, tm, &fsec, &tzn);
|
||||
x = timestamp2tm(dt, &tz, tm, &fsec, &tzn);
|
||||
|
||||
if (x != 0)
|
||||
elog(ERROR, "to_char(): Unable to convert timestamp to tm");
|
||||
@ -2508,7 +2507,7 @@ timestamp_to_char(Timestamp *dt, text *fmt)
|
||||
VARSIZE(result) = len + VARHDRSZ;
|
||||
pfree(result_tmp);
|
||||
|
||||
return result;
|
||||
PG_RETURN_TEXT_P(result);
|
||||
}
|
||||
|
||||
|
||||
@ -2519,20 +2518,19 @@ timestamp_to_char(Timestamp *dt, text *fmt)
|
||||
* ( to_timestamp is reverse to_char() )
|
||||
* ---------------------
|
||||
*/
|
||||
Timestamp *
|
||||
to_timestamp(text *date_str, text *fmt)
|
||||
Datum
|
||||
to_timestamp(PG_FUNCTION_ARGS)
|
||||
{
|
||||
text *date_str = PG_GETARG_TEXT_P(0);
|
||||
text *fmt = PG_GETARG_TEXT_P(1);
|
||||
FormatNode *format;
|
||||
int flag = 0;
|
||||
Timestamp *result;
|
||||
Timestamp result;
|
||||
char *str;
|
||||
int len = 0,
|
||||
fsec = 0,
|
||||
tz = 0;
|
||||
|
||||
if ((!PointerIsValid(date_str)) || (!PointerIsValid(fmt)))
|
||||
return NULL;
|
||||
|
||||
tm->tm_sec = 0;
|
||||
tm->tm_year = 0;
|
||||
tm->tm_min = 0;
|
||||
@ -2543,8 +2541,6 @@ to_timestamp(text *date_str, text *fmt)
|
||||
tm->tm_isdst = 0;
|
||||
tm->tm_mon = 1;
|
||||
|
||||
result = palloc(sizeof(Timestamp));
|
||||
|
||||
len = VARSIZE(fmt) - VARHDRSZ;
|
||||
|
||||
if (len)
|
||||
@ -2668,10 +2664,10 @@ to_timestamp(text *date_str, text *fmt)
|
||||
#ifdef DEBUG_TO_FROM_CHAR
|
||||
NOTICE_TM;
|
||||
#endif
|
||||
if (tm2timestamp(tm, fsec, &tz, result) != 0)
|
||||
elog(ERROR, "to_datatime(): can't convert 'tm' to timestamp.");
|
||||
if (tm2timestamp(tm, fsec, &tz, &result) != 0)
|
||||
elog(ERROR, "to_timestamp(): can't convert 'tm' to timestamp.");
|
||||
|
||||
return result;
|
||||
PG_RETURN_TIMESTAMP(result);
|
||||
}
|
||||
|
||||
/* ----------
|
||||
@ -2679,10 +2675,13 @@ to_timestamp(text *date_str, text *fmt)
|
||||
* Make Date from date_str which is formated at argument 'fmt'
|
||||
* ----------
|
||||
*/
|
||||
DateADT
|
||||
to_date(text *date_str, text *fmt)
|
||||
Datum
|
||||
to_date(PG_FUNCTION_ARGS)
|
||||
{
|
||||
return timestamp_date(to_timestamp(date_str, fmt));
|
||||
/* Quick hack: since our inputs are just like to_timestamp,
|
||||
* hand over the whole input info struct...
|
||||
*/
|
||||
return DirectFunctionCall1(timestamp_date, to_timestamp(fcinfo));
|
||||
}
|
||||
|
||||
/**********************************************************************
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -8,7 +8,7 @@
|
||||
*
|
||||
*
|
||||
* IDENTIFICATION
|
||||
* $Header: /cvsroot/pgsql/src/backend/utils/adt/Attic/not_in.c,v 1.22 2000/01/26 05:57:14 momjian Exp $
|
||||
* $Header: /cvsroot/pgsql/src/backend/utils/adt/Attic/not_in.c,v 1.23 2000/06/09 01:11:09 tgl Exp $
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
@ -34,23 +34,28 @@ static int my_varattno(Relation rd, char *a);
|
||||
*
|
||||
* ----------------------------------------------------------------
|
||||
*/
|
||||
bool
|
||||
int4notin(int32 not_in_arg, char *relation_and_attr)
|
||||
Datum
|
||||
int4notin(PG_FUNCTION_ARGS)
|
||||
{
|
||||
int32 not_in_arg = PG_GETARG_INT32(0);
|
||||
text *relation_and_attr = PG_GETARG_TEXT_P(1);
|
||||
Relation relation_to_scan;
|
||||
int32 integer_value;
|
||||
HeapTuple current_tuple;
|
||||
HeapScanDesc scan_descriptor;
|
||||
bool dummy,
|
||||
bool isNull,
|
||||
retval;
|
||||
int attrid;
|
||||
int attrid,
|
||||
strlength;
|
||||
char *relation,
|
||||
*attribute;
|
||||
char my_copy[NAMEDATALEN * 2 + 2];
|
||||
Datum value;
|
||||
|
||||
strncpy(my_copy, relation_and_attr, sizeof(my_copy));
|
||||
my_copy[sizeof(my_copy) - 1] = '\0';
|
||||
strlength = VARSIZE(relation_and_attr) - VARHDRSZ + 1;
|
||||
if (strlength > sizeof(my_copy))
|
||||
strlength = sizeof(my_copy);
|
||||
StrNCpy(my_copy, VARDATA(relation_and_attr), strlength);
|
||||
|
||||
relation = (char *) strtok(my_copy, ".");
|
||||
attribute = (char *) strtok(NULL, ".");
|
||||
@ -81,7 +86,9 @@ int4notin(int32 not_in_arg, char *relation_and_attr)
|
||||
value = heap_getattr(current_tuple,
|
||||
(AttrNumber) attrid,
|
||||
RelationGetDescr(relation_to_scan),
|
||||
&dummy);
|
||||
&isNull);
|
||||
if (isNull)
|
||||
continue;
|
||||
integer_value = DatumGetInt32(value);
|
||||
if (not_in_arg == integer_value)
|
||||
{
|
||||
@ -94,15 +101,21 @@ int4notin(int32 not_in_arg, char *relation_and_attr)
|
||||
heap_endscan(scan_descriptor);
|
||||
heap_close(relation_to_scan, AccessShareLock);
|
||||
|
||||
return retval;
|
||||
PG_RETURN_BOOL(retval);
|
||||
}
|
||||
|
||||
bool
|
||||
oidnotin(Oid the_oid, char *compare)
|
||||
Datum
|
||||
oidnotin(PG_FUNCTION_ARGS)
|
||||
{
|
||||
Oid the_oid = PG_GETARG_OID(0);
|
||||
#ifdef NOT_USED
|
||||
text *relation_and_attr = PG_GETARG_TEXT_P(1);
|
||||
#endif
|
||||
|
||||
if (the_oid == InvalidOid)
|
||||
return false;
|
||||
return int4notin(the_oid, compare);
|
||||
PG_RETURN_BOOL(false);
|
||||
/* XXX assume oid maps to int4 */
|
||||
return int4notin(fcinfo);
|
||||
}
|
||||
|
||||
/*
|
||||
@ -117,7 +130,7 @@ my_varattno(Relation rd, char *a)
|
||||
|
||||
for (i = 0; i < rd->rd_rel->relnatts; i++)
|
||||
{
|
||||
if (!namestrcmp(&rd->rd_att->attrs[i]->attname, a))
|
||||
if (namestrcmp(&rd->rd_att->attrs[i]->attname, a) == 0)
|
||||
return i + 1;
|
||||
}
|
||||
return -1;
|
||||
|
@ -3,7 +3,7 @@
|
||||
* out of its tuple
|
||||
*
|
||||
* IDENTIFICATION
|
||||
* $Header: /cvsroot/pgsql/src/backend/utils/adt/ruleutils.c,v 1.50 2000/05/30 04:24:51 tgl Exp $
|
||||
* $Header: /cvsroot/pgsql/src/backend/utils/adt/ruleutils.c,v 1.51 2000/06/09 01:11:09 tgl Exp $
|
||||
*
|
||||
* This software is copyrighted by Jan Wieck - Hamburg.
|
||||
*
|
||||
@ -319,9 +319,10 @@ pg_get_viewdef(NameData *rname)
|
||||
* get_indexdef - Get the definition of an index
|
||||
* ----------
|
||||
*/
|
||||
text *
|
||||
pg_get_indexdef(Oid indexrelid)
|
||||
Datum
|
||||
pg_get_indexdef(PG_FUNCTION_ARGS)
|
||||
{
|
||||
Oid indexrelid = PG_GETARG_OID(0);
|
||||
text *indexdef;
|
||||
HeapTuple ht_idx;
|
||||
HeapTuple ht_idxrel;
|
||||
@ -541,7 +542,7 @@ pg_get_indexdef(Oid indexrelid)
|
||||
if (SPI_finish() != SPI_OK_FINISH)
|
||||
elog(ERROR, "get_viewdef: SPI_finish() failed");
|
||||
|
||||
return indexdef;
|
||||
PG_RETURN_TEXT_P(indexdef);
|
||||
}
|
||||
|
||||
|
||||
|
@ -15,7 +15,7 @@
|
||||
*
|
||||
*
|
||||
* IDENTIFICATION
|
||||
* $Header: /cvsroot/pgsql/src/backend/utils/adt/selfuncs.c,v 1.69 2000/06/05 07:28:52 tgl Exp $
|
||||
* $Header: /cvsroot/pgsql/src/backend/utils/adt/selfuncs.c,v 1.70 2000/06/09 01:11:09 tgl Exp $
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
@ -1038,14 +1038,16 @@ convert_timevalue_to_scalar(Datum value, Oid typid)
|
||||
switch (typid)
|
||||
{
|
||||
case TIMESTAMPOID:
|
||||
return *((Timestamp *) DatumGetPointer(value));
|
||||
return DatumGetTimestamp(value);
|
||||
case ABSTIMEOID:
|
||||
return *abstime_timestamp(value);
|
||||
return DatumGetTimestamp(DirectFunctionCall1(abstime_timestamp,
|
||||
value));
|
||||
case DATEOID:
|
||||
return *date_timestamp(value);
|
||||
return DatumGetTimestamp(DirectFunctionCall1(date_timestamp,
|
||||
value));
|
||||
case INTERVALOID:
|
||||
{
|
||||
Interval *interval = (Interval *) DatumGetPointer(value);
|
||||
Interval *interval = DatumGetIntervalP(value);
|
||||
|
||||
/*
|
||||
* Convert the month part of Interval to days using
|
||||
@ -1056,17 +1058,17 @@ convert_timevalue_to_scalar(Datum value, Oid typid)
|
||||
interval->month * (365.25 / 12.0 * 24.0 * 60.0 * 60.0);
|
||||
}
|
||||
case RELTIMEOID:
|
||||
return (RelativeTime) DatumGetInt32(value);
|
||||
return DatumGetRelativeTime(value);
|
||||
case TINTERVALOID:
|
||||
{
|
||||
TimeInterval interval = (TimeInterval) DatumGetPointer(value);
|
||||
TimeInterval interval = DatumGetTimeInterval(value);
|
||||
|
||||
if (interval->status != 0)
|
||||
return interval->data[1] - interval->data[0];
|
||||
return 0; /* for lack of a better idea */
|
||||
}
|
||||
case TIMEOID:
|
||||
return *((TimeADT *) DatumGetPointer(value));
|
||||
return DatumGetTimeADT(value);
|
||||
}
|
||||
/* Can't get here unless someone tries to use scalarltsel/scalargtsel
|
||||
* on an operator with one timevalue and one non-timevalue operand.
|
||||
|
@ -10,7 +10,7 @@
|
||||
*
|
||||
*
|
||||
* IDENTIFICATION
|
||||
* $Header: /cvsroot/pgsql/src/backend/utils/adt/Attic/sets.c,v 1.31 2000/05/28 17:56:06 tgl Exp $
|
||||
* $Header: /cvsroot/pgsql/src/backend/utils/adt/Attic/sets.c,v 1.32 2000/06/09 01:11:09 tgl Exp $
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
@ -140,8 +140,12 @@ SetDefine(char *querystr, char *typename)
|
||||
* never executed. At runtime, the OID of the actual set is substituted
|
||||
* into the :funcid.
|
||||
*/
|
||||
int
|
||||
seteval(Oid funcoid)
|
||||
Datum
|
||||
seteval(PG_FUNCTION_ARGS)
|
||||
{
|
||||
return 17;
|
||||
Oid funcoid = PG_GETARG_OID(0);
|
||||
|
||||
elog(ERROR, "seteval called for OID %u", funcoid);
|
||||
|
||||
PG_RETURN_INT32(0); /* keep compiler happy */
|
||||
}
|
||||
|
@ -8,7 +8,7 @@
|
||||
*
|
||||
*
|
||||
* IDENTIFICATION
|
||||
* $Header: /cvsroot/pgsql/src/backend/utils/adt/tid.c,v 1.19 2000/06/08 22:37:28 momjian Exp $
|
||||
* $Header: /cvsroot/pgsql/src/backend/utils/adt/tid.c,v 1.20 2000/06/09 01:11:09 tgl Exp $
|
||||
*
|
||||
* NOTES
|
||||
* input routine largely stolen from boxin().
|
||||
@ -160,19 +160,21 @@ text_tid(const text *string)
|
||||
|
||||
/*
|
||||
* Functions to get latest tid of a specified tuple.
|
||||
* Maybe these implementations is moved
|
||||
* to another place
|
||||
*/
|
||||
ItemPointer
|
||||
currtid_byreloid(Oid reloid, ItemPointer tid)
|
||||
*
|
||||
* Maybe these implementations should be moved to another place
|
||||
*/
|
||||
Datum
|
||||
currtid_byreloid(PG_FUNCTION_ARGS)
|
||||
{
|
||||
ItemPointer result = NULL,
|
||||
ret;
|
||||
Relation rel;
|
||||
Oid reloid = PG_GETARG_OID(0);
|
||||
ItemPointer tid = (ItemPointer) PG_GETARG_POINTER(1);
|
||||
ItemPointer result,
|
||||
ret;
|
||||
Relation rel;
|
||||
|
||||
result = (ItemPointer) palloc(sizeof(ItemPointerData));
|
||||
ItemPointerSetInvalid(result);
|
||||
if (rel = heap_open(reloid, AccessShareLock), rel)
|
||||
if ((rel = heap_open(reloid, AccessShareLock)) != NULL)
|
||||
{
|
||||
ret = heap_get_latest_tid(rel, SnapshotNow, tid);
|
||||
if (ret)
|
||||
@ -182,25 +184,24 @@ currtid_byreloid(Oid reloid, ItemPointer tid)
|
||||
else
|
||||
elog(ERROR, "Relation %u not found", reloid);
|
||||
|
||||
return result;
|
||||
} /* currtid_byreloid() */
|
||||
PG_RETURN_POINTER(result);
|
||||
}
|
||||
|
||||
ItemPointer
|
||||
currtid_byrelname(const text *relname, ItemPointer tid)
|
||||
Datum
|
||||
currtid_byrelname(PG_FUNCTION_ARGS)
|
||||
{
|
||||
ItemPointer result = NULL,
|
||||
ret;
|
||||
char *str;
|
||||
Relation rel;
|
||||
text *relname = PG_GETARG_TEXT_P(0);
|
||||
ItemPointer tid = (ItemPointer) PG_GETARG_POINTER(1);
|
||||
ItemPointer result,
|
||||
ret;
|
||||
char *str;
|
||||
Relation rel;
|
||||
|
||||
if (!relname)
|
||||
return result;
|
||||
|
||||
str = textout((text *) relname);
|
||||
str = textout(relname);
|
||||
|
||||
result = (ItemPointer) palloc(sizeof(ItemPointerData));
|
||||
ItemPointerSetInvalid(result);
|
||||
if (rel = heap_openr(str, AccessShareLock), rel)
|
||||
if ((rel = heap_openr(str, AccessShareLock)) != NULL)
|
||||
{
|
||||
ret = heap_get_latest_tid(rel, SnapshotNow, tid);
|
||||
if (ret)
|
||||
@ -208,8 +209,9 @@ currtid_byrelname(const text *relname, ItemPointer tid)
|
||||
heap_close(rel, AccessShareLock);
|
||||
}
|
||||
else
|
||||
elog(ERROR, "Relation %s not found", textout((text *) relname));
|
||||
elog(ERROR, "Relation %s not found", str);
|
||||
|
||||
pfree(str);
|
||||
|
||||
return result;
|
||||
} /* currtid_byrelname() */
|
||||
PG_RETURN_POINTER(result);
|
||||
}
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -37,7 +37,7 @@
|
||||
* Portions Copyright (c) 1996-2000, PostgreSQL, Inc
|
||||
* Portions Copyright (c) 1994, Regents of the University of California
|
||||
*
|
||||
* $Id: catversion.h,v 1.26 2000/06/07 04:09:44 momjian Exp $
|
||||
* $Id: catversion.h,v 1.27 2000/06/09 01:11:10 tgl Exp $
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
@ -53,6 +53,6 @@
|
||||
*/
|
||||
|
||||
/* yyyymmddN */
|
||||
#define CATALOG_VERSION_NO 200006071
|
||||
#define CATALOG_VERSION_NO 200006081
|
||||
|
||||
#endif
|
||||
|
@ -7,7 +7,7 @@
|
||||
* Portions Copyright (c) 1996-2000, PostgreSQL, Inc
|
||||
* Portions Copyright (c) 1994, Regents of the University of California
|
||||
*
|
||||
* $Id: pg_proc.h,v 1.136 2000/06/05 07:28:59 tgl Exp $
|
||||
* $Id: pg_proc.h,v 1.137 2000/06/09 01:11:10 tgl Exp $
|
||||
*
|
||||
* NOTES
|
||||
* The script catalog/genbki.sh reads this file and generates .bki
|
||||
@ -500,77 +500,77 @@ DESCR("convert float4 to int2");
|
||||
DATA(insert OID = 239 ( line_distance PGUID 11 f t t t 2 f 701 "628 628" 100 0 0 100 line_distance - ));
|
||||
DESCR("distance between");
|
||||
|
||||
DATA(insert OID = 240 ( nabstimein PGUID 11 f t f t 1 f 702 "0" 100 0 0 100 nabstimein - ));
|
||||
DATA(insert OID = 240 ( nabstimein PGUID 12 f t f t 1 f 702 "0" 100 0 0 100 nabstimein - ));
|
||||
DESCR("(internal)");
|
||||
DATA(insert OID = 241 ( nabstimeout PGUID 11 f t f t 1 f 23 "0" 100 0 0 100 nabstimeout - ));
|
||||
DATA(insert OID = 241 ( nabstimeout PGUID 12 f t f t 1 f 23 "0" 100 0 0 100 nabstimeout - ));
|
||||
DESCR("(internal)");
|
||||
DATA(insert OID = 242 ( reltimein PGUID 11 f t f t 1 f 703 "0" 100 0 0 100 reltimein - ));
|
||||
DATA(insert OID = 242 ( reltimein PGUID 12 f t f t 1 f 703 "0" 100 0 0 100 reltimein - ));
|
||||
DESCR("(internal)");
|
||||
DATA(insert OID = 243 ( reltimeout PGUID 11 f t f t 1 f 23 "0" 100 0 0 100 reltimeout - ));
|
||||
DATA(insert OID = 243 ( reltimeout PGUID 12 f t f t 1 f 23 "0" 100 0 0 100 reltimeout - ));
|
||||
DESCR("(internal)");
|
||||
DATA(insert OID = 244 ( timepl PGUID 11 f t f t 2 f 702 "702 703" 100 0 0 100 timepl - ));
|
||||
DATA(insert OID = 244 ( timepl PGUID 12 f t f t 2 f 702 "702 703" 100 0 0 100 timepl - ));
|
||||
DESCR("addition");
|
||||
DATA(insert OID = 245 ( timemi PGUID 11 f t f t 2 f 702 "702 703" 100 0 0 100 timemi - ));
|
||||
DATA(insert OID = 245 ( timemi PGUID 12 f t f t 2 f 702 "702 703" 100 0 0 100 timemi - ));
|
||||
DESCR("subtract");
|
||||
DATA(insert OID = 246 ( tintervalin PGUID 11 f t f t 1 f 704 "0" 100 0 0 100 tintervalin - ));
|
||||
DATA(insert OID = 246 ( tintervalin PGUID 12 f t f t 1 f 704 "0" 100 0 0 100 tintervalin - ));
|
||||
DESCR("(internal)");
|
||||
DATA(insert OID = 247 ( tintervalout PGUID 11 f t f t 1 f 23 "0" 100 0 0 100 tintervalout - ));
|
||||
DATA(insert OID = 247 ( tintervalout PGUID 12 f t f t 1 f 23 "0" 100 0 0 100 tintervalout - ));
|
||||
DESCR("(internal)");
|
||||
DATA(insert OID = 248 ( intinterval PGUID 11 f t f t 2 f 16 "702 704" 100 0 0 100 intinterval - ));
|
||||
DATA(insert OID = 248 ( intinterval PGUID 12 f t f t 2 f 16 "702 704" 100 0 0 100 intinterval - ));
|
||||
DESCR("abstime in tinterval");
|
||||
DATA(insert OID = 249 ( tintervalrel PGUID 11 f t f t 1 f 703 "704" 100 0 0 100 tintervalrel - ));
|
||||
DATA(insert OID = 249 ( tintervalrel PGUID 12 f t f t 1 f 703 "704" 100 0 0 100 tintervalrel - ));
|
||||
DESCR("");
|
||||
DATA(insert OID = 250 ( timenow PGUID 11 f t f t 0 f 702 "0" 100 0 0 100 timenow - ));
|
||||
DATA(insert OID = 250 ( timenow PGUID 12 f t f t 0 f 702 "0" 100 0 0 100 timenow - ));
|
||||
DESCR("Current date and time (abstime)");
|
||||
DATA(insert OID = 251 ( abstimeeq PGUID 11 f t f t 2 f 16 "702 702" 100 0 0 100 abstimeeq - ));
|
||||
DATA(insert OID = 251 ( abstimeeq PGUID 12 f t f t 2 f 16 "702 702" 100 0 0 100 abstimeeq - ));
|
||||
DESCR("equal");
|
||||
DATA(insert OID = 252 ( abstimene PGUID 11 f t f t 2 f 16 "702 702" 100 0 0 100 abstimene - ));
|
||||
DATA(insert OID = 252 ( abstimene PGUID 12 f t f t 2 f 16 "702 702" 100 0 0 100 abstimene - ));
|
||||
DESCR("not equal");
|
||||
DATA(insert OID = 253 ( abstimelt PGUID 11 f t f t 2 f 16 "702 702" 100 0 0 100 abstimelt - ));
|
||||
DATA(insert OID = 253 ( abstimelt PGUID 12 f t f t 2 f 16 "702 702" 100 0 0 100 abstimelt - ));
|
||||
DESCR("less-than");
|
||||
DATA(insert OID = 254 ( abstimegt PGUID 11 f t f t 2 f 16 "702 702" 100 0 0 100 abstimegt - ));
|
||||
DATA(insert OID = 254 ( abstimegt PGUID 12 f t f t 2 f 16 "702 702" 100 0 0 100 abstimegt - ));
|
||||
DESCR("greater-than");
|
||||
DATA(insert OID = 255 ( abstimele PGUID 11 f t f t 2 f 16 "702 702" 100 0 0 100 abstimele - ));
|
||||
DATA(insert OID = 255 ( abstimele PGUID 12 f t f t 2 f 16 "702 702" 100 0 0 100 abstimele - ));
|
||||
DESCR("less-than-or-equal");
|
||||
DATA(insert OID = 256 ( abstimege PGUID 11 f t f t 2 f 16 "702 702" 100 0 0 100 abstimege - ));
|
||||
DATA(insert OID = 256 ( abstimege PGUID 12 f t f t 2 f 16 "702 702" 100 0 0 100 abstimege - ));
|
||||
DESCR("greater-than-or-equal");
|
||||
DATA(insert OID = 257 ( reltimeeq PGUID 11 f t t t 2 f 16 "703 703" 100 0 0 100 reltimeeq - ));
|
||||
DATA(insert OID = 257 ( reltimeeq PGUID 12 f t t t 2 f 16 "703 703" 100 0 0 100 reltimeeq - ));
|
||||
DESCR("equal");
|
||||
DATA(insert OID = 258 ( reltimene PGUID 11 f t t t 2 f 16 "703 703" 100 0 0 100 reltimene - ));
|
||||
DATA(insert OID = 258 ( reltimene PGUID 12 f t t t 2 f 16 "703 703" 100 0 0 100 reltimene - ));
|
||||
DESCR("not equal");
|
||||
DATA(insert OID = 259 ( reltimelt PGUID 11 f t t t 2 f 16 "703 703" 100 0 0 100 reltimelt - ));
|
||||
DATA(insert OID = 259 ( reltimelt PGUID 12 f t t t 2 f 16 "703 703" 100 0 0 100 reltimelt - ));
|
||||
DESCR("less-than");
|
||||
DATA(insert OID = 260 ( reltimegt PGUID 11 f t t t 2 f 16 "703 703" 100 0 0 100 reltimegt - ));
|
||||
DATA(insert OID = 260 ( reltimegt PGUID 12 f t t t 2 f 16 "703 703" 100 0 0 100 reltimegt - ));
|
||||
DESCR("greater-than");
|
||||
DATA(insert OID = 261 ( reltimele PGUID 11 f t t t 2 f 16 "703 703" 100 0 0 100 reltimele - ));
|
||||
DATA(insert OID = 261 ( reltimele PGUID 12 f t t t 2 f 16 "703 703" 100 0 0 100 reltimele - ));
|
||||
DESCR("less-than-or-equal");
|
||||
DATA(insert OID = 262 ( reltimege PGUID 11 f t t t 2 f 16 "703 703" 100 0 0 100 reltimege - ));
|
||||
DATA(insert OID = 262 ( reltimege PGUID 12 f t t t 2 f 16 "703 703" 100 0 0 100 reltimege - ));
|
||||
DESCR("greater-than-or-equal");
|
||||
DATA(insert OID = 263 ( tintervalsame PGUID 11 f t f t 2 f 16 "704 704" 100 0 0 100 tintervalsame - ));
|
||||
DATA(insert OID = 263 ( tintervalsame PGUID 12 f t f t 2 f 16 "704 704" 100 0 0 100 tintervalsame - ));
|
||||
DESCR("same as");
|
||||
DATA(insert OID = 264 ( tintervalct PGUID 11 f t f t 2 f 16 "704 704" 100 0 0 100 tintervalct - ));
|
||||
DATA(insert OID = 264 ( tintervalct PGUID 12 f t f t 2 f 16 "704 704" 100 0 0 100 tintervalct - ));
|
||||
DESCR("less-than");
|
||||
DATA(insert OID = 265 ( tintervalov PGUID 11 f t f t 2 f 16 "704 704" 100 0 0 100 tintervalov - ));
|
||||
DATA(insert OID = 265 ( tintervalov PGUID 12 f t f t 2 f 16 "704 704" 100 0 0 100 tintervalov - ));
|
||||
DESCR("overlaps");
|
||||
DATA(insert OID = 266 ( tintervalleneq PGUID 11 f t f t 2 f 16 "704 703" 100 0 0 100 tintervalleneq - ));
|
||||
DATA(insert OID = 266 ( tintervalleneq PGUID 12 f t f t 2 f 16 "704 703" 100 0 0 100 tintervalleneq - ));
|
||||
DESCR("length equal");
|
||||
DATA(insert OID = 267 ( tintervallenne PGUID 11 f t f t 2 f 16 "704 703" 100 0 0 100 tintervallenne - ));
|
||||
DATA(insert OID = 267 ( tintervallenne PGUID 12 f t f t 2 f 16 "704 703" 100 0 0 100 tintervallenne - ));
|
||||
DESCR("length not equal to");
|
||||
DATA(insert OID = 268 ( tintervallenlt PGUID 11 f t f t 2 f 16 "704 703" 100 0 0 100 tintervallenlt - ));
|
||||
DATA(insert OID = 268 ( tintervallenlt PGUID 12 f t f t 2 f 16 "704 703" 100 0 0 100 tintervallenlt - ));
|
||||
DESCR("length less-than");
|
||||
DATA(insert OID = 269 ( tintervallengt PGUID 11 f t f t 2 f 16 "704 703" 100 0 0 100 tintervallengt - ));
|
||||
DATA(insert OID = 269 ( tintervallengt PGUID 12 f t f t 2 f 16 "704 703" 100 0 0 100 tintervallengt - ));
|
||||
DESCR("length greater-than");
|
||||
DATA(insert OID = 270 ( tintervallenle PGUID 11 f t f t 2 f 16 "704 703" 100 0 0 100 tintervallenle - ));
|
||||
DATA(insert OID = 270 ( tintervallenle PGUID 12 f t f t 2 f 16 "704 703" 100 0 0 100 tintervallenle - ));
|
||||
DESCR("length less-than-or-equal");
|
||||
DATA(insert OID = 271 ( tintervallenge PGUID 11 f t f t 2 f 16 "704 703" 100 0 0 100 tintervallenge - ));
|
||||
DATA(insert OID = 271 ( tintervallenge PGUID 12 f t f t 2 f 16 "704 703" 100 0 0 100 tintervallenge - ));
|
||||
DESCR("length greater-than-or-equal");
|
||||
DATA(insert OID = 272 ( tintervalstart PGUID 11 f t f t 1 f 702 "704" 100 0 0 100 tintervalstart - ));
|
||||
DATA(insert OID = 272 ( tintervalstart PGUID 12 f t f t 1 f 702 "704" 100 0 0 100 tintervalstart - ));
|
||||
DESCR("start of interval");
|
||||
DATA(insert OID = 273 ( tintervalend PGUID 11 f t f t 1 f 702 "704" 100 0 0 100 tintervalend - ));
|
||||
DATA(insert OID = 273 ( tintervalend PGUID 12 f t f t 1 f 702 "704" 100 0 0 100 tintervalend - ));
|
||||
DESCR("");
|
||||
DATA(insert OID = 274 ( timeofday PGUID 11 f t f t 0 f 25 "0" 100 0 0 100 timeofday - ));
|
||||
DATA(insert OID = 274 ( timeofday PGUID 12 f t f t 0 f 25 "0" 100 0 0 100 timeofday - ));
|
||||
DESCR("Current date and time with microseconds");
|
||||
DATA(insert OID = 275 ( isfinite PGUID 11 f t f t 1 f 16 "702" 100 0 0 100 abstime_finite - ));
|
||||
DATA(insert OID = 275 ( isfinite PGUID 12 f t f t 1 f 16 "702" 100 0 0 100 abstime_finite - ));
|
||||
DESCR("");
|
||||
|
||||
DATA(insert OID = 276 ( int2fac PGUID 12 f t t t 1 f 23 "21" 100 0 0 100 int2fac - ));
|
||||
@ -748,7 +748,7 @@ DATA(insert OID = 356 ( btoidcmp PGUID 12 f t t t 2 f 23 "26 26" 100 0 0 10
|
||||
DESCR("btree less-equal-greater");
|
||||
DATA(insert OID = 404 ( btoidvectorcmp PGUID 12 f t t t 2 f 23 "30 30" 100 0 0 100 btoidvectorcmp - ));
|
||||
DESCR("btree less-equal-greater");
|
||||
DATA(insert OID = 357 ( btabstimecmp PGUID 11 f t f t 2 f 23 "702 702" 100 0 0 100 btabstimecmp - ));
|
||||
DATA(insert OID = 357 ( btabstimecmp PGUID 12 f t f t 2 f 23 "702 702" 100 0 0 100 btabstimecmp - ));
|
||||
DESCR("btree less-equal-greater");
|
||||
DATA(insert OID = 358 ( btcharcmp PGUID 12 f t t t 2 f 23 "18 18" 100 0 0 100 btcharcmp - ));
|
||||
DESCR("btree less-equal-greater");
|
||||
@ -894,9 +894,9 @@ DESCR("convert float8 to int8");
|
||||
|
||||
/* OIDS 600 - 699 */
|
||||
|
||||
DATA(insert OID = 1285 ( int4notin PGUID 11 f t f t 2 f 16 "23 0" 100 0 0 100 int4notin - ));
|
||||
DATA(insert OID = 1285 ( int4notin PGUID 12 f t f t 2 f 16 "23 25" 100 0 0 100 int4notin - ));
|
||||
DESCR("not in");
|
||||
DATA(insert OID = 1286 ( oidnotin PGUID 11 f t f t 2 f 16 "26 0" 100 0 0 100 oidnotin - ));
|
||||
DATA(insert OID = 1286 ( oidnotin PGUID 12 f t f t 2 f 16 "26 25" 100 0 0 100 oidnotin - ));
|
||||
DESCR("not in");
|
||||
DATA(insert OID = 1287 ( int44in PGUID 12 f t t t 1 f 22 "0" 100 0 0 100 int44in - ));
|
||||
DESCR("(internal)");
|
||||
@ -918,7 +918,7 @@ DESCR("truncate char()");
|
||||
DATA(insert OID = 669 ( varchar PGUID 11 f t t t 2 f 1043 "1043 23" 100 0 0 100 varchar - ));
|
||||
DESCR("truncate varchar()");
|
||||
|
||||
DATA(insert OID = 676 ( mktinterval PGUID 11 f t f t 2 f 704 "702 702" 100 0 0 100 mktinterval - ));
|
||||
DATA(insert OID = 676 ( mktinterval PGUID 12 f t f t 2 f 704 "702 702" 100 0 0 100 mktinterval - ));
|
||||
DESCR("convert to tinterval");
|
||||
DATA(insert OID = 619 ( oidvectorne PGUID 12 f t t t 2 f 16 "30 30" 100 0 0 100 oidvectorne - ));
|
||||
DESCR("less-than");
|
||||
@ -1012,9 +1012,9 @@ DESCR("storage manager");
|
||||
DATA(insert OID = 763 ( smgrne PGUID 12 f t f t 2 f 16 "210 210" 100 0 0 100 smgrne - ));
|
||||
DESCR("storage manager");
|
||||
|
||||
DATA(insert OID = 764 ( lo_import PGUID 11 f t f t 1 f 26 "25" 100 0 0 100 lo_import - ));
|
||||
DATA(insert OID = 764 ( lo_import PGUID 12 f t f t 1 f 26 "25" 100 0 0 100 lo_import - ));
|
||||
DESCR("large object import");
|
||||
DATA(insert OID = 765 ( lo_export PGUID 11 f t f t 2 f 23 "26 25" 100 0 0 100 lo_export - ));
|
||||
DATA(insert OID = 765 ( lo_export PGUID 12 f t f t 2 f 23 "26 25" 100 0 0 100 lo_export - ));
|
||||
DESCR("large object export");
|
||||
|
||||
DATA(insert OID = 766 ( int4inc PGUID 12 f t t t 1 f 23 "23" 100 0 0 100 int4inc - ));
|
||||
@ -1051,17 +1051,17 @@ DESCR("gist(internal)");
|
||||
DATA(insert OID = 782 ( gistbuild PGUID 11 f t f t 9 f 23 "0" 100 0 0 100 gistbuild - ));
|
||||
DESCR("gist(internal)");
|
||||
|
||||
DATA(insert OID = 784 ( tintervaleq PGUID 11 f t f t 2 f 16 "704 704" 100 0 0 100 tintervaleq - ));
|
||||
DATA(insert OID = 784 ( tintervaleq PGUID 12 f t f t 2 f 16 "704 704" 100 0 0 100 tintervaleq - ));
|
||||
DESCR("equal");
|
||||
DATA(insert OID = 785 ( tintervalne PGUID 11 f t f t 2 f 16 "704 704" 100 0 0 100 tintervalne - ));
|
||||
DATA(insert OID = 785 ( tintervalne PGUID 12 f t f t 2 f 16 "704 704" 100 0 0 100 tintervalne - ));
|
||||
DESCR("not equal");
|
||||
DATA(insert OID = 786 ( tintervallt PGUID 11 f t f t 2 f 16 "704 704" 100 0 0 100 tintervallt - ));
|
||||
DATA(insert OID = 786 ( tintervallt PGUID 12 f t f t 2 f 16 "704 704" 100 0 0 100 tintervallt - ));
|
||||
DESCR("less-than");
|
||||
DATA(insert OID = 787 ( tintervalgt PGUID 11 f t f t 2 f 16 "704 704" 100 0 0 100 tintervalgt - ));
|
||||
DATA(insert OID = 787 ( tintervalgt PGUID 12 f t f t 2 f 16 "704 704" 100 0 0 100 tintervalgt - ));
|
||||
DESCR("greater-than");
|
||||
DATA(insert OID = 788 ( tintervalle PGUID 11 f t f t 2 f 16 "704 704" 100 0 0 100 tintervalle - ));
|
||||
DATA(insert OID = 788 ( tintervalle PGUID 12 f t f t 2 f 16 "704 704" 100 0 0 100 tintervalle - ));
|
||||
DESCR("less-than-or-equal");
|
||||
DATA(insert OID = 789 ( tintervalge PGUID 11 f t f t 2 f 16 "704 704" 100 0 0 100 tintervalge - ));
|
||||
DATA(insert OID = 789 ( tintervalge PGUID 12 f t f t 2 f 16 "704 704" 100 0 0 100 tintervalge - ));
|
||||
DESCR("greater-than-or-equal");
|
||||
|
||||
/* OIDS 800 - 899 */
|
||||
@ -1204,19 +1204,19 @@ DESCR("bool is true (not false or unknown)");
|
||||
DATA(insert OID = 951 ( isfalse PGUID 12 f t t f 1 f 16 "16" 100 0 0 100 isfalse - ));
|
||||
DESCR("bool is false (not true or unknown)");
|
||||
|
||||
DATA(insert OID = 952 ( lo_open PGUID 11 f t f t 2 f 23 "26 23" 100 0 0 100 lo_open - ));
|
||||
DATA(insert OID = 952 ( lo_open PGUID 12 f t f t 2 f 23 "26 23" 100 0 0 100 lo_open - ));
|
||||
DESCR("large object open");
|
||||
DATA(insert OID = 953 ( lo_close PGUID 11 f t f t 1 f 23 "23" 100 0 0 100 lo_close - ));
|
||||
DATA(insert OID = 953 ( lo_close PGUID 12 f t f t 1 f 23 "23" 100 0 0 100 lo_close - ));
|
||||
DESCR("large object close");
|
||||
DATA(insert OID = 954 ( loread PGUID 11 f t f t 2 f 17 "23 23" 100 0 0 100 loread - ));
|
||||
DATA(insert OID = 954 ( loread PGUID 12 f t f t 2 f 17 "23 23" 100 0 0 100 loread - ));
|
||||
DESCR("large object read");
|
||||
DATA(insert OID = 955 ( lowrite PGUID 11 f t f t 2 f 23 "23 17" 100 0 0 100 lowrite - ));
|
||||
DATA(insert OID = 955 ( lowrite PGUID 12 f t f t 2 f 23 "23 17" 100 0 0 100 lowrite - ));
|
||||
DESCR("large object write");
|
||||
DATA(insert OID = 956 ( lo_lseek PGUID 11 f t f t 3 f 23 "23 23 23" 100 0 0 100 lo_lseek - ));
|
||||
DATA(insert OID = 956 ( lo_lseek PGUID 12 f t f t 3 f 23 "23 23 23" 100 0 0 100 lo_lseek - ));
|
||||
DESCR("large object seek");
|
||||
DATA(insert OID = 957 ( lo_creat PGUID 11 f t f t 1 f 26 "23" 100 0 0 100 lo_creat - ));
|
||||
DATA(insert OID = 957 ( lo_creat PGUID 12 f t f t 1 f 26 "23" 100 0 0 100 lo_creat - ));
|
||||
DESCR("large object create");
|
||||
DATA(insert OID = 958 ( lo_tell PGUID 11 f t f t 1 f 23 "23" 100 0 0 100 lo_tell - ));
|
||||
DATA(insert OID = 958 ( lo_tell PGUID 12 f t f t 1 f 23 "23" 100 0 0 100 lo_tell - ));
|
||||
DESCR("large object position");
|
||||
|
||||
DATA(insert OID = 959 ( on_pl PGUID 11 f t t t 2 f 16 "600 628" 100 0 10 100 on_pl - ));
|
||||
@ -1230,7 +1230,7 @@ DESCR("closest point to line segment on line");
|
||||
DATA(insert OID = 963 ( close_lb PGUID 11 f t t t 2 f 600 "628 603" 100 0 10 100 close_lb - ));
|
||||
DESCR("closest point to line on box");
|
||||
|
||||
DATA(insert OID = 964 ( lo_unlink PGUID 11 f t f t 1 f 23 "26" 100 0 0 100 lo_unlink - ));
|
||||
DATA(insert OID = 964 ( lo_unlink PGUID 12 f t f t 1 f 23 "26" 100 0 0 100 lo_unlink - ));
|
||||
DESCR("large object unlink(delete)");
|
||||
DATA(insert OID = 972 ( regproctooid PGUID 12 f t t t 1 f 26 "24" 100 0 0 100 regproctooid - ));
|
||||
DESCR("get oid for regproc");
|
||||
@ -1302,7 +1302,7 @@ DATA(insert OID = 1036 ( aclremove PGUID 11 f t f t 2 f 1034 "1034 1033" 10
|
||||
DESCR("subtract");
|
||||
DATA(insert OID = 1037 ( aclcontains PGUID 11 f t f t 2 f 16 "1034 1033" 100 0 0 100 aclcontains - ));
|
||||
DESCR("matches regex., case-sensitive");
|
||||
DATA(insert OID = 1038 ( seteval PGUID 11 f t f t 1 f 23 "26" 100 0 0 100 seteval - ));
|
||||
DATA(insert OID = 1038 ( seteval PGUID 12 f t f t 1 f 23 "26" 100 0 0 100 seteval - ));
|
||||
DESCR("");
|
||||
DATA(insert OID = 1044 ( bpcharin PGUID 11 f t t t 3 f 1042 "0 0 23" 100 0 0 100 bpcharin - ));
|
||||
DESCR("(internal)");
|
||||
@ -1345,54 +1345,54 @@ DESCR("hash");
|
||||
DATA(insert OID = 1081 ( hashvarchar PGUID 11 f t t t 1 f 23 "1043" 100 0 0 100 hashvarchar - ));
|
||||
DESCR("hash");
|
||||
|
||||
DATA(insert OID = 1084 ( date_in PGUID 11 f t f t 1 f 1082 "0" 100 0 0 100 date_in - ));
|
||||
DATA(insert OID = 1084 ( date_in PGUID 12 f t f t 1 f 1082 "0" 100 0 0 100 date_in - ));
|
||||
DESCR("(internal)");
|
||||
DATA(insert OID = 1085 ( date_out PGUID 11 f t f t 1 f 23 "0" 100 0 0 100 date_out - ));
|
||||
DATA(insert OID = 1085 ( date_out PGUID 12 f t f t 1 f 23 "0" 100 0 0 100 date_out - ));
|
||||
DESCR("(internal)");
|
||||
DATA(insert OID = 1086 ( date_eq PGUID 11 f t t t 2 f 16 "1082 1082" 100 0 0 100 date_eq - ));
|
||||
DATA(insert OID = 1086 ( date_eq PGUID 12 f t t t 2 f 16 "1082 1082" 100 0 0 100 date_eq - ));
|
||||
DESCR("equal");
|
||||
DATA(insert OID = 1087 ( date_lt PGUID 11 f t t t 2 f 16 "1082 1082" 100 0 0 100 date_lt - ));
|
||||
DATA(insert OID = 1087 ( date_lt PGUID 12 f t t t 2 f 16 "1082 1082" 100 0 0 100 date_lt - ));
|
||||
DESCR("less-than");
|
||||
DATA(insert OID = 1088 ( date_le PGUID 11 f t t t 2 f 16 "1082 1082" 100 0 0 100 date_le - ));
|
||||
DATA(insert OID = 1088 ( date_le PGUID 12 f t t t 2 f 16 "1082 1082" 100 0 0 100 date_le - ));
|
||||
DESCR("less-than-or-equal");
|
||||
DATA(insert OID = 1089 ( date_gt PGUID 11 f t t t 2 f 16 "1082 1082" 100 0 0 100 date_gt - ));
|
||||
DATA(insert OID = 1089 ( date_gt PGUID 12 f t t t 2 f 16 "1082 1082" 100 0 0 100 date_gt - ));
|
||||
DESCR("greater-than");
|
||||
DATA(insert OID = 1090 ( date_ge PGUID 11 f t t t 2 f 16 "1082 1082" 100 0 0 100 date_ge - ));
|
||||
DATA(insert OID = 1090 ( date_ge PGUID 12 f t t t 2 f 16 "1082 1082" 100 0 0 100 date_ge - ));
|
||||
DESCR("greater-than-or-equal");
|
||||
DATA(insert OID = 1091 ( date_ne PGUID 11 f t t t 2 f 16 "1082 1082" 100 0 0 100 date_ne - ));
|
||||
DATA(insert OID = 1091 ( date_ne PGUID 12 f t t t 2 f 16 "1082 1082" 100 0 0 100 date_ne - ));
|
||||
DESCR("not equal");
|
||||
DATA(insert OID = 1092 ( date_cmp PGUID 11 f t t t 2 f 23 "1082 1082" 100 0 0 100 date_cmp - ));
|
||||
DATA(insert OID = 1092 ( date_cmp PGUID 12 f t t t 2 f 23 "1082 1082" 100 0 0 100 date_cmp - ));
|
||||
DESCR("less-equal-greater");
|
||||
|
||||
/* OIDS 1100 - 1199 */
|
||||
|
||||
DATA(insert OID = 1102 ( time_lt PGUID 11 f t t t 2 f 16 "1083 1083" 100 0 0 100 time_lt - ));
|
||||
DATA(insert OID = 1102 ( time_lt PGUID 12 f t t t 2 f 16 "1083 1083" 100 0 0 100 time_lt - ));
|
||||
DESCR("less-than");
|
||||
DATA(insert OID = 1103 ( time_le PGUID 11 f t t t 2 f 16 "1083 1083" 100 0 0 100 time_le - ));
|
||||
DATA(insert OID = 1103 ( time_le PGUID 12 f t t t 2 f 16 "1083 1083" 100 0 0 100 time_le - ));
|
||||
DESCR("less-than-or-equal");
|
||||
DATA(insert OID = 1104 ( time_gt PGUID 11 f t t t 2 f 16 "1083 1083" 100 0 0 100 time_gt - ));
|
||||
DATA(insert OID = 1104 ( time_gt PGUID 12 f t t t 2 f 16 "1083 1083" 100 0 0 100 time_gt - ));
|
||||
DESCR("greater-than");
|
||||
DATA(insert OID = 1105 ( time_ge PGUID 11 f t t t 2 f 16 "1083 1083" 100 0 0 100 time_ge - ));
|
||||
DATA(insert OID = 1105 ( time_ge PGUID 12 f t t t 2 f 16 "1083 1083" 100 0 0 100 time_ge - ));
|
||||
DESCR("greater-than-or-equal");
|
||||
DATA(insert OID = 1106 ( time_ne PGUID 11 f t t t 2 f 16 "1083 1083" 100 0 0 100 time_ne - ));
|
||||
DATA(insert OID = 1106 ( time_ne PGUID 12 f t t t 2 f 16 "1083 1083" 100 0 0 100 time_ne - ));
|
||||
DESCR("not equal");
|
||||
DATA(insert OID = 1107 ( time_cmp PGUID 11 f t t t 2 f 23 "1083 1083" 100 0 0 100 time_cmp - ));
|
||||
DATA(insert OID = 1107 ( time_cmp PGUID 12 f t t t 2 f 23 "1083 1083" 100 0 0 100 time_cmp - ));
|
||||
DESCR("less-equal-greater");
|
||||
DATA(insert OID = 1138 ( date_larger PGUID 11 f t t t 2 f 1082 "1082 1082" 100 0 0 100 date_larger - ));
|
||||
DATA(insert OID = 1138 ( date_larger PGUID 12 f t t t 2 f 1082 "1082 1082" 100 0 0 100 date_larger - ));
|
||||
DESCR("larger of two");
|
||||
DATA(insert OID = 1139 ( date_smaller PGUID 11 f t t t 2 f 1082 "1082 1082" 100 0 0 100 date_smaller - ));
|
||||
DATA(insert OID = 1139 ( date_smaller PGUID 12 f t t t 2 f 1082 "1082 1082" 100 0 0 100 date_smaller - ));
|
||||
DESCR("smaller of two");
|
||||
DATA(insert OID = 1140 ( date_mi PGUID 11 f t t t 2 f 23 "1082 1082" 100 0 0 100 date_mi - ));
|
||||
DATA(insert OID = 1140 ( date_mi PGUID 12 f t t t 2 f 23 "1082 1082" 100 0 0 100 date_mi - ));
|
||||
DESCR("subtract");
|
||||
DATA(insert OID = 1141 ( date_pli PGUID 11 f t t t 2 f 1082 "1082 23" 100 0 0 100 date_pli - ));
|
||||
DATA(insert OID = 1141 ( date_pli PGUID 12 f t t t 2 f 1082 "1082 23" 100 0 0 100 date_pli - ));
|
||||
DESCR("addition");
|
||||
DATA(insert OID = 1142 ( date_mii PGUID 11 f t t t 2 f 1082 "1082 23" 100 0 0 100 date_mii - ));
|
||||
DATA(insert OID = 1142 ( date_mii PGUID 12 f t t t 2 f 1082 "1082 23" 100 0 0 100 date_mii - ));
|
||||
DESCR("subtract");
|
||||
DATA(insert OID = 1143 ( time_in PGUID 11 f t f t 1 f 1083 "0" 100 0 0 100 time_in - ));
|
||||
DATA(insert OID = 1143 ( time_in PGUID 12 f t f t 1 f 1083 "0" 100 0 0 100 time_in - ));
|
||||
DESCR("(internal)");
|
||||
DATA(insert OID = 1144 ( time_out PGUID 11 f t f t 1 f 23 "0" 100 0 0 100 time_out - ));
|
||||
DATA(insert OID = 1144 ( time_out PGUID 12 f t f t 1 f 23 "0" 100 0 0 100 time_out - ));
|
||||
DESCR("(internal)");
|
||||
DATA(insert OID = 1145 ( time_eq PGUID 11 f t t t 2 f 16 "1083 1083" 100 0 0 100 time_eq - ));
|
||||
DATA(insert OID = 1145 ( time_eq PGUID 12 f t t t 2 f 16 "1083 1083" 100 0 0 100 time_eq - ));
|
||||
DESCR("equal");
|
||||
|
||||
DATA(insert OID = 1146 ( circle_add_pt PGUID 11 f t t t 2 f 718 "718 600" 100 0 0 100 circle_add_pt - ));
|
||||
@ -1404,100 +1404,100 @@ DESCR("multiply");
|
||||
DATA(insert OID = 1149 ( circle_div_pt PGUID 11 f t t t 2 f 718 "718 600" 100 0 0 100 circle_div_pt - ));
|
||||
DESCR("divide");
|
||||
|
||||
DATA(insert OID = 1150 ( timestamp_in PGUID 11 f t f t 1 f 1184 "0" 100 0 0 100 timestamp_in - ));
|
||||
DATA(insert OID = 1150 ( timestamp_in PGUID 12 f t f t 1 f 1184 "0" 100 0 0 100 timestamp_in - ));
|
||||
DESCR("(internal)");
|
||||
DATA(insert OID = 1151 ( timestamp_out PGUID 11 f t f t 1 f 23 "0" 100 0 0 100 timestamp_out - ));
|
||||
DATA(insert OID = 1151 ( timestamp_out PGUID 12 f t f t 1 f 23 "0" 100 0 0 100 timestamp_out - ));
|
||||
DESCR("(internal)");
|
||||
DATA(insert OID = 1152 ( timestamp_eq PGUID 11 f t f t 2 f 16 "1184 1184" 100 0 0 100 timestamp_eq - ));
|
||||
DATA(insert OID = 1152 ( timestamp_eq PGUID 12 f t f t 2 f 16 "1184 1184" 100 0 0 100 timestamp_eq - ));
|
||||
DESCR("equal");
|
||||
DATA(insert OID = 1153 ( timestamp_ne PGUID 11 f t f t 2 f 16 "1184 1184" 100 0 0 100 timestamp_ne - ));
|
||||
DATA(insert OID = 1153 ( timestamp_ne PGUID 12 f t f t 2 f 16 "1184 1184" 100 0 0 100 timestamp_ne - ));
|
||||
DESCR("not equal");
|
||||
DATA(insert OID = 1154 ( timestamp_lt PGUID 11 f t f t 2 f 16 "1184 1184" 100 0 0 100 timestamp_lt - ));
|
||||
DATA(insert OID = 1154 ( timestamp_lt PGUID 12 f t f t 2 f 16 "1184 1184" 100 0 0 100 timestamp_lt - ));
|
||||
DESCR("less-than");
|
||||
DATA(insert OID = 1155 ( timestamp_le PGUID 11 f t f t 2 f 16 "1184 1184" 100 0 0 100 timestamp_le - ));
|
||||
DATA(insert OID = 1155 ( timestamp_le PGUID 12 f t f t 2 f 16 "1184 1184" 100 0 0 100 timestamp_le - ));
|
||||
DESCR("less-than-or-equal");
|
||||
DATA(insert OID = 1156 ( timestamp_ge PGUID 11 f t f t 2 f 16 "1184 1184" 100 0 0 100 timestamp_ge - ));
|
||||
DATA(insert OID = 1156 ( timestamp_ge PGUID 12 f t f t 2 f 16 "1184 1184" 100 0 0 100 timestamp_ge - ));
|
||||
DESCR("greater-than-or-equal");
|
||||
DATA(insert OID = 1157 ( timestamp_gt PGUID 11 f t f t 2 f 16 "1184 1184" 100 0 0 100 timestamp_gt - ));
|
||||
DATA(insert OID = 1157 ( timestamp_gt PGUID 12 f t f t 2 f 16 "1184 1184" 100 0 0 100 timestamp_gt - ));
|
||||
DESCR("greater-than");
|
||||
DATA(insert OID = 1159 ( timezone PGUID 11 f t f t 2 f 25 "25 1184" 100 0 0 100 timestamp_zone - ));
|
||||
DATA(insert OID = 1159 ( timezone PGUID 12 f t f t 2 f 25 "25 1184" 100 0 0 100 timestamp_zone - ));
|
||||
DESCR("time zone");
|
||||
|
||||
DATA(insert OID = 1160 ( interval_in PGUID 11 f t f t 1 f 1186 "0" 100 0 0 100 interval_in - ));
|
||||
DATA(insert OID = 1160 ( interval_in PGUID 12 f t f t 1 f 1186 "0" 100 0 0 100 interval_in - ));
|
||||
DESCR("(internal)");
|
||||
DATA(insert OID = 1161 ( interval_out PGUID 11 f t f t 1 f 23 "0" 100 0 0 100 interval_out - ));
|
||||
DATA(insert OID = 1161 ( interval_out PGUID 12 f t f t 1 f 23 "0" 100 0 0 100 interval_out - ));
|
||||
DESCR("(internal)");
|
||||
DATA(insert OID = 1162 ( interval_eq PGUID 11 f t f t 2 f 16 "1186 1186" 100 0 0 100 interval_eq - ));
|
||||
DATA(insert OID = 1162 ( interval_eq PGUID 12 f t f t 2 f 16 "1186 1186" 100 0 0 100 interval_eq - ));
|
||||
DESCR("equal");
|
||||
DATA(insert OID = 1163 ( interval_ne PGUID 11 f t f t 2 f 16 "1186 1186" 100 0 0 100 interval_ne - ));
|
||||
DATA(insert OID = 1163 ( interval_ne PGUID 12 f t f t 2 f 16 "1186 1186" 100 0 0 100 interval_ne - ));
|
||||
DESCR("not equal");
|
||||
DATA(insert OID = 1164 ( interval_lt PGUID 11 f t f t 2 f 16 "1186 1186" 100 0 0 100 interval_lt - ));
|
||||
DATA(insert OID = 1164 ( interval_lt PGUID 12 f t f t 2 f 16 "1186 1186" 100 0 0 100 interval_lt - ));
|
||||
DESCR("less-than");
|
||||
DATA(insert OID = 1165 ( interval_le PGUID 11 f t f t 2 f 16 "1186 1186" 100 0 0 100 interval_le - ));
|
||||
DATA(insert OID = 1165 ( interval_le PGUID 12 f t f t 2 f 16 "1186 1186" 100 0 0 100 interval_le - ));
|
||||
DESCR("less-than-or-equal");
|
||||
DATA(insert OID = 1166 ( interval_ge PGUID 11 f t f t 2 f 16 "1186 1186" 100 0 0 100 interval_ge - ));
|
||||
DATA(insert OID = 1166 ( interval_ge PGUID 12 f t f t 2 f 16 "1186 1186" 100 0 0 100 interval_ge - ));
|
||||
DESCR("greater-than-or-equal");
|
||||
DATA(insert OID = 1167 ( interval_gt PGUID 11 f t f t 2 f 16 "1186 1186" 100 0 0 100 interval_gt - ));
|
||||
DATA(insert OID = 1167 ( interval_gt PGUID 12 f t f t 2 f 16 "1186 1186" 100 0 0 100 interval_gt - ));
|
||||
DESCR("greater-than");
|
||||
DATA(insert OID = 1168 ( interval_um PGUID 11 f t f t 1 f 1186 "1186" 100 0 0 100 interval_um - ));
|
||||
DATA(insert OID = 1168 ( interval_um PGUID 12 f t f t 1 f 1186 "1186" 100 0 0 100 interval_um - ));
|
||||
DESCR("subtract");
|
||||
DATA(insert OID = 1169 ( interval_pl PGUID 11 f t f t 2 f 1186 "1186 1186" 100 0 0 100 interval_pl - ));
|
||||
DATA(insert OID = 1169 ( interval_pl PGUID 12 f t f t 2 f 1186 "1186 1186" 100 0 0 100 interval_pl - ));
|
||||
DESCR("addition");
|
||||
DATA(insert OID = 1170 ( interval_mi PGUID 11 f t f t 2 f 1186 "1186 1186" 100 0 0 100 interval_mi - ));
|
||||
DATA(insert OID = 1170 ( interval_mi PGUID 12 f t f t 2 f 1186 "1186 1186" 100 0 0 100 interval_mi - ));
|
||||
DESCR("subtract");
|
||||
DATA(insert OID = 1171 ( date_part PGUID 11 f t f t 2 f 701 "25 1184" 100 0 0 100 timestamp_part - ));
|
||||
DATA(insert OID = 1171 ( date_part PGUID 12 f t f t 2 f 701 "25 1184" 100 0 0 100 timestamp_part - ));
|
||||
DESCR("extract field from timestamp");
|
||||
DATA(insert OID = 1172 ( date_part PGUID 11 f t f t 2 f 701 "25 1186" 100 0 0 100 interval_part - ));
|
||||
DATA(insert OID = 1172 ( date_part PGUID 12 f t f t 2 f 701 "25 1186" 100 0 0 100 interval_part - ));
|
||||
DESCR("extract field from interval");
|
||||
|
||||
DATA(insert OID = 1173 ( timestamp PGUID 11 f t f t 1 f 1184 "702" 100 0 0 100 abstime_timestamp - ));
|
||||
DATA(insert OID = 1173 ( timestamp PGUID 12 f t f t 1 f 1184 "702" 100 0 0 100 abstime_timestamp - ));
|
||||
DESCR("convert abstime to timestamp");
|
||||
DATA(insert OID = 1174 ( timestamp PGUID 11 f t f t 1 f 1184 "1082" 100 0 0 100 date_timestamp - ));
|
||||
DATA(insert OID = 1174 ( timestamp PGUID 12 f t f t 1 f 1184 "1082" 100 0 0 100 date_timestamp - ));
|
||||
DESCR("convert date to timestamp");
|
||||
DATA(insert OID = 1176 ( timestamp PGUID 11 f t f t 2 f 1184 "1082 1083" 100 0 0 100 datetime_timestamp - ));
|
||||
DATA(insert OID = 1176 ( timestamp PGUID 12 f t f t 2 f 1184 "1082 1083" 100 0 0 100 datetime_timestamp - ));
|
||||
DESCR("convert date and time to timestamp");
|
||||
DATA(insert OID = 1177 ( interval PGUID 11 f t f t 1 f 1186 "703" 100 0 0 100 reltime_interval - ));
|
||||
DATA(insert OID = 1177 ( interval PGUID 12 f t f t 1 f 1186 "703" 100 0 0 100 reltime_interval - ));
|
||||
DESCR("convert reltime to interval");
|
||||
DATA(insert OID = 1178 ( date PGUID 11 f t f t 1 f 1082 "1184" 100 0 0 100 timestamp_date - ));
|
||||
DATA(insert OID = 1178 ( date PGUID 12 f t f t 1 f 1082 "1184" 100 0 0 100 timestamp_date - ));
|
||||
DESCR("convert timestamp to date");
|
||||
DATA(insert OID = 1179 ( date PGUID 11 f t f t 1 f 1082 "702" 100 0 0 100 abstime_date - ));
|
||||
DATA(insert OID = 1179 ( date PGUID 12 f t f t 1 f 1082 "702" 100 0 0 100 abstime_date - ));
|
||||
DESCR("convert abstime to date");
|
||||
DATA(insert OID = 1180 ( abstime PGUID 11 f t f t 1 f 702 "1184" 100 0 0 100 timestamp_abstime - ));
|
||||
DATA(insert OID = 1180 ( abstime PGUID 12 f t f t 1 f 702 "1184" 100 0 0 100 timestamp_abstime - ));
|
||||
DESCR("convert timestamp to abstime");
|
||||
|
||||
DATA(insert OID = 1188 ( timestamp_mi PGUID 11 f t f t 2 f 1186 "1184 1184" 100 0 0 100 timestamp_mi - ));
|
||||
DATA(insert OID = 1188 ( timestamp_mi PGUID 12 f t f t 2 f 1186 "1184 1184" 100 0 0 100 timestamp_mi - ));
|
||||
DESCR("subtract");
|
||||
DATA(insert OID = 1189 ( timestamp_pl_span PGUID 11 f t f t 2 f 1184 "1184 1186" 100 0 0 100 timestamp_pl_span - ));
|
||||
DATA(insert OID = 1189 ( timestamp_pl_span PGUID 12 f t f t 2 f 1184 "1184 1186" 100 0 0 100 timestamp_pl_span - ));
|
||||
DESCR("plus");
|
||||
DATA(insert OID = 1190 ( timestamp_mi_span PGUID 11 f t f t 2 f 1184 "1184 1186" 100 0 0 100 timestamp_mi_span - ));
|
||||
DATA(insert OID = 1190 ( timestamp_mi_span PGUID 12 f t f t 2 f 1184 "1184 1186" 100 0 0 100 timestamp_mi_span - ));
|
||||
DESCR("minus");
|
||||
DATA(insert OID = 1191 ( timestamp PGUID 11 f t f t 1 f 1184 "25" 100 0 0 100 text_timestamp - ));
|
||||
DATA(insert OID = 1191 ( timestamp PGUID 12 f t f t 1 f 1184 "25" 100 0 0 100 text_timestamp - ));
|
||||
DESCR("convert text to timestamp");
|
||||
DATA(insert OID = 1192 ( text PGUID 11 f t f t 1 f 25 "1184" 100 0 0 100 timestamp_text - ));
|
||||
DATA(insert OID = 1192 ( text PGUID 12 f t f t 1 f 25 "1184" 100 0 0 100 timestamp_text - ));
|
||||
DESCR("convert timestamp to text");
|
||||
DATA(insert OID = 1193 ( text PGUID 11 f t f t 1 f 25 "1186" 100 0 0 100 interval_text - ));
|
||||
DATA(insert OID = 1193 ( text PGUID 12 f t f t 1 f 25 "1186" 100 0 0 100 interval_text - ));
|
||||
DESCR("convert interval to text");
|
||||
DATA(insert OID = 1194 ( reltime PGUID 11 f t f t 1 f 703 "1186" 100 0 0 100 interval_reltime - ));
|
||||
DATA(insert OID = 1194 ( reltime PGUID 12 f t f t 1 f 703 "1186" 100 0 0 100 interval_reltime - ));
|
||||
DESCR("convert interval to reltime");
|
||||
DATA(insert OID = 1195 ( timestamp_smaller PGUID 11 f t f t 2 f 1184 "1184 1184" 100 0 0 100 timestamp_smaller - ));
|
||||
DATA(insert OID = 1195 ( timestamp_smaller PGUID 12 f t f t 2 f 1184 "1184 1184" 100 0 0 100 timestamp_smaller - ));
|
||||
DESCR("smaller of two");
|
||||
DATA(insert OID = 1196 ( timestamp_larger PGUID 11 f t f t 2 f 1184 "1184 1184" 100 0 0 100 timestamp_larger - ));
|
||||
DATA(insert OID = 1196 ( timestamp_larger PGUID 12 f t f t 2 f 1184 "1184 1184" 100 0 0 100 timestamp_larger - ));
|
||||
DESCR("larger of two");
|
||||
DATA(insert OID = 1197 ( interval_smaller PGUID 11 f t f t 2 f 1186 "1186 1186" 100 0 0 100 interval_smaller - ));
|
||||
DATA(insert OID = 1197 ( interval_smaller PGUID 12 f t f t 2 f 1186 "1186 1186" 100 0 0 100 interval_smaller - ));
|
||||
DESCR("smaller of two");
|
||||
DATA(insert OID = 1198 ( interval_larger PGUID 11 f t f t 2 f 1186 "1186 1186" 100 0 0 100 interval_larger - ));
|
||||
DATA(insert OID = 1198 ( interval_larger PGUID 12 f t f t 2 f 1186 "1186 1186" 100 0 0 100 interval_larger - ));
|
||||
DESCR("larger of two");
|
||||
DATA(insert OID = 1199 ( age PGUID 11 f t f t 2 f 1186 "1184 1184" 100 0 0 100 timestamp_age - ));
|
||||
DATA(insert OID = 1199 ( age PGUID 12 f t f t 2 f 1186 "1184 1184" 100 0 0 100 timestamp_age - ));
|
||||
DESCR("date difference preserving months and years");
|
||||
|
||||
/* OIDS 1200 - 1299 */
|
||||
|
||||
DATA(insert OID = 1200 ( reltime PGUID 11 f t t t 1 f 703 "23" 100 0 0 100 int4reltime - ));
|
||||
DATA(insert OID = 1200 ( reltime PGUID 12 f t t t 1 f 703 "23" 100 0 0 100 int4reltime - ));
|
||||
DESCR("convert int4 to reltime");
|
||||
|
||||
DATA(insert OID = 1217 ( date_trunc PGUID 11 f t f t 2 f 1184 "25 1184" 100 0 0 100 timestamp_trunc - ));
|
||||
DATA(insert OID = 1217 ( date_trunc PGUID 12 f t f t 2 f 1184 "25 1184" 100 0 0 100 timestamp_trunc - ));
|
||||
DESCR("truncate timestamp to specified units");
|
||||
DATA(insert OID = 1218 ( date_trunc PGUID 11 f t f t 2 f 1186 "25 1186" 100 0 0 100 interval_trunc - ));
|
||||
DATA(insert OID = 1218 ( date_trunc PGUID 12 f t f t 2 f 1186 "25 1186" 100 0 0 100 interval_trunc - ));
|
||||
DESCR("truncate interval to specified units");
|
||||
|
||||
DATA(insert OID = 1230 ( int8abs PGUID 11 f t t t 1 f 20 "20" 100 0 0 100 int8abs - ));
|
||||
@ -1522,12 +1522,12 @@ DESCR("absolute value");
|
||||
DATA(insert OID = 1253 ( int2abs PGUID 12 f t t t 1 f 21 "21" 100 0 0 100 int2abs - ));
|
||||
DESCR("absolute value");
|
||||
|
||||
DATA(insert OID = 1263 ( interval PGUID 11 f t f t 1 f 1186 "25" 100 0 0 100 text_interval - ));
|
||||
DATA(insert OID = 1263 ( interval PGUID 12 f t f t 1 f 1186 "25" 100 0 0 100 text_interval - ));
|
||||
DESCR("convert text to interval");
|
||||
|
||||
DATA(insert OID = 1271 ( overlaps PGUID 11 f t t t 4 f 16 "1266 1266 1266 1266" 100 0 1 0 overlaps_timetz - ));
|
||||
DATA(insert OID = 1271 ( overlaps PGUID 12 f t t t 4 f 16 "1266 1266 1266 1266" 100 0 1 0 overlaps_timetz - ));
|
||||
DESCR("SQL92 interval comparison");
|
||||
DATA(insert OID = 1272 ( datetime_pl PGUID 11 f t f t 2 f 1184 "1082 1083" 100 0 0 100 datetime_timestamp - ));
|
||||
DATA(insert OID = 1272 ( datetime_pl PGUID 12 f t f t 2 f 1184 "1082 1083" 100 0 0 100 datetime_timestamp - ));
|
||||
DESCR("convert date and time to timestamp");
|
||||
|
||||
DATA(insert OID = 1274 ( int84pl PGUID 11 f t t t 2 f 20 "20 23" 100 0 0 100 int84pl - ));
|
||||
@ -1559,18 +1559,18 @@ DESCR("truncate _varchar()");
|
||||
|
||||
DATA(insert OID = 1292 ( tideq PGUID 11 f t f t 2 f 16 "27 27" 100 0 0 100 tideq - ));
|
||||
DESCR("equal");
|
||||
DATA(insert OID = 1293 ( currtid PGUID 11 f t f t 2 f 27 "26 27" 100 0 0 100 currtid_byreloid - ));
|
||||
DATA(insert OID = 1293 ( currtid PGUID 12 f t f t 2 f 27 "26 27" 100 0 0 100 currtid_byreloid - ));
|
||||
DESCR("latest tid of a tuple");
|
||||
DATA(insert OID = 1294 ( currtid2 PGUID 11 f t f t 2 f 27 "25 27" 100 0 0 100 currtid_byrelname - ));
|
||||
DATA(insert OID = 1294 ( currtid2 PGUID 12 f t f t 2 f 27 "25 27" 100 0 0 100 currtid_byrelname - ));
|
||||
DESCR("latest tid of a tuple");
|
||||
|
||||
DATA(insert OID = 1296 ( timedate_pl PGUID 14 f t f t 2 f 1184 "1083 1082" 100 0 0 100 "select datetime_pl($2, $1)" - ));
|
||||
DESCR("convert time and date to timestamp");
|
||||
DATA(insert OID = 1297 ( datetimetz_pl PGUID 11 f t f t 2 f 1184 "1082 1266" 100 0 0 100 datetimetz_timestamp - ));
|
||||
DATA(insert OID = 1297 ( datetimetz_pl PGUID 12 f t f t 2 f 1184 "1082 1266" 100 0 0 100 datetimetz_timestamp - ));
|
||||
DESCR("convert date and time with time zone to timestamp");
|
||||
DATA(insert OID = 1298 ( timetzdate_pl PGUID 14 f t f t 2 f 1184 "1266 1082" 100 0 0 100 "select datetimetz_pl($2, $1)" - ));
|
||||
DESCR("convert time with time zone and date to timestamp");
|
||||
DATA(insert OID = 1299 ( now PGUID 11 f t f t 0 f 1184 "0" 100 0 0 100 now - ));
|
||||
DATA(insert OID = 1299 ( now PGUID 12 f t f t 0 f 1184 "0" 100 0 0 100 now - ));
|
||||
DESCR("current transaction time");
|
||||
|
||||
/* OIDS 1300 - 1399 */
|
||||
@ -1584,7 +1584,7 @@ DESCR("restriction selectivity for containment comparison operators");
|
||||
DATA(insert OID = 1303 ( contjoinsel PGUID 12 f t f t 5 f 701 "26 26 21 26 21" 100 0 0 100 contjoinsel - ));
|
||||
DESCR("join selectivity for containment comparison operators");
|
||||
|
||||
DATA(insert OID = 1304 ( overlaps PGUID 11 f t t t 4 f 16 "1184 1184 1184 1184" 100 0 1 0 overlaps_timestamp - ));
|
||||
DATA(insert OID = 1304 ( overlaps PGUID 12 f t t t 4 f 16 "1184 1184 1184 1184" 100 0 1 0 overlaps_timestamp - ));
|
||||
DESCR("SQL92 interval comparison");
|
||||
DATA(insert OID = 1305 ( overlaps PGUID 14 f t t t 4 f 16 "1184 1186 1184 1186" 100 0 1 0 "select overlaps($1, ($1 + $2), $3, ($3 + $4))" - ));
|
||||
DESCR("SQL92 interval comparison");
|
||||
@ -1593,7 +1593,7 @@ DESCR("SQL92 interval comparison");
|
||||
DATA(insert OID = 1307 ( overlaps PGUID 14 f t t t 4 f 16 "1184 1186 1184 1184" 100 0 1 0 "select overlaps($1, ($1 + $2), $3, $4)" - ));
|
||||
DESCR("SQL92 interval comparison");
|
||||
|
||||
DATA(insert OID = 1308 ( overlaps PGUID 11 f t t t 4 f 16 "1083 1083 1083 1083" 100 0 1 0 overlaps_time - ));
|
||||
DATA(insert OID = 1308 ( overlaps PGUID 12 f t t t 4 f 16 "1083 1083 1083 1083" 100 0 1 0 overlaps_time - ));
|
||||
DESCR("SQL92 interval comparison");
|
||||
DATA(insert OID = 1309 ( overlaps PGUID 14 f t t t 4 f 16 "1083 1186 1083 1186" 100 0 1 0 "select overlaps($1, ($1 + $2), $3, ($3 + $4))" - ));
|
||||
DESCR("SQL92 interval comparison");
|
||||
@ -1602,11 +1602,11 @@ DESCR("SQL92 interval comparison");
|
||||
DATA(insert OID = 1311 ( overlaps PGUID 14 f t t t 4 f 16 "1083 1186 1083 1083" 100 0 1 0 "select overlaps($1, ($1 + $2), $3, $4)" - ));
|
||||
DESCR("SQL92 interval comparison");
|
||||
|
||||
DATA(insert OID = 1314 ( timestamp_cmp PGUID 11 f t f t 2 f 23 "1184 1184" 100 0 0 100 timestamp_cmp - ));
|
||||
DATA(insert OID = 1314 ( timestamp_cmp PGUID 12 f t f t 2 f 23 "1184 1184" 100 0 0 100 timestamp_cmp - ));
|
||||
DESCR("less-equal-greater");
|
||||
DATA(insert OID = 1315 ( interval_cmp PGUID 11 f t f t 2 f 23 "1186 1186" 100 0 0 100 interval_cmp - ));
|
||||
DATA(insert OID = 1315 ( interval_cmp PGUID 12 f t f t 2 f 23 "1186 1186" 100 0 0 100 interval_cmp - ));
|
||||
DESCR("less-equal-greater");
|
||||
DATA(insert OID = 1316 ( time PGUID 11 f t f t 1 f 1083 "1184" 100 0 0 100 timestamp_time - ));
|
||||
DATA(insert OID = 1316 ( time PGUID 12 f t f t 1 f 1083 "1184" 100 0 0 100 timestamp_time - ));
|
||||
DESCR("convert timestamp to time");
|
||||
|
||||
DATA(insert OID = 1317 ( length PGUID 11 f t t t 1 f 23 "25" 100 0 1 0 textlen - ));
|
||||
@ -1616,7 +1616,7 @@ DESCR("character length");
|
||||
DATA(insert OID = 1319 ( length PGUID 11 f t t t 1 f 23 "1043" 100 0 0 100 varcharlen - ));
|
||||
DESCR("character length");
|
||||
|
||||
DATA(insert OID = 1326 ( interval_div PGUID 11 f t f t 2 f 1186 "1186 701" 100 0 0 100 interval_div - ));
|
||||
DATA(insert OID = 1326 ( interval_div PGUID 12 f t f t 2 f 1186 "1186 701" 100 0 0 100 interval_div - ));
|
||||
DESCR("divide");
|
||||
|
||||
DATA(insert OID = 1339 ( dlog10 PGUID 11 f t t t 1 f 701 "701" 100 0 0 100 dlog10 - ));
|
||||
@ -1644,25 +1644,25 @@ DATA(insert OID = 1349 ( oidvectortypes PGUID 12 f t f t 1 f 25 "30" 100 0 0
|
||||
DESCR("print type names of oidvector field");
|
||||
|
||||
|
||||
DATA(insert OID = 1350 ( timetz_in PGUID 11 f t f t 1 f 1266 "0" 100 0 0 100 timetz_in - ));
|
||||
DATA(insert OID = 1350 ( timetz_in PGUID 12 f t f t 1 f 1266 "0" 100 0 0 100 timetz_in - ));
|
||||
DESCR("(internal)");
|
||||
DATA(insert OID = 1351 ( timetz_out PGUID 11 f t f t 1 f 23 "0" 100 0 0 100 timetz_out - ));
|
||||
DATA(insert OID = 1351 ( timetz_out PGUID 12 f t f t 1 f 23 "0" 100 0 0 100 timetz_out - ));
|
||||
DESCR("(internal)");
|
||||
DATA(insert OID = 1352 ( timetz_eq PGUID 11 f t t t 2 f 16 "1266 1266" 100 0 0 100 timetz_eq - ));
|
||||
DATA(insert OID = 1352 ( timetz_eq PGUID 12 f t t t 2 f 16 "1266 1266" 100 0 0 100 timetz_eq - ));
|
||||
DESCR("equal");
|
||||
DATA(insert OID = 1353 ( timetz_ne PGUID 11 f t t t 2 f 16 "1266 1266" 100 0 0 100 timetz_ne - ));
|
||||
DATA(insert OID = 1353 ( timetz_ne PGUID 12 f t t t 2 f 16 "1266 1266" 100 0 0 100 timetz_ne - ));
|
||||
DESCR("not equal");
|
||||
DATA(insert OID = 1354 ( timetz_lt PGUID 11 f t t t 2 f 16 "1266 1266" 100 0 0 100 timetz_lt - ));
|
||||
DATA(insert OID = 1354 ( timetz_lt PGUID 12 f t t t 2 f 16 "1266 1266" 100 0 0 100 timetz_lt - ));
|
||||
DESCR("less-than");
|
||||
DATA(insert OID = 1355 ( timetz_le PGUID 11 f t t t 2 f 16 "1266 1266" 100 0 0 100 timetz_le - ));
|
||||
DATA(insert OID = 1355 ( timetz_le PGUID 12 f t t t 2 f 16 "1266 1266" 100 0 0 100 timetz_le - ));
|
||||
DESCR("less-than-or-equal");
|
||||
DATA(insert OID = 1356 ( timetz_ge PGUID 11 f t t t 2 f 16 "1266 1266" 100 0 0 100 timetz_ge - ));
|
||||
DATA(insert OID = 1356 ( timetz_ge PGUID 12 f t t t 2 f 16 "1266 1266" 100 0 0 100 timetz_ge - ));
|
||||
DESCR("greater-than-or-equal");
|
||||
DATA(insert OID = 1357 ( timetz_gt PGUID 11 f t t t 2 f 16 "1266 1266" 100 0 0 100 timetz_gt - ));
|
||||
DATA(insert OID = 1357 ( timetz_gt PGUID 12 f t t t 2 f 16 "1266 1266" 100 0 0 100 timetz_gt - ));
|
||||
DESCR("greater-than");
|
||||
DATA(insert OID = 1358 ( timetz_cmp PGUID 11 f t t t 2 f 23 "1266 1266" 100 0 0 100 timetz_cmp - ));
|
||||
DATA(insert OID = 1358 ( timetz_cmp PGUID 12 f t t t 2 f 23 "1266 1266" 100 0 0 100 timetz_cmp - ));
|
||||
DESCR("less-equal-greater");
|
||||
DATA(insert OID = 1359 ( timestamp PGUID 11 f t f t 2 f 1184 "1082 1266" 100 0 0 100 datetimetz_timestamp - ));
|
||||
DATA(insert OID = 1359 ( timestamp PGUID 12 f t f t 2 f 1184 "1082 1266" 100 0 0 100 datetimetz_timestamp - ));
|
||||
DESCR("convert date and time with time zone to timestamp");
|
||||
|
||||
DATA(insert OID = 1362 ( time PGUID 14 f t t t 1 f 1083 "1083" 100 0 0 100 "select $1" - ));
|
||||
@ -1677,7 +1677,7 @@ DATA(insert OID = 1368 ( timestamp PGUID 14 f t f t 1 f 1184 "1184" 100 0 0
|
||||
DESCR("convert (noop)");
|
||||
DATA(insert OID = 1369 ( interval PGUID 14 f t t t 1 f 1186 "1186" 100 0 0 100 "select $1" - ));
|
||||
DESCR("convert (noop)");
|
||||
DATA(insert OID = 1370 ( interval PGUID 11 f t f t 1 f 1186 "1083" 100 0 0 100 time_interval - ));
|
||||
DATA(insert OID = 1370 ( interval PGUID 12 f t f t 1 f 1186 "1083" 100 0 0 100 time_interval - ));
|
||||
DESCR("convert time to interval");
|
||||
DATA(insert OID = 1371 ( date PGUID 14 f t t t 1 f 1082 "1082" 100 0 0 100 "select $1" - ));
|
||||
DESCR("convert (noop)");
|
||||
@ -1693,13 +1693,13 @@ DESCR("octet length");
|
||||
DATA(insert OID = 1376 ( octet_length PGUID 11 f t t t 1 f 23 "1043" 100 0 0 100 varcharoctetlen - ));
|
||||
DESCR("octet length");
|
||||
|
||||
DATA(insert OID = 1377 ( time_larger PGUID 11 f t t t 2 f 1083 "1083 1083" 100 0 0 100 time_larger - ));
|
||||
DATA(insert OID = 1377 ( time_larger PGUID 12 f t t t 2 f 1083 "1083 1083" 100 0 0 100 time_larger - ));
|
||||
DESCR("larger of two");
|
||||
DATA(insert OID = 1378 ( time_smaller PGUID 11 f t t t 2 f 1083 "1083 1083" 100 0 0 100 time_smaller - ));
|
||||
DATA(insert OID = 1378 ( time_smaller PGUID 12 f t t t 2 f 1083 "1083 1083" 100 0 0 100 time_smaller - ));
|
||||
DESCR("smaller of two");
|
||||
DATA(insert OID = 1379 ( timetz_larger PGUID 11 f t t t 2 f 1083 "1266 1266" 100 0 0 100 timetz_larger - ));
|
||||
DATA(insert OID = 1379 ( timetz_larger PGUID 12 f t t t 2 f 1266 "1266 1266" 100 0 0 100 timetz_larger - ));
|
||||
DESCR("larger of two");
|
||||
DATA(insert OID = 1380 ( timetz_smaller PGUID 11 f t t t 2 f 1083 "1266 1266" 100 0 0 100 timetz_smaller - ));
|
||||
DATA(insert OID = 1380 ( timetz_smaller PGUID 12 f t t t 2 f 1266 "1266 1266" 100 0 0 100 timetz_smaller - ));
|
||||
DESCR("smaller of two");
|
||||
|
||||
DATA(insert OID = 1381 ( char_length PGUID 11 f t t t 1 f 23 "25" 100 0 1 0 textlen - ));
|
||||
@ -1718,12 +1718,12 @@ DESCR("date difference from today preserving months and years");
|
||||
|
||||
DATA(insert OID = 1387 ( timetz PGUID 14 f t f t 1 f 1266 "1266" 100 0 0 100 "select $1" - ));
|
||||
DESCR("noop conversion");
|
||||
DATA(insert OID = 1388 ( timetz PGUID 11 f t f t 1 f 1266 "1184" 100 0 0 100 timestamp_timetz - ));
|
||||
DESCR("convert timestamp to time");
|
||||
DATA(insert OID = 1388 ( timetz PGUID 12 f t f t 1 f 1266 "1184" 100 0 0 100 timestamp_timetz - ));
|
||||
DESCR("convert timestamp to timetz");
|
||||
|
||||
DATA(insert OID = 1389 ( isfinite PGUID 11 f t f t 1 f 16 "1184" 100 0 0 100 timestamp_finite - ));
|
||||
DATA(insert OID = 1389 ( isfinite PGUID 12 f t f t 1 f 16 "1184" 100 0 0 100 timestamp_finite - ));
|
||||
DESCR("boolean test");
|
||||
DATA(insert OID = 1390 ( isfinite PGUID 11 f t f t 1 f 16 "1186" 100 0 0 100 interval_finite - ));
|
||||
DATA(insert OID = 1390 ( isfinite PGUID 12 f t f t 1 f 16 "1186" 100 0 0 100 interval_finite - ));
|
||||
DESCR("boolean test");
|
||||
|
||||
|
||||
@ -1915,7 +1915,7 @@ DATA(insert OID = 1479 ( circle PGUID 11 f t t t 1 f 718 "603" 100 0 1 0 box_
|
||||
DESCR("convert box to circle");
|
||||
DATA(insert OID = 1480 ( box PGUID 11 f t t t 1 f 603 "718" 100 0 1 0 circle_box - ));
|
||||
DESCR("convert circle to box");
|
||||
DATA(insert OID = 1481 ( tinterval PGUID 11 f t f t 2 f 704 "702 702" 100 0 0 100 mktinterval - ));
|
||||
DATA(insert OID = 1481 ( tinterval PGUID 12 f t f t 2 f 704 "702 702" 100 0 0 100 mktinterval - ));
|
||||
DESCR("convert to tinterval");
|
||||
|
||||
DATA(insert OID = 1482 ( lseg_ne PGUID 11 f t t t 2 f 16 "601 601" 100 0 0 100 lseg_ne - ));
|
||||
@ -2060,7 +2060,7 @@ DESCR("radians to degrees");
|
||||
DATA(insert OID = 1610 ( pi PGUID 11 f t t t 0 f 701 "0" 100 0 0 100 dpi - ));
|
||||
DESCR("PI");
|
||||
|
||||
DATA(insert OID = 1618 ( interval_mul PGUID 11 f t t t 2 f 1186 "1186 701" 100 0 0 100 interval_mul - ));
|
||||
DATA(insert OID = 1618 ( interval_mul PGUID 12 f t t t 2 f 1186 "1186 701" 100 0 0 100 interval_mul - ));
|
||||
DESCR("multiply interval");
|
||||
DATA(insert OID = 1619 ( varchar PGUID 12 f t t t 1 f 1043 "23" 100 0 0 100 int4_text - ));
|
||||
DESCR("convert int4 to varchar");
|
||||
@ -2074,7 +2074,7 @@ DESCR("replicate string int4 times");
|
||||
|
||||
DATA(insert OID = 1623 ( varchar PGUID 11 f t t t 1 f 1043 "20" 100 0 0 100 int8_text - ));
|
||||
DESCR("convert int8 to varchar");
|
||||
DATA(insert OID = 1624 ( mul_d_interval PGUID 11 f t t t 2 f 1186 "701 1186" 100 0 0 100 mul_d_interval - ));
|
||||
DATA(insert OID = 1624 ( mul_d_interval PGUID 12 f t t t 2 f 1186 "701 1186" 100 0 0 100 mul_d_interval - ));
|
||||
|
||||
/* OID's 1625 - 1639 LZTEXT data type */
|
||||
DATA(insert OID = 1626 ( lztextin PGUID 11 f t t t 1 f 1625 "0" 100 0 0 100 lztextin - ));
|
||||
@ -2164,7 +2164,7 @@ DATA(insert OID = 1641 ( pg_get_viewdef PGUID 11 f t f t 1 f 25 "19" 100 0 0
|
||||
DESCR("select statement of a view");
|
||||
DATA(insert OID = 1642 ( pg_get_userbyid PGUID 11 f t f t 1 f 19 "23" 100 0 0 100 pg_get_userbyid - ));
|
||||
DESCR("user name by UID (with fallback)");
|
||||
DATA(insert OID = 1643 ( pg_get_indexdef PGUID 11 f t f t 1 f 25 "26" 100 0 0 100 pg_get_indexdef - ));
|
||||
DATA(insert OID = 1643 ( pg_get_indexdef PGUID 12 f t f t 1 f 25 "26" 100 0 0 100 pg_get_indexdef - ));
|
||||
DESCR("index description");
|
||||
|
||||
/* Generic referential integrity constraint triggers */
|
||||
@ -2425,7 +2425,7 @@ DATA(insert OID = 1783 ( int2 PGUID 12 f t t t 1 f 21 "1700" 100 0 0 100 nu
|
||||
DESCR("(internal)");
|
||||
|
||||
/* formatting */
|
||||
DATA(insert OID = 1770 ( to_char PGUID 11 f t f t 2 f 25 "1184 25" 100 0 0 100 timestamp_to_char - ));
|
||||
DATA(insert OID = 1770 ( to_char PGUID 12 f t f t 2 f 25 "1184 25" 100 0 0 100 timestamp_to_char - ));
|
||||
DESCR("format timestamp to text");
|
||||
DATA(insert OID = 1772 ( to_char PGUID 11 f t f t 2 f 25 "1700 25" 100 0 0 100 numeric_to_char - ));
|
||||
DESCR("format numeric to text");
|
||||
@ -2439,9 +2439,9 @@ DATA(insert OID = 1776 ( to_char PGUID 11 f t f t 2 f 25 "701 25" 100 0 0 100
|
||||
DESCR("format float8 to text");
|
||||
DATA(insert OID = 1777 ( to_number PGUID 11 f t f t 2 f 1700 "25 25" 100 0 0 100 numeric_to_number - ));
|
||||
DESCR("convert text to numeric");
|
||||
DATA(insert OID = 1778 ( to_timestamp PGUID 11 f t f t 2 f 1184 "25 25" 100 0 0 100 to_timestamp - ));
|
||||
DATA(insert OID = 1778 ( to_timestamp PGUID 12 f t f t 2 f 1184 "25 25" 100 0 0 100 to_timestamp - ));
|
||||
DESCR("convert text to timestamp");
|
||||
DATA(insert OID = 1780 ( to_date PGUID 11 f t f t 2 f 1082 "25 25" 100 0 0 100 to_date - ));
|
||||
DATA(insert OID = 1780 ( to_date PGUID 12 f t f t 2 f 1082 "25 25" 100 0 0 100 to_date - ));
|
||||
DESCR("convert text to date");
|
||||
|
||||
DATA(insert OID = 1798 ( oidin PGUID 12 f t t t 1 f 26 "0" 100 0 0 100 oidin - ));
|
||||
|
@ -7,39 +7,43 @@
|
||||
* Portions Copyright (c) 1996-2000, PostgreSQL, Inc
|
||||
* Portions Copyright (c) 1994, Regents of the University of California
|
||||
*
|
||||
* $Id: be-fsstubs.h,v 1.10 2000/01/26 05:58:12 momjian Exp $
|
||||
* $Id: be-fsstubs.h,v 1.11 2000/06/09 01:11:12 tgl Exp $
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
#ifndef BE_FSSTUBS_H
|
||||
#define BE_FSSTUBS_H
|
||||
|
||||
/* Redefine names LOread() and LOwrite() to be lowercase to allow calling
|
||||
* using the new v6.1 case-insensitive SQL parser. Define macros to allow
|
||||
* the existing code to stay the same. - tgl 97/05/03
|
||||
*/
|
||||
|
||||
#define LOread(f,l) loread(f,l)
|
||||
#define LOwrite(f,b) lowrite(f,b)
|
||||
|
||||
extern Oid lo_import(text *filename);
|
||||
extern int4 lo_export(Oid lobjId, text *filename);
|
||||
|
||||
extern Oid lo_creat(int mode);
|
||||
|
||||
extern int lo_open(Oid lobjId, int mode);
|
||||
extern int lo_close(int fd);
|
||||
extern int lo_read(int fd, char *buf, int len);
|
||||
extern int lo_write(int fd, char *buf, int len);
|
||||
extern int lo_lseek(int fd, int offset, int whence);
|
||||
extern int lo_tell(int fd);
|
||||
extern int lo_unlink(Oid lobjId);
|
||||
|
||||
extern struct varlena *loread(int fd, int len);
|
||||
extern int lowrite(int fd, struct varlena * wbuf);
|
||||
#include "fmgr.h"
|
||||
|
||||
/*
|
||||
* Added for buffer leak prevention [ Pascal André <andre@via.ecp.fr> ]
|
||||
* LO functions available via pg_proc entries
|
||||
*/
|
||||
extern Datum lo_import(PG_FUNCTION_ARGS);
|
||||
extern Datum lo_export(PG_FUNCTION_ARGS);
|
||||
|
||||
extern Datum lo_creat(PG_FUNCTION_ARGS);
|
||||
|
||||
extern Datum lo_open(PG_FUNCTION_ARGS);
|
||||
extern Datum lo_close(PG_FUNCTION_ARGS);
|
||||
|
||||
extern Datum loread(PG_FUNCTION_ARGS);
|
||||
extern Datum lowrite(PG_FUNCTION_ARGS);
|
||||
|
||||
extern Datum lo_lseek(PG_FUNCTION_ARGS);
|
||||
extern Datum lo_tell(PG_FUNCTION_ARGS);
|
||||
extern Datum lo_unlink(PG_FUNCTION_ARGS);
|
||||
|
||||
/*
|
||||
* These are not fmgr-callable, but are available to C code.
|
||||
* Probably these should have had the underscore-free names,
|
||||
* but too late now...
|
||||
*/
|
||||
extern int lo_read(int fd, char *buf, int len);
|
||||
extern int lo_write(int fd, char *buf, int len);
|
||||
|
||||
/*
|
||||
* Cleanup LOs at xact commit/abort [ Pascal André <andre@via.ecp.fr> ]
|
||||
*/
|
||||
extern void lo_commit(bool isCommit);
|
||||
|
||||
|
@ -7,7 +7,7 @@
|
||||
* Portions Copyright (c) 1996-2000, PostgreSQL, Inc
|
||||
* Portions Copyright (c) 1994, Regents of the University of California
|
||||
*
|
||||
* $Id: builtins.h,v 1.114 2000/06/08 22:37:58 momjian Exp $
|
||||
* $Id: builtins.h,v 1.115 2000/06/09 01:11:14 tgl Exp $
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
@ -180,7 +180,7 @@ extern Datum btfloat4cmp(PG_FUNCTION_ARGS);
|
||||
extern Datum btfloat8cmp(PG_FUNCTION_ARGS);
|
||||
extern Datum btoidcmp(PG_FUNCTION_ARGS);
|
||||
extern Datum btoidvectorcmp(PG_FUNCTION_ARGS);
|
||||
extern int32 btabstimecmp(AbsoluteTime a, AbsoluteTime b);
|
||||
extern Datum btabstimecmp(PG_FUNCTION_ARGS);
|
||||
extern Datum btcharcmp(PG_FUNCTION_ARGS);
|
||||
extern Datum btnamecmp(PG_FUNCTION_ARGS);
|
||||
extern Datum bttextcmp(PG_FUNCTION_ARGS);
|
||||
@ -309,8 +309,8 @@ extern Datum oidsrand(PG_FUNCTION_ARGS);
|
||||
extern Datum userfntest(PG_FUNCTION_ARGS);
|
||||
|
||||
/* not_in.c */
|
||||
extern bool int4notin(int32 not_in_arg, char *relation_and_attr);
|
||||
extern bool oidnotin(Oid the_oid, char *compare);
|
||||
extern Datum int4notin(PG_FUNCTION_ARGS);
|
||||
extern Datum oidnotin(PG_FUNCTION_ARGS);
|
||||
|
||||
/* oid.c */
|
||||
extern Datum oidvectorin(PG_FUNCTION_ARGS);
|
||||
@ -353,7 +353,7 @@ extern Datum regproctooid(PG_FUNCTION_ARGS);
|
||||
/* ruleutils.c */
|
||||
extern text *pg_get_ruledef(NameData *rname);
|
||||
extern text *pg_get_viewdef(NameData *rname);
|
||||
extern text *pg_get_indexdef(Oid indexrelid);
|
||||
extern Datum pg_get_indexdef(PG_FUNCTION_ARGS);
|
||||
extern NameData *pg_get_userbyid(int32 uid);
|
||||
extern char *deparse_expression(Node *expr, List *rangetables,
|
||||
bool forceprefix);
|
||||
@ -407,8 +407,8 @@ extern char *make_greater_string(const char *str, Oid datatype);
|
||||
extern ItemPointer tidin(const char *str);
|
||||
extern char *tidout(ItemPointer itemPtr);
|
||||
extern bool tideq(ItemPointer, ItemPointer);
|
||||
extern ItemPointer currtid_byreloid(Oid relOid, ItemPointer);
|
||||
extern ItemPointer currtid_byrelname(const text *relName, ItemPointer);
|
||||
extern Datum currtid_byreloid(PG_FUNCTION_ARGS);
|
||||
extern Datum currtid_byrelname(PG_FUNCTION_ARGS);
|
||||
|
||||
/* varchar.c */
|
||||
|
||||
|
@ -7,13 +7,16 @@
|
||||
* Portions Copyright (c) 1996-2000, PostgreSQL, Inc
|
||||
* Portions Copyright (c) 1994, Regents of the University of California
|
||||
*
|
||||
* $Id: date.h,v 1.3 2000/04/12 17:16:54 momjian Exp $
|
||||
* $Id: date.h,v 1.4 2000/06/09 01:11:15 tgl Exp $
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
#ifndef DATE_H
|
||||
#define DATE_H
|
||||
|
||||
#include "fmgr.h"
|
||||
|
||||
|
||||
typedef int32 DateADT;
|
||||
|
||||
typedef float8 TimeADT;
|
||||
@ -25,56 +28,77 @@ typedef struct
|
||||
int4 zone; /* numeric time zone, in seconds */
|
||||
} TimeTzADT;
|
||||
|
||||
/*
|
||||
* Macros for fmgr-callable functions.
|
||||
*
|
||||
* For TimeADT, we make use of the same support routines as for float8.
|
||||
* Therefore TimeADT is pass-by-reference if and only if float8 is!
|
||||
*/
|
||||
#define DatumGetDateADT(X) ((DateADT) DatumGetInt32(X))
|
||||
#define DatumGetTimeADT(X) ((TimeADT) DatumGetFloat8(X))
|
||||
#define DatumGetTimeTzADTP(X) ((TimeTzADT *) DatumGetPointer(X))
|
||||
|
||||
#define DateADTGetDatum(X) Int32GetDatum(X)
|
||||
#define TimeADTGetDatum(X) Float8GetDatum(X)
|
||||
#define TimeTzADTPGetDatum(X) PointerGetDatum(X)
|
||||
|
||||
#define PG_GETARG_DATEADT(n) DatumGetDateADT(PG_GETARG_DATUM(n))
|
||||
#define PG_GETARG_TIMEADT(n) DatumGetTimeADT(PG_GETARG_DATUM(n))
|
||||
#define PG_GETARG_TIMETZADT_P(n) DatumGetTimeTzADTP(PG_GETARG_DATUM(n))
|
||||
|
||||
#define PG_RETURN_DATEADT(x) return DateADTGetDatum(x)
|
||||
#define PG_RETURN_TIMEADT(x) return TimeADTGetDatum(x)
|
||||
#define PG_RETURN_TIMETZADT_P(x) return TimeTzADTPGetDatum(x)
|
||||
|
||||
|
||||
/* date.c */
|
||||
extern DateADT date_in(char *datestr);
|
||||
extern char *date_out(DateADT dateVal);
|
||||
extern bool date_eq(DateADT dateVal1, DateADT dateVal2);
|
||||
extern bool date_ne(DateADT dateVal1, DateADT dateVal2);
|
||||
extern bool date_lt(DateADT dateVal1, DateADT dateVal2);
|
||||
extern bool date_le(DateADT dateVal1, DateADT dateVal2);
|
||||
extern bool date_gt(DateADT dateVal1, DateADT dateVal2);
|
||||
extern bool date_ge(DateADT dateVal1, DateADT dateVal2);
|
||||
extern int date_cmp(DateADT dateVal1, DateADT dateVal2);
|
||||
extern DateADT date_larger(DateADT dateVal1, DateADT dateVal2);
|
||||
extern DateADT date_smaller(DateADT dateVal1, DateADT dateVal2);
|
||||
extern int32 date_mi(DateADT dateVal1, DateADT dateVal2);
|
||||
extern DateADT date_pli(DateADT dateVal, int32 days);
|
||||
extern DateADT date_mii(DateADT dateVal, int32 days);
|
||||
extern Timestamp *date_timestamp(DateADT date);
|
||||
extern DateADT timestamp_date(Timestamp *timestamp);
|
||||
extern Timestamp *datetime_timestamp(DateADT date, TimeADT *time);
|
||||
extern DateADT abstime_date(AbsoluteTime abstime);
|
||||
extern Datum date_in(PG_FUNCTION_ARGS);
|
||||
extern Datum date_out(PG_FUNCTION_ARGS);
|
||||
extern Datum date_eq(PG_FUNCTION_ARGS);
|
||||
extern Datum date_ne(PG_FUNCTION_ARGS);
|
||||
extern Datum date_lt(PG_FUNCTION_ARGS);
|
||||
extern Datum date_le(PG_FUNCTION_ARGS);
|
||||
extern Datum date_gt(PG_FUNCTION_ARGS);
|
||||
extern Datum date_ge(PG_FUNCTION_ARGS);
|
||||
extern Datum date_cmp(PG_FUNCTION_ARGS);
|
||||
extern Datum date_larger(PG_FUNCTION_ARGS);
|
||||
extern Datum date_smaller(PG_FUNCTION_ARGS);
|
||||
extern Datum date_mi(PG_FUNCTION_ARGS);
|
||||
extern Datum date_pli(PG_FUNCTION_ARGS);
|
||||
extern Datum date_mii(PG_FUNCTION_ARGS);
|
||||
extern Datum date_timestamp(PG_FUNCTION_ARGS);
|
||||
extern Datum timestamp_date(PG_FUNCTION_ARGS);
|
||||
extern Datum datetime_timestamp(PG_FUNCTION_ARGS);
|
||||
extern Datum abstime_date(PG_FUNCTION_ARGS);
|
||||
|
||||
extern TimeADT *time_in(char *timestr);
|
||||
extern char *time_out(TimeADT *time);
|
||||
extern bool time_eq(TimeADT *time1, TimeADT *time2);
|
||||
extern bool time_ne(TimeADT *time1, TimeADT *time2);
|
||||
extern bool time_lt(TimeADT *time1, TimeADT *time2);
|
||||
extern bool time_le(TimeADT *time1, TimeADT *time2);
|
||||
extern bool time_gt(TimeADT *time1, TimeADT *time2);
|
||||
extern bool time_ge(TimeADT *time1, TimeADT *time2);
|
||||
extern int time_cmp(TimeADT *time1, TimeADT *time2);
|
||||
extern bool overlaps_time(TimeADT *time1, TimeADT *time2,
|
||||
TimeADT *time3, TimeADT *time4);
|
||||
extern TimeADT *time_larger(TimeADT *time1, TimeADT *time2);
|
||||
extern TimeADT *time_smaller(TimeADT *time1, TimeADT *time2);
|
||||
extern TimeADT *timestamp_time(Timestamp *timestamp);
|
||||
extern Interval *time_interval(TimeADT *time);
|
||||
extern Datum time_in(PG_FUNCTION_ARGS);
|
||||
extern Datum time_out(PG_FUNCTION_ARGS);
|
||||
extern Datum time_eq(PG_FUNCTION_ARGS);
|
||||
extern Datum time_ne(PG_FUNCTION_ARGS);
|
||||
extern Datum time_lt(PG_FUNCTION_ARGS);
|
||||
extern Datum time_le(PG_FUNCTION_ARGS);
|
||||
extern Datum time_gt(PG_FUNCTION_ARGS);
|
||||
extern Datum time_ge(PG_FUNCTION_ARGS);
|
||||
extern Datum time_cmp(PG_FUNCTION_ARGS);
|
||||
extern Datum overlaps_time(PG_FUNCTION_ARGS);
|
||||
extern Datum time_larger(PG_FUNCTION_ARGS);
|
||||
extern Datum time_smaller(PG_FUNCTION_ARGS);
|
||||
extern Datum timestamp_time(PG_FUNCTION_ARGS);
|
||||
extern Datum time_interval(PG_FUNCTION_ARGS);
|
||||
|
||||
extern TimeTzADT *timetz_in(char *timestr);
|
||||
extern char *timetz_out(TimeTzADT *time);
|
||||
extern bool timetz_eq(TimeTzADT *time1, TimeTzADT *time2);
|
||||
extern bool timetz_ne(TimeTzADT *time1, TimeTzADT *time2);
|
||||
extern bool timetz_lt(TimeTzADT *time1, TimeTzADT *time2);
|
||||
extern bool timetz_le(TimeTzADT *time1, TimeTzADT *time2);
|
||||
extern bool timetz_gt(TimeTzADT *time1, TimeTzADT *time2);
|
||||
extern bool timetz_ge(TimeTzADT *time1, TimeTzADT *time2);
|
||||
extern int timetz_cmp(TimeTzADT *time1, TimeTzADT *time2);
|
||||
extern bool overlaps_timetz(TimeTzADT *time1, TimeTzADT *time2,
|
||||
TimeTzADT *time3, TimeTzADT *time4);
|
||||
extern TimeTzADT *timetz_larger(TimeTzADT *time1, TimeTzADT *time2);
|
||||
extern TimeTzADT *timetz_smaller(TimeTzADT *time1, TimeTzADT *time2);
|
||||
extern TimeTzADT *timestamp_timetz(Timestamp *timestamp);
|
||||
extern Timestamp *datetimetz_timestamp(DateADT date, TimeTzADT *time);
|
||||
extern Datum timetz_in(PG_FUNCTION_ARGS);
|
||||
extern Datum timetz_out(PG_FUNCTION_ARGS);
|
||||
extern Datum timetz_eq(PG_FUNCTION_ARGS);
|
||||
extern Datum timetz_ne(PG_FUNCTION_ARGS);
|
||||
extern Datum timetz_lt(PG_FUNCTION_ARGS);
|
||||
extern Datum timetz_le(PG_FUNCTION_ARGS);
|
||||
extern Datum timetz_gt(PG_FUNCTION_ARGS);
|
||||
extern Datum timetz_ge(PG_FUNCTION_ARGS);
|
||||
extern Datum timetz_cmp(PG_FUNCTION_ARGS);
|
||||
extern Datum overlaps_timetz(PG_FUNCTION_ARGS);
|
||||
extern Datum timetz_larger(PG_FUNCTION_ARGS);
|
||||
extern Datum timetz_smaller(PG_FUNCTION_ARGS);
|
||||
extern Datum timestamp_timetz(PG_FUNCTION_ARGS);
|
||||
extern Datum datetimetz_timestamp(PG_FUNCTION_ARGS);
|
||||
|
||||
#endif /* DATE_H */
|
||||
|
@ -2,7 +2,7 @@
|
||||
/* -----------------------------------------------------------------------
|
||||
* formatting.h
|
||||
*
|
||||
* $Id: formatting.h,v 1.4 2000/04/12 17:16:55 momjian Exp $
|
||||
* $Id: formatting.h,v 1.5 2000/06/09 01:11:15 tgl Exp $
|
||||
*
|
||||
*
|
||||
* Portions Copyright (c) 1999-2000, PostgreSQL, Inc
|
||||
@ -18,9 +18,12 @@
|
||||
#ifndef _FORMATTING_H_
|
||||
#define _FORMATTING_H_
|
||||
|
||||
extern text *timestamp_to_char(Timestamp *dt, text *fmt);
|
||||
extern Timestamp *to_timestamp(text *date_str, text *fmt);
|
||||
extern DateADT to_date(text *date_str, text *fmt);
|
||||
#include "fmgr.h"
|
||||
|
||||
|
||||
extern Datum timestamp_to_char(PG_FUNCTION_ARGS);
|
||||
extern Datum to_timestamp(PG_FUNCTION_ARGS);
|
||||
extern Datum to_date(PG_FUNCTION_ARGS);
|
||||
extern Numeric numeric_to_number(text *value, text *fmt);
|
||||
extern text *numeric_to_char(Numeric value, text *fmt);
|
||||
extern text *int4_to_char(int32 value, text *fmt);
|
||||
|
@ -7,7 +7,7 @@
|
||||
* Portions Copyright (c) 1996-2000, PostgreSQL, Inc
|
||||
* Portions Copyright (c) 1994, Regents of the University of California
|
||||
*
|
||||
* $Id: nabstime.h,v 1.25 2000/04/12 17:16:55 momjian Exp $
|
||||
* $Id: nabstime.h,v 1.26 2000/06/09 01:11:15 tgl Exp $
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
@ -15,13 +15,15 @@
|
||||
#define NABSTIME_H
|
||||
|
||||
#include <time.h>
|
||||
|
||||
#include "fmgr.h"
|
||||
#include "utils/timestamp.h"
|
||||
#include "utils/datetime.h"
|
||||
|
||||
|
||||
/* ----------------------------------------------------------------
|
||||
* time types + support macros
|
||||
*
|
||||
* time types + support macros
|
||||
*
|
||||
* ----------------------------------------------------------------
|
||||
*/
|
||||
@ -39,8 +41,28 @@ typedef struct
|
||||
int32 status;
|
||||
AbsoluteTime data[2];
|
||||
} TimeIntervalData;
|
||||
|
||||
typedef TimeIntervalData *TimeInterval;
|
||||
|
||||
/*
|
||||
* Macros for fmgr-callable functions.
|
||||
*/
|
||||
#define DatumGetAbsoluteTime(X) ((AbsoluteTime) DatumGetInt32(X))
|
||||
#define DatumGetRelativeTime(X) ((RelativeTime) DatumGetInt32(X))
|
||||
#define DatumGetTimeInterval(X) ((TimeInterval) DatumGetPointer(X))
|
||||
|
||||
#define AbsoluteTimeGetDatum(X) Int32GetDatum(X)
|
||||
#define RelativeTimeGetDatum(X) Int32GetDatum(X)
|
||||
#define TimeIntervalGetDatum(X) PointerGetDatum(X)
|
||||
|
||||
#define PG_GETARG_ABSOLUTETIME(n) DatumGetAbsoluteTime(PG_GETARG_DATUM(n))
|
||||
#define PG_GETARG_RELATIVETIME(n) DatumGetRelativeTime(PG_GETARG_DATUM(n))
|
||||
#define PG_GETARG_TIMEINTERVAL(n) DatumGetTimeInterval(PG_GETARG_DATUM(n))
|
||||
|
||||
#define PG_RETURN_ABSOLUTETIME(x) return AbsoluteTimeGetDatum(x)
|
||||
#define PG_RETURN_RELATIVETIME(x) return RelativeTimeGetDatum(x)
|
||||
#define PG_RETURN_TIMEINTERVAL(x) return TimeIntervalGetDatum(x)
|
||||
|
||||
/*
|
||||
* Reserved values
|
||||
* Epoch is Unix system time zero, but needs to be kept as a reserved
|
||||
@ -78,21 +100,9 @@ typedef TimeIntervalData *TimeInterval;
|
||||
((bool) (((AbsoluteTime) time) < NOEND_ABSTIME && \
|
||||
((AbsoluteTime) time) > NOSTART_ABSTIME))
|
||||
|
||||
/* have to include this because EPOCH_ABSTIME used to be invalid - yuk */
|
||||
#define AbsoluteTimeIsBackwardCompatiblyValid(time) \
|
||||
((bool) (((AbsoluteTime) time) != INVALID_ABSTIME && \
|
||||
((AbsoluteTime) time) > EPOCH_ABSTIME))
|
||||
|
||||
#define AbsoluteTimeIsBackwardCompatiblyReal(time) \
|
||||
((bool) (((AbsoluteTime) time) < NOEND_ABSTIME && \
|
||||
((AbsoluteTime) time) > NOSTART_ABSTIME && \
|
||||
((AbsoluteTime) time) > EPOCH_ABSTIME))
|
||||
|
||||
#define RelativeTimeIsValid(time) \
|
||||
((bool) (((RelativeTime) time) != INVALID_RELTIME))
|
||||
|
||||
extern AbsoluteTime GetCurrentAbsoluteTime(void);
|
||||
|
||||
/*
|
||||
* getSystemTime
|
||||
* Returns system time.
|
||||
@ -104,62 +114,62 @@ extern AbsoluteTime GetCurrentAbsoluteTime(void);
|
||||
/*
|
||||
* nabstime.c prototypes
|
||||
*/
|
||||
extern AbsoluteTime nabstimein(char *timestr);
|
||||
extern char *nabstimeout(AbsoluteTime time);
|
||||
extern Datum nabstimein(PG_FUNCTION_ARGS);
|
||||
extern Datum nabstimeout(PG_FUNCTION_ARGS);
|
||||
|
||||
extern bool abstimeeq(AbsoluteTime t1, AbsoluteTime t2);
|
||||
extern bool abstimene(AbsoluteTime t1, AbsoluteTime t2);
|
||||
extern bool abstimelt(AbsoluteTime t1, AbsoluteTime t2);
|
||||
extern bool abstimegt(AbsoluteTime t1, AbsoluteTime t2);
|
||||
extern bool abstimele(AbsoluteTime t1, AbsoluteTime t2);
|
||||
extern bool abstimege(AbsoluteTime t1, AbsoluteTime t2);
|
||||
extern bool abstime_finite(AbsoluteTime time);
|
||||
extern Datum abstimeeq(PG_FUNCTION_ARGS);
|
||||
extern Datum abstimene(PG_FUNCTION_ARGS);
|
||||
extern Datum abstimelt(PG_FUNCTION_ARGS);
|
||||
extern Datum abstimegt(PG_FUNCTION_ARGS);
|
||||
extern Datum abstimele(PG_FUNCTION_ARGS);
|
||||
extern Datum abstimege(PG_FUNCTION_ARGS);
|
||||
extern Datum abstime_finite(PG_FUNCTION_ARGS);
|
||||
|
||||
extern AbsoluteTime timestamp_abstime(Timestamp *timestamp);
|
||||
extern Timestamp *abstime_timestamp(AbsoluteTime abstime);
|
||||
extern Datum timestamp_abstime(PG_FUNCTION_ARGS);
|
||||
extern Datum abstime_timestamp(PG_FUNCTION_ARGS);
|
||||
|
||||
extern Datum reltimein(PG_FUNCTION_ARGS);
|
||||
extern Datum reltimeout(PG_FUNCTION_ARGS);
|
||||
extern Datum tintervalin(PG_FUNCTION_ARGS);
|
||||
extern Datum tintervalout(PG_FUNCTION_ARGS);
|
||||
extern Datum interval_reltime(PG_FUNCTION_ARGS);
|
||||
extern Datum reltime_interval(PG_FUNCTION_ARGS);
|
||||
extern Datum mktinterval(PG_FUNCTION_ARGS);
|
||||
extern Datum timepl(PG_FUNCTION_ARGS);
|
||||
extern Datum timemi(PG_FUNCTION_ARGS);
|
||||
|
||||
extern Datum intinterval(PG_FUNCTION_ARGS);
|
||||
extern Datum tintervalrel(PG_FUNCTION_ARGS);
|
||||
extern Datum timenow(PG_FUNCTION_ARGS);
|
||||
extern Datum reltimeeq(PG_FUNCTION_ARGS);
|
||||
extern Datum reltimene(PG_FUNCTION_ARGS);
|
||||
extern Datum reltimelt(PG_FUNCTION_ARGS);
|
||||
extern Datum reltimegt(PG_FUNCTION_ARGS);
|
||||
extern Datum reltimele(PG_FUNCTION_ARGS);
|
||||
extern Datum reltimege(PG_FUNCTION_ARGS);
|
||||
extern Datum tintervalsame(PG_FUNCTION_ARGS);
|
||||
extern Datum tintervaleq(PG_FUNCTION_ARGS);
|
||||
extern Datum tintervalne(PG_FUNCTION_ARGS);
|
||||
extern Datum tintervallt(PG_FUNCTION_ARGS);
|
||||
extern Datum tintervalgt(PG_FUNCTION_ARGS);
|
||||
extern Datum tintervalle(PG_FUNCTION_ARGS);
|
||||
extern Datum tintervalge(PG_FUNCTION_ARGS);
|
||||
extern Datum tintervalleneq(PG_FUNCTION_ARGS);
|
||||
extern Datum tintervallenne(PG_FUNCTION_ARGS);
|
||||
extern Datum tintervallenlt(PG_FUNCTION_ARGS);
|
||||
extern Datum tintervallengt(PG_FUNCTION_ARGS);
|
||||
extern Datum tintervallenle(PG_FUNCTION_ARGS);
|
||||
extern Datum tintervallenge(PG_FUNCTION_ARGS);
|
||||
extern Datum tintervalct(PG_FUNCTION_ARGS);
|
||||
extern Datum tintervalov(PG_FUNCTION_ARGS);
|
||||
extern Datum tintervalstart(PG_FUNCTION_ARGS);
|
||||
extern Datum tintervalend(PG_FUNCTION_ARGS);
|
||||
extern Datum int4reltime(PG_FUNCTION_ARGS);
|
||||
extern Datum timeofday(PG_FUNCTION_ARGS);
|
||||
|
||||
/* non-fmgr-callable support routines */
|
||||
extern AbsoluteTime GetCurrentAbsoluteTime(void);
|
||||
extern bool AbsoluteTimeIsBefore(AbsoluteTime time1, AbsoluteTime time2);
|
||||
|
||||
extern void abstime2tm(AbsoluteTime time, int *tzp, struct tm * tm, char *tzn);
|
||||
|
||||
extern RelativeTime reltimein(char *timestring);
|
||||
extern char *reltimeout(RelativeTime timevalue);
|
||||
extern TimeInterval tintervalin(char *intervalstr);
|
||||
extern char *tintervalout(TimeInterval interval);
|
||||
extern RelativeTime interval_reltime(Interval *interval);
|
||||
extern Interval *reltime_interval(RelativeTime reltime);
|
||||
extern TimeInterval mktinterval(AbsoluteTime t1, AbsoluteTime t2);
|
||||
extern AbsoluteTime timepl(AbsoluteTime t1, RelativeTime t2);
|
||||
extern AbsoluteTime timemi(AbsoluteTime t1, RelativeTime t2);
|
||||
|
||||
/* extern RelativeTime abstimemi(AbsoluteTime t1, AbsoluteTime t2); static*/
|
||||
extern int intinterval(AbsoluteTime t, TimeInterval interval);
|
||||
extern RelativeTime tintervalrel(TimeInterval interval);
|
||||
extern AbsoluteTime timenow(void);
|
||||
extern bool reltimeeq(RelativeTime t1, RelativeTime t2);
|
||||
extern bool reltimene(RelativeTime t1, RelativeTime t2);
|
||||
extern bool reltimelt(RelativeTime t1, RelativeTime t2);
|
||||
extern bool reltimegt(RelativeTime t1, RelativeTime t2);
|
||||
extern bool reltimele(RelativeTime t1, RelativeTime t2);
|
||||
extern bool reltimege(RelativeTime t1, RelativeTime t2);
|
||||
extern bool tintervalsame(TimeInterval i1, TimeInterval i2);
|
||||
extern bool tintervaleq(TimeInterval i1, TimeInterval i2);
|
||||
extern bool tintervalne(TimeInterval i1, TimeInterval i2);
|
||||
extern bool tintervallt(TimeInterval i1, TimeInterval i2);
|
||||
extern bool tintervalgt(TimeInterval i1, TimeInterval i2);
|
||||
extern bool tintervalle(TimeInterval i1, TimeInterval i2);
|
||||
extern bool tintervalge(TimeInterval i1, TimeInterval i2);
|
||||
extern bool tintervalleneq(TimeInterval i, RelativeTime t);
|
||||
extern bool tintervallenne(TimeInterval i, RelativeTime t);
|
||||
extern bool tintervallenlt(TimeInterval i, RelativeTime t);
|
||||
extern bool tintervallengt(TimeInterval i, RelativeTime t);
|
||||
extern bool tintervallenle(TimeInterval i, RelativeTime t);
|
||||
extern bool tintervallenge(TimeInterval i, RelativeTime t);
|
||||
extern bool tintervalct(TimeInterval i1, TimeInterval i2);
|
||||
extern bool tintervalov(TimeInterval i1, TimeInterval i2);
|
||||
extern AbsoluteTime tintervalstart(TimeInterval i);
|
||||
extern AbsoluteTime tintervalend(TimeInterval i);
|
||||
extern int32 int4reltime(int32 timevalue);
|
||||
extern text *timeofday(void);
|
||||
|
||||
#endif /* NABSTIME_H */
|
||||
|
@ -7,17 +7,20 @@
|
||||
* Portions Copyright (c) 1996-2000, PostgreSQL, Inc
|
||||
* Portions Copyright (c) 1994, Regents of the University of California
|
||||
*
|
||||
* $Id: sets.h,v 1.6 2000/01/26 05:58:38 momjian Exp $
|
||||
* $Id: sets.h,v 1.7 2000/06/09 01:11:15 tgl Exp $
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
#ifndef SETS_H
|
||||
#define SETS_H
|
||||
|
||||
#include "fmgr.h"
|
||||
|
||||
|
||||
/* Temporary name of set, before SetDefine changes it. */
|
||||
#define GENERICSETNAME "zyxset"
|
||||
|
||||
extern Oid SetDefine(char *querystr, char *typename);
|
||||
extern int seteval(Oid funcoid);
|
||||
extern Datum seteval(PG_FUNCTION_ARGS);
|
||||
|
||||
#endif /* SETS_H */
|
||||
|
@ -6,7 +6,7 @@
|
||||
* Portions Copyright (c) 1996-2000, PostgreSQL, Inc
|
||||
* Portions Copyright (c) 1994, Regents of the University of California
|
||||
*
|
||||
* $Id: timestamp.h,v 1.5 2000/06/08 22:37:58 momjian Exp $
|
||||
* $Id: timestamp.h,v 1.6 2000/06/09 01:11:15 tgl Exp $
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
@ -17,6 +17,9 @@
|
||||
#include <math.h>
|
||||
#include <limits.h>
|
||||
|
||||
#include "fmgr.h"
|
||||
|
||||
|
||||
/*
|
||||
* Timestamp represents absolute time.
|
||||
* Interval represents delta time. Keep track of months (and years)
|
||||
@ -38,6 +41,25 @@ typedef struct
|
||||
} Interval;
|
||||
|
||||
|
||||
/*
|
||||
* Macros for fmgr-callable functions.
|
||||
*
|
||||
* For Timestamp, we make use of the same support routines as for float8.
|
||||
* Therefore Timestamp is pass-by-reference if and only if float8 is!
|
||||
*/
|
||||
#define DatumGetTimestamp(X) ((Timestamp) DatumGetFloat8(X))
|
||||
#define DatumGetIntervalP(X) ((Interval *) DatumGetPointer(X))
|
||||
|
||||
#define TimestampGetDatum(X) Float8GetDatum(X)
|
||||
#define IntervalPGetDatum(X) PointerGetDatum(X)
|
||||
|
||||
#define PG_GETARG_TIMESTAMP(n) DatumGetTimestamp(PG_GETARG_DATUM(n))
|
||||
#define PG_GETARG_INTERVAL_P(n) DatumGetIntervalP(PG_GETARG_DATUM(n))
|
||||
|
||||
#define PG_RETURN_TIMESTAMP(x) return TimestampGetDatum(x)
|
||||
#define PG_RETURN_INTERVAL_P(x) return IntervalPGetDatum(x)
|
||||
|
||||
|
||||
#ifdef NAN
|
||||
#define DT_INVALID (NAN)
|
||||
#else
|
||||
@ -105,59 +127,63 @@ extern int timestamp_is_epoch(double j);
|
||||
* timestamp.c prototypes
|
||||
*/
|
||||
|
||||
extern Timestamp *timestamp_in(char *str);
|
||||
extern char *timestamp_out(Timestamp *dt);
|
||||
extern bool timestamp_eq(Timestamp *dt1, Timestamp *dt2);
|
||||
extern bool timestamp_ne(Timestamp *dt1, Timestamp *dt2);
|
||||
extern bool timestamp_lt(Timestamp *dt1, Timestamp *dt2);
|
||||
extern bool timestamp_le(Timestamp *dt1, Timestamp *dt2);
|
||||
extern bool timestamp_ge(Timestamp *dt1, Timestamp *dt2);
|
||||
extern bool timestamp_gt(Timestamp *dt1, Timestamp *dt2);
|
||||
extern bool timestamp_finite(Timestamp *timestamp);
|
||||
extern int timestamp_cmp(Timestamp *dt1, Timestamp *dt2);
|
||||
extern Timestamp *timestamp_smaller(Timestamp *dt1, Timestamp *dt2);
|
||||
extern Timestamp *timestamp_larger(Timestamp *dt1, Timestamp *dt2);
|
||||
extern Datum timestamp_in(PG_FUNCTION_ARGS);
|
||||
extern Datum timestamp_out(PG_FUNCTION_ARGS);
|
||||
extern Datum timestamp_eq(PG_FUNCTION_ARGS);
|
||||
extern Datum timestamp_ne(PG_FUNCTION_ARGS);
|
||||
extern Datum timestamp_lt(PG_FUNCTION_ARGS);
|
||||
extern Datum timestamp_le(PG_FUNCTION_ARGS);
|
||||
extern Datum timestamp_ge(PG_FUNCTION_ARGS);
|
||||
extern Datum timestamp_gt(PG_FUNCTION_ARGS);
|
||||
extern Datum timestamp_finite(PG_FUNCTION_ARGS);
|
||||
extern Datum timestamp_cmp(PG_FUNCTION_ARGS);
|
||||
extern Datum timestamp_smaller(PG_FUNCTION_ARGS);
|
||||
extern Datum timestamp_larger(PG_FUNCTION_ARGS);
|
||||
|
||||
extern Interval *interval_in(char *str);
|
||||
extern char *interval_out(Interval *span);
|
||||
extern bool interval_eq(Interval *span1, Interval *span2);
|
||||
extern bool interval_ne(Interval *span1, Interval *span2);
|
||||
extern bool interval_lt(Interval *span1, Interval *span2);
|
||||
extern bool interval_le(Interval *span1, Interval *span2);
|
||||
extern bool interval_ge(Interval *span1, Interval *span2);
|
||||
extern bool interval_gt(Interval *span1, Interval *span2);
|
||||
extern bool interval_finite(Interval *span);
|
||||
extern int interval_cmp(Interval *span1, Interval *span2);
|
||||
extern Interval *interval_smaller(Interval *span1, Interval *span2);
|
||||
extern Interval *interval_larger(Interval *span1, Interval *span2);
|
||||
extern Datum interval_in(PG_FUNCTION_ARGS);
|
||||
extern Datum interval_out(PG_FUNCTION_ARGS);
|
||||
extern Datum interval_eq(PG_FUNCTION_ARGS);
|
||||
extern Datum interval_ne(PG_FUNCTION_ARGS);
|
||||
extern Datum interval_lt(PG_FUNCTION_ARGS);
|
||||
extern Datum interval_le(PG_FUNCTION_ARGS);
|
||||
extern Datum interval_ge(PG_FUNCTION_ARGS);
|
||||
extern Datum interval_gt(PG_FUNCTION_ARGS);
|
||||
extern Datum interval_finite(PG_FUNCTION_ARGS);
|
||||
extern Datum interval_cmp(PG_FUNCTION_ARGS);
|
||||
extern Datum interval_smaller(PG_FUNCTION_ARGS);
|
||||
extern Datum interval_larger(PG_FUNCTION_ARGS);
|
||||
|
||||
extern text *timestamp_text(Timestamp *timestamp);
|
||||
extern Timestamp *text_timestamp(text *str);
|
||||
extern text *interval_text(Interval *interval);
|
||||
extern Interval *text_interval(text *str);
|
||||
extern Timestamp *timestamp_trunc(text *units, Timestamp *timestamp);
|
||||
extern Interval *interval_trunc(text *units, Interval *interval);
|
||||
extern float64 timestamp_part(text *units, Timestamp *timestamp);
|
||||
extern float64 interval_part(text *units, Interval *interval);
|
||||
extern text *timestamp_zone(text *zone, Timestamp *timestamp);
|
||||
extern Datum timestamp_text(PG_FUNCTION_ARGS);
|
||||
extern Datum text_timestamp(PG_FUNCTION_ARGS);
|
||||
extern Datum interval_text(PG_FUNCTION_ARGS);
|
||||
extern Datum text_interval(PG_FUNCTION_ARGS);
|
||||
extern Datum timestamp_trunc(PG_FUNCTION_ARGS);
|
||||
extern Datum interval_trunc(PG_FUNCTION_ARGS);
|
||||
extern Datum timestamp_part(PG_FUNCTION_ARGS);
|
||||
extern Datum interval_part(PG_FUNCTION_ARGS);
|
||||
extern Datum timestamp_zone(PG_FUNCTION_ARGS);
|
||||
|
||||
extern Interval *interval_um(Interval *span);
|
||||
extern Interval *interval_pl(Interval *span1, Interval *span2);
|
||||
extern Interval *interval_mi(Interval *span1, Interval *span2);
|
||||
extern Interval *interval_mul(Interval *span1, float8 *factor);
|
||||
extern Interval *mul_d_interval(float8 *factor, Interval *span1);
|
||||
extern Interval *interval_div(Interval *span1, float8 *factor);
|
||||
extern Datum interval_um(PG_FUNCTION_ARGS);
|
||||
extern Datum interval_pl(PG_FUNCTION_ARGS);
|
||||
extern Datum interval_mi(PG_FUNCTION_ARGS);
|
||||
extern Datum interval_mul(PG_FUNCTION_ARGS);
|
||||
extern Datum mul_d_interval(PG_FUNCTION_ARGS);
|
||||
extern Datum interval_div(PG_FUNCTION_ARGS);
|
||||
|
||||
extern Interval *timestamp_mi(Timestamp *dt1, Timestamp *dt2);
|
||||
extern Timestamp *timestamp_pl_span(Timestamp *dt, Interval *span);
|
||||
extern Timestamp *timestamp_mi_span(Timestamp *dt, Interval *span);
|
||||
extern Interval *timestamp_age(Timestamp *dt1, Timestamp *dt2);
|
||||
extern bool overlaps_timestamp(Timestamp *dt1, Timestamp *dt2, Timestamp *dt3, Timestamp *dt4);
|
||||
extern Datum timestamp_mi(PG_FUNCTION_ARGS);
|
||||
extern Datum timestamp_pl_span(PG_FUNCTION_ARGS);
|
||||
extern Datum timestamp_mi_span(PG_FUNCTION_ARGS);
|
||||
extern Datum timestamp_age(PG_FUNCTION_ARGS);
|
||||
extern Datum overlaps_timestamp(PG_FUNCTION_ARGS);
|
||||
|
||||
extern Datum now(PG_FUNCTION_ARGS);
|
||||
|
||||
/* Internal routines (not fmgr-callable) */
|
||||
|
||||
extern int tm2timestamp(struct tm * tm, double fsec, int *tzp, Timestamp *dt);
|
||||
extern int timestamp2tm(Timestamp dt, int *tzp, struct tm * tm, double *fsec, char **tzn);
|
||||
extern int timestamp2tm(Timestamp dt, int *tzp, struct tm * tm,
|
||||
double *fsec, char **tzn);
|
||||
|
||||
extern Timestamp SetTimestamp(Timestamp timestamp);
|
||||
extern Timestamp *now(void);
|
||||
|
||||
#endif /* TIMESTAMP_H */
|
||||
|
@ -8,7 +8,7 @@
|
||||
*
|
||||
*
|
||||
* IDENTIFICATION
|
||||
* $Header: /cvsroot/pgsql/src/tutorial/Attic/beard.c,v 1.3 2000/01/26 05:58:51 momjian Exp $
|
||||
* $Header: /cvsroot/pgsql/src/tutorial/Attic/beard.c,v 1.4 2000/06/09 01:11:16 tgl Exp $
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
@ -34,7 +34,10 @@ beard(Oid picture)
|
||||
char buf[BUFSIZE];
|
||||
int cc;
|
||||
|
||||
if ((pic_fd = lo_open(picture, INV_READ)) == -1)
|
||||
pic_fd = DatumGetInt32(DirectFunctionCall2(lo_open,
|
||||
ObjectIdGetDatum(picture),
|
||||
Int32GetDatum(INV_READ)));
|
||||
if (pic_fd < 0)
|
||||
elog(ERROR, "Cannot access picture large object");
|
||||
|
||||
if (lo_read(pic_fd, (char *) &ihdr, sizeof(ihdr)) != sizeof(ihdr))
|
||||
@ -45,21 +48,31 @@ beard(Oid picture)
|
||||
/*
|
||||
* new large object
|
||||
*/
|
||||
if ((beard = lo_creat(INV_MD)) == 0) /* ?? is this right? */
|
||||
beard = DatumGetObjectId(DirectFunctionCall1(lo_creat,
|
||||
Int32GetDatum(INV_MD)));
|
||||
if (beard == InvalidOid)
|
||||
elog(ERROR, "Cannot create new large object");
|
||||
|
||||
if ((beard_fd = lo_open(beard, INV_WRITE)) == -1)
|
||||
beard_fd = DatumGetInt32(DirectFunctionCall2(lo_open,
|
||||
ObjectIdGetDatum(beard),
|
||||
Int32GetDatum(INV_WRITE)));
|
||||
if (beard_fd < 0)
|
||||
elog(ERROR, "Cannot access beard large object");
|
||||
|
||||
lo_lseek(pic_fd, beardOffset, SET_CUR);
|
||||
if (DatumGetInt32(DirectFunctionCall3(lo_lseek,
|
||||
Int32GetDatum(pic_fd),
|
||||
Int32GetDatum(beardOffset),
|
||||
Int32GetDatum(SEEK_SET))) < 0)
|
||||
elog(ERROR, "Cannot seek in picture large object");
|
||||
|
||||
while ((cc = lo_read(pic_fd, buf, BUFSIZE)) > 0)
|
||||
{
|
||||
if (lo_write(beard_fd, buf, cc) != cc)
|
||||
elog(ERROR, "error while writing large object");
|
||||
}
|
||||
|
||||
lo_close(pic_fd);
|
||||
lo_close(beard_fd);
|
||||
DirectFunctionCall1(lo_close, Int32GetDatum(pic_fd));
|
||||
DirectFunctionCall1(lo_close, Int32GetDatum(beard_fd));
|
||||
|
||||
return beard;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user