mirror of
https://github.com/postgres/postgres.git
synced 2025-06-13 07:41:39 +03:00
Massive commit to run PGINDENT on all *.c and *.h files.
This commit is contained in:
@ -6,7 +6,7 @@
|
||||
*
|
||||
*
|
||||
* IDENTIFICATION
|
||||
* $Header: /cvsroot/pgsql/src/backend/utils/adt/datum.c,v 1.5 1997/08/19 21:34:33 momjian Exp $
|
||||
* $Header: /cvsroot/pgsql/src/backend/utils/adt/datum.c,v 1.6 1997/09/07 04:50:09 momjian Exp $
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
@ -49,39 +49,51 @@
|
||||
Size
|
||||
datumGetSize(Datum value, Oid type, bool byVal, Size len)
|
||||
{
|
||||
|
||||
struct varlena *s;
|
||||
Size size = 0;
|
||||
|
||||
if (byVal) {
|
||||
if (len <= sizeof(Datum)) {
|
||||
size = len;
|
||||
} else {
|
||||
elog(WARN,
|
||||
"datumGetSize: Error: type=%ld, byVaL with len=%d",
|
||||
(long) type, len);
|
||||
|
||||
struct varlena *s;
|
||||
Size size = 0;
|
||||
|
||||
if (byVal)
|
||||
{
|
||||
if (len <= sizeof(Datum))
|
||||
{
|
||||
size = len;
|
||||
}
|
||||
else
|
||||
{
|
||||
elog(WARN,
|
||||
"datumGetSize: Error: type=%ld, byVaL with len=%d",
|
||||
(long) type, len);
|
||||
}
|
||||
}
|
||||
} else { /* not byValue */
|
||||
if (len == -1) {
|
||||
/*
|
||||
* variable length type
|
||||
* Look at the varlena struct for its real length...
|
||||
*/
|
||||
s = (struct varlena *) DatumGetPointer(value);
|
||||
if (!PointerIsValid(s)) {
|
||||
elog(WARN,
|
||||
"datumGetSize: Invalid Datum Pointer");
|
||||
}
|
||||
size = (Size) VARSIZE(s);
|
||||
} else {
|
||||
/*
|
||||
* fixed length type
|
||||
*/
|
||||
size = len;
|
||||
else
|
||||
{ /* not byValue */
|
||||
if (len == -1)
|
||||
{
|
||||
|
||||
/*
|
||||
* variable length type Look at the varlena struct for its
|
||||
* real length...
|
||||
*/
|
||||
s = (struct varlena *) DatumGetPointer(value);
|
||||
if (!PointerIsValid(s))
|
||||
{
|
||||
elog(WARN,
|
||||
"datumGetSize: Invalid Datum Pointer");
|
||||
}
|
||||
size = (Size) VARSIZE(s);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
/*
|
||||
* fixed length type
|
||||
*/
|
||||
size = len;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return(size);
|
||||
|
||||
return (size);
|
||||
}
|
||||
|
||||
/*-------------------------------------------------------------------------
|
||||
@ -97,29 +109,35 @@ datumGetSize(Datum value, Oid type, bool byVal, Size len)
|
||||
Datum
|
||||
datumCopy(Datum value, Oid type, bool byVal, Size len)
|
||||
{
|
||||
|
||||
Size realSize;
|
||||
Datum res;
|
||||
char *s;
|
||||
|
||||
|
||||
if (byVal) {
|
||||
res = value;
|
||||
} else {
|
||||
if (value == 0) return((Datum)NULL);
|
||||
realSize = datumGetSize(value, type, byVal, len);
|
||||
/*
|
||||
* the value is a pointer. Allocate enough space
|
||||
* and copy the pointed data.
|
||||
*/
|
||||
s = (char *) palloc(realSize);
|
||||
if (s == NULL) {
|
||||
elog(WARN,"datumCopy: out of memory\n");
|
||||
|
||||
Size realSize;
|
||||
Datum res;
|
||||
char *s;
|
||||
|
||||
|
||||
if (byVal)
|
||||
{
|
||||
res = value;
|
||||
}
|
||||
memmove(s, DatumGetPointer(value), realSize);
|
||||
res = (Datum)s;
|
||||
}
|
||||
return(res);
|
||||
else
|
||||
{
|
||||
if (value == 0)
|
||||
return ((Datum) NULL);
|
||||
realSize = datumGetSize(value, type, byVal, len);
|
||||
|
||||
/*
|
||||
* the value is a pointer. Allocate enough space and copy the
|
||||
* pointed data.
|
||||
*/
|
||||
s = (char *) palloc(realSize);
|
||||
if (s == NULL)
|
||||
{
|
||||
elog(WARN, "datumCopy: out of memory\n");
|
||||
}
|
||||
memmove(s, DatumGetPointer(value), realSize);
|
||||
res = (Datum) s;
|
||||
}
|
||||
return (res);
|
||||
}
|
||||
|
||||
/*-------------------------------------------------------------------------
|
||||
@ -135,20 +153,23 @@ datumCopy(Datum value, Oid type, bool byVal, Size len)
|
||||
void
|
||||
datumFree(Datum value, Oid type, bool byVal, Size len)
|
||||
{
|
||||
|
||||
Size realSize;
|
||||
Pointer s;
|
||||
|
||||
realSize = datumGetSize(value, type, byVal, len);
|
||||
|
||||
if (!byVal) {
|
||||
/*
|
||||
* free the space palloced by "datumCopy()"
|
||||
*/
|
||||
s = DatumGetPointer(value);
|
||||
pfree(s);
|
||||
}
|
||||
|
||||
Size realSize;
|
||||
Pointer s;
|
||||
|
||||
realSize = datumGetSize(value, type, byVal, len);
|
||||
|
||||
if (!byVal)
|
||||
{
|
||||
|
||||
/*
|
||||
* free the space palloced by "datumCopy()"
|
||||
*/
|
||||
s = DatumGetPointer(value);
|
||||
pfree(s);
|
||||
}
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
/*-------------------------------------------------------------------------
|
||||
@ -167,36 +188,40 @@ datumFree(Datum value, Oid type, bool byVal, Size len)
|
||||
bool
|
||||
datumIsEqual(Datum value1, Datum value2, Oid type, bool byVal, Size len)
|
||||
{
|
||||
Size size1, size2;
|
||||
char *s1, *s2;
|
||||
|
||||
if (byVal) {
|
||||
/*
|
||||
* just compare the two datums.
|
||||
* NOTE: just comparing "len" bytes will not do the
|
||||
* work, because we do not know how these bytes
|
||||
* are aligned inside the "Datum".
|
||||
*/
|
||||
if (value1 == value2)
|
||||
return(true);
|
||||
else
|
||||
return(false);
|
||||
} else {
|
||||
/*
|
||||
* byVal = false
|
||||
* Compare the bytes pointed by the pointers stored in the
|
||||
* datums.
|
||||
*/
|
||||
size1 = datumGetSize(value1, type, byVal, len);
|
||||
size2 = datumGetSize(value2, type, byVal, len);
|
||||
if (size1 != size2)
|
||||
return(false);
|
||||
s1 = (char *) DatumGetPointer(value1);
|
||||
s2 = (char *) DatumGetPointer(value2);
|
||||
if (!memcmp(s1, s2, size1))
|
||||
return(true);
|
||||
else
|
||||
return(false);
|
||||
}
|
||||
}
|
||||
Size size1,
|
||||
size2;
|
||||
char *s1,
|
||||
*s2;
|
||||
|
||||
if (byVal)
|
||||
{
|
||||
|
||||
/*
|
||||
* just compare the two datums. NOTE: just comparing "len" bytes
|
||||
* will not do the work, because we do not know how these bytes
|
||||
* are aligned inside the "Datum".
|
||||
*/
|
||||
if (value1 == value2)
|
||||
return (true);
|
||||
else
|
||||
return (false);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
/*
|
||||
* byVal = false Compare the bytes pointed by the pointers stored
|
||||
* in the datums.
|
||||
*/
|
||||
size1 = datumGetSize(value1, type, byVal, len);
|
||||
size2 = datumGetSize(value2, type, byVal, len);
|
||||
if (size1 != size2)
|
||||
return (false);
|
||||
s1 = (char *) DatumGetPointer(value1);
|
||||
s2 = (char *) DatumGetPointer(value2);
|
||||
if (!memcmp(s1, s2, size1))
|
||||
return (true);
|
||||
else
|
||||
return (false);
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user