summaryrefslogtreecommitdiff
path: root/src/backend
diff options
context:
space:
mode:
authorTom Lane2000-08-03 16:35:08 +0000
committerTom Lane2000-08-03 16:35:08 +0000
commitc298d74d4957845bb03a67092c30b53e5e0d01c2 (patch)
tree4dca901e87c14a249de21374da867db1059b8462 /src/backend
parent1bd3a8f58bb8147628a85643b0246051a6e4e5ee (diff)
More functions updated to new fmgr style --- money, name, tid datatypes.
We're reaching the mopup stage here (good thing too, this is getting tedious).
Diffstat (limited to 'src/backend')
-rw-r--r--src/backend/access/heap/tuptoaster.c8
-rw-r--r--src/backend/catalog/heap.c13
-rw-r--r--src/backend/commands/command.c4
-rw-r--r--src/backend/commands/dbcommands.c5
-rw-r--r--src/backend/commands/indexcmds.c5
-rw-r--r--src/backend/commands/sequence.c6
-rw-r--r--src/backend/commands/trigger.c24
-rw-r--r--src/backend/commands/user.c22
-rw-r--r--src/backend/optimizer/path/indxpath.c4
-rw-r--r--src/backend/parser/analyze.c5
-rw-r--r--src/backend/utils/adt/cash.c184
-rw-r--r--src/backend/utils/adt/name.c98
-rw-r--r--src/backend/utils/adt/selfuncs.c7
-rw-r--r--src/backend/utils/adt/tid.c86
-rw-r--r--src/backend/utils/init/miscinit.c10
15 files changed, 237 insertions, 244 deletions
diff --git a/src/backend/access/heap/tuptoaster.c b/src/backend/access/heap/tuptoaster.c
index bab11857303..61076444a2d 100644
--- a/src/backend/access/heap/tuptoaster.c
+++ b/src/backend/access/heap/tuptoaster.c
@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/access/heap/tuptoaster.c,v 1.10 2000/07/31 22:39:17 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/access/heap/tuptoaster.c,v 1.11 2000/08/03 16:33:40 tgl Exp $
*
*
* INTERFACE ROUTINES
@@ -785,12 +785,14 @@ toast_save_datum(Relation rel, Oid mainoid, int16 attno, Datum value)
toastrel = heap_open(rel->rd_rel->reltoastrelid, RowExclusiveLock);
if (toastrel == NULL)
elog(ERROR, "Failed to open secondary relation of %s",
- nameout(&(rel->rd_rel->relname)));
+ DatumGetCString(DirectFunctionCall1(nameout,
+ NameGetDatum(&(rel->rd_rel->relname)))));
toasttupDesc = toastrel->rd_att;
toastidx = index_open(rel->rd_rel->reltoastidxid);
if (toastidx == NULL)
elog(ERROR, "Failed to open index for secondary relation of %s",
- nameout(&(rel->rd_rel->relname)));
+ DatumGetCString(DirectFunctionCall1(nameout,
+ NameGetDatum(&(rel->rd_rel->relname)))));
/* ----------
* Split up the item into chunks
diff --git a/src/backend/catalog/heap.c b/src/backend/catalog/heap.c
index b5334de15ed..6c8c95563f2 100644
--- a/src/backend/catalog/heap.c
+++ b/src/backend/catalog/heap.c
@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/catalog/heap.c,v 1.140 2000/07/14 22:17:40 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/catalog/heap.c,v 1.141 2000/08/03 16:33:52 tgl Exp $
*
*
* INTERFACE ROUTINES
@@ -409,8 +409,8 @@ CheckAttributeNames(TupleDesc tupdesc)
{
for (j = 0; j < (int) (sizeof(HeapAtt) / sizeof(HeapAtt[0])); j++)
{
- if (nameeq(&(HeapAtt[j]->attname),
- &(tupdesc->attrs[i]->attname)))
+ if (strcmp(NameStr(HeapAtt[j]->attname),
+ NameStr(tupdesc->attrs[i]->attname)) == 0)
{
elog(ERROR, "Attribute '%s' has a name conflict"
"\n\tName matches an existing system attribute",
@@ -433,8 +433,8 @@ CheckAttributeNames(TupleDesc tupdesc)
{
for (j = 0; j < i; j++)
{
- if (nameeq(&(tupdesc->attrs[j]->attname),
- &(tupdesc->attrs[i]->attname)))
+ if (strcmp(NameStr(tupdesc->attrs[j]->attname),
+ NameStr(tupdesc->attrs[i]->attname)) == 0)
{
elog(ERROR, "Attribute '%s' is repeated",
NameStr(tupdesc->attrs[j]->attname));
@@ -1633,7 +1633,8 @@ StoreRelCheck(Relation rel, char *ccname, char *ccbin)
ccsrc = deparse_expression(expr, lcons(lcons(rte, NIL), NIL), false);
values[Anum_pg_relcheck_rcrelid - 1] = RelationGetRelid(rel);
- values[Anum_pg_relcheck_rcname - 1] = PointerGetDatum(namein(ccname));
+ values[Anum_pg_relcheck_rcname - 1] = DirectFunctionCall1(namein,
+ CStringGetDatum(ccname));
values[Anum_pg_relcheck_rcbin - 1] = DirectFunctionCall1(textin,
CStringGetDatum(ccbin));
values[Anum_pg_relcheck_rcsrc - 1] = DirectFunctionCall1(textin,
diff --git a/src/backend/commands/command.c b/src/backend/commands/command.c
index 7d21acc16ba..3deea360e0a 100644
--- a/src/backend/commands/command.c
+++ b/src/backend/commands/command.c
@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/commands/Attic/command.c,v 1.91 2000/07/18 03:57:33 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/commands/Attic/command.c,v 1.92 2000/08/03 16:34:01 tgl Exp $
*
* NOTES
* The PerformAddAttribute() code, like most of the relation
@@ -565,7 +565,7 @@ AlterTableAlterColumn(const char *relationName,
*/
tuple = SearchSysCacheTuple(ATTNAME,
ObjectIdGetDatum(myrelid),
- NameGetDatum(namein((char *) colName)),
+ PointerGetDatum(colName),
0, 0);
if (!HeapTupleIsValid(tuple))
diff --git a/src/backend/commands/dbcommands.c b/src/backend/commands/dbcommands.c
index bda64842c49..1c2df9c5eb8 100644
--- a/src/backend/commands/dbcommands.c
+++ b/src/backend/commands/dbcommands.c
@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/commands/dbcommands.c,v 1.58 2000/07/05 23:11:11 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/commands/dbcommands.c,v 1.59 2000/08/03 16:34:01 tgl Exp $
*
*-------------------------------------------------------------------------
*/
@@ -98,7 +98,8 @@ createdb(const char *dbname, const char *dbpath, int encoding)
pg_database_dsc = RelationGetDescr(pg_database_rel);
/* Form tuple */
- new_record[Anum_pg_database_datname - 1] = NameGetDatum(namein(dbname));
+ new_record[Anum_pg_database_datname - 1] = DirectFunctionCall1(namein,
+ CStringGetDatum(dbname));
new_record[Anum_pg_database_datdba - 1] = Int32GetDatum(user_id);
new_record[Anum_pg_database_encoding - 1] = Int32GetDatum(encoding);
new_record[Anum_pg_database_datpath - 1] = DirectFunctionCall1(textin,
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 6ede4f51c12..85de47a6766 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/commands/indexcmds.c,v 1.35 2000/07/14 22:17:42 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/commands/indexcmds.c,v 1.36 2000/08/03 16:34:01 tgl Exp $
*
*-------------------------------------------------------------------------
*/
@@ -576,7 +576,8 @@ GetDefaultOpClass(Oid atttypid)
if (!HeapTupleIsValid(tuple))
return NULL;
- return nameout(&((Form_pg_opclass) GETSTRUCT(tuple))->opcname);
+ return DatumGetCString(DirectFunctionCall1(nameout,
+ NameGetDatum(&((Form_pg_opclass) GETSTRUCT(tuple))->opcname)));
}
/*
diff --git a/src/backend/commands/sequence.c b/src/backend/commands/sequence.c
index 80fca6a38a1..f528abed752 100644
--- a/src/backend/commands/sequence.c
+++ b/src/backend/commands/sequence.c
@@ -201,7 +201,7 @@ nextval(PG_FUNCTION_ARGS)
rescnt = 0;
#ifndef NO_SECURITY
- if (pg_aclcheck(seqname, getpgusername(), ACL_WR) != ACLCHECK_OK)
+ if (pg_aclcheck(seqname, GetPgUserName(), ACL_WR) != ACLCHECK_OK)
elog(ERROR, "%s.nextval: you don't have permissions to set sequence %s",
seqname, seqname);
#endif
@@ -298,7 +298,7 @@ currval(PG_FUNCTION_ARGS)
int32 result;
#ifndef NO_SECURITY
- if (pg_aclcheck(seqname, getpgusername(), ACL_RD) != ACLCHECK_OK)
+ if (pg_aclcheck(seqname, GetPgUserName(), ACL_RD) != ACLCHECK_OK)
elog(ERROR, "%s.currval: you don't have permissions to read sequence %s",
seqname, seqname);
#endif
@@ -328,7 +328,7 @@ setval(PG_FUNCTION_ARGS)
Form_pg_sequence seq;
#ifndef NO_SECURITY
- if (pg_aclcheck(seqname, getpgusername(), ACL_WR) != ACLCHECK_OK)
+ if (pg_aclcheck(seqname, GetPgUserName(), ACL_WR) != ACLCHECK_OK)
elog(ERROR, "%s.setval: you don't have permissions to set sequence %s",
seqname, seqname);
#endif
diff --git a/src/backend/commands/trigger.c b/src/backend/commands/trigger.c
index 8abd930b1b9..17e61a379fb 100644
--- a/src/backend/commands/trigger.c
+++ b/src/backend/commands/trigger.c
@@ -7,7 +7,7 @@
* Portions Copyright (c) 1994, Regents of the University of California
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/commands/trigger.c,v 1.73 2000/07/29 03:26:40 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/commands/trigger.c,v 1.74 2000/08/03 16:34:01 tgl Exp $
*
*-------------------------------------------------------------------------
*/
@@ -195,7 +195,8 @@ CreateTrigger(CreateTrigStmt *stmt)
MemSet(nulls, ' ', Natts_pg_trigger * sizeof(char));
values[Anum_pg_trigger_tgrelid - 1] = ObjectIdGetDatum(RelationGetRelid(rel));
- values[Anum_pg_trigger_tgname - 1] = NameGetDatum(namein(stmt->trigname));
+ values[Anum_pg_trigger_tgname - 1] = DirectFunctionCall1(namein,
+ CStringGetDatum(stmt->trigname));
values[Anum_pg_trigger_tgfoid - 1] = ObjectIdGetDatum(funcoid);
values[Anum_pg_trigger_tgtype - 1] = Int16GetDatum(tgtype);
values[Anum_pg_trigger_tgenabled - 1] = BoolGetDatum(true);
@@ -441,7 +442,8 @@ RelationRemoveTriggers(Relation rel)
refrel = heap_open(pg_trigger->tgrelid, NoLock);
stmt.relname = pstrdup(RelationGetRelationName(refrel));
- stmt.trigname = nameout(&pg_trigger->tgname);
+ stmt.trigname = DatumGetCString(DirectFunctionCall1(nameout,
+ NameGetDatum(&pg_trigger->tgname)));
heap_close(refrel, NoLock);
@@ -552,7 +554,8 @@ RelationBuildTriggers(Relation relation)
build->tgoid = htup->t_data->t_oid;
build->tgname = MemoryContextStrdup(CacheMemoryContext,
- nameout(&pg_trigger->tgname));
+ DatumGetCString(DirectFunctionCall1(nameout,
+ NameGetDatum(&pg_trigger->tgname))));
build->tgfoid = pg_trigger->tgfoid;
build->tgfunc.fn_oid = InvalidOid; /* mark FmgrInfo as uninitialized */
build->tgtype = pg_trigger->tgtype;
@@ -1217,8 +1220,8 @@ deferredTriggerGetPreviousEvent(Oid relid, ItemPointer ctid)
}
elog(ERROR,
- "deferredTriggerGetPreviousEvent(): event for tuple %s not found",
- tidout(ctid));
+ "deferredTriggerGetPreviousEvent(): event for tuple %s not found",
+ DatumGetCString(DirectFunctionCall1(tidout, PointerGetDatum(ctid))));
return NULL;
}
@@ -2020,13 +2023,15 @@ DeferredTriggerSaveEvent(Relation rel, int event,
TRIGGER_DEFERRED_ROW_INSERTED)
elog(ERROR, "triggered data change violation "
"on relation \"%s\"",
- nameout(&(rel->rd_rel->relname)));
+ DatumGetCString(DirectFunctionCall1(nameout,
+ NameGetDatum(&(rel->rd_rel->relname)))));
if (prev_event->dte_item[i].dti_state &
TRIGGER_DEFERRED_KEY_CHANGED)
elog(ERROR, "triggered data change violation "
"on relation \"%s\"",
- nameout(&(rel->rd_rel->relname)));
+ DatumGetCString(DirectFunctionCall1(nameout,
+ NameGetDatum(&(rel->rd_rel->relname)))));
}
/* ----------
@@ -2060,7 +2065,8 @@ DeferredTriggerSaveEvent(Relation rel, int event,
if (prev_event->dte_event & TRIGGER_DEFERRED_KEY_CHANGED)
elog(ERROR, "triggered data change violation "
"on relation \"%s\"",
- nameout(&(rel->rd_rel->relname)));
+ DatumGetCString(DirectFunctionCall1(nameout,
+ NameGetDatum(&(rel->rd_rel->relname)))));
break;
}
diff --git a/src/backend/commands/user.c b/src/backend/commands/user.c
index 82135e99946..2164c516f9b 100644
--- a/src/backend/commands/user.c
+++ b/src/backend/commands/user.c
@@ -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.65 2000/07/22 04:16:13 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/commands/user.c,v 1.66 2000/08/03 16:34:01 tgl Exp $
*
*-------------------------------------------------------------------------
*/
@@ -121,7 +121,8 @@ write_password_file(Relation rel)
"%s"
CRYPT_PWD_FILE_SEPSTR
"%s\n",
- nameout(DatumGetName(datum_n)),
+ DatumGetCString(DirectFunctionCall1(nameout,
+ NameGetDatum(DatumGetName(datum_n)))),
null_p ? "" :
DatumGetCString(DirectFunctionCall1(textout, datum_p)),
null_v ? "\\N" :
@@ -246,8 +247,8 @@ CreateUser(CreateUserStmt *stmt)
/*
* Build a tuple to insert
*/
- new_record[Anum_pg_shadow_usename - 1] = PointerGetDatum(namein(stmt->user)); /* this truncated
- * properly */
+ new_record[Anum_pg_shadow_usename - 1] = DirectFunctionCall1(namein,
+ CStringGetDatum(stmt->user));
new_record[Anum_pg_shadow_usesysid - 1] = Int32GetDatum(havesysid ? stmt->sysid : max_id + 1);
AssertState(BoolIsValid(stmt->createdb));
@@ -374,7 +375,8 @@ AlterUser(AlterUserStmt *stmt)
/*
* Build a tuple to update, perusing the information just obtained
*/
- new_record[Anum_pg_shadow_usename - 1] = PointerGetDatum(namein(stmt->user));
+ new_record[Anum_pg_shadow_usename - 1] = DirectFunctionCall1(namein,
+ CStringGetDatum(stmt->user));
new_record_nulls[Anum_pg_shadow_usename - 1] = ' ';
/* sysid - leave as is */
@@ -556,7 +558,9 @@ DropUser(DropUserStmt *stmt)
datum = heap_getattr(tmp_tuple, Anum_pg_database_datname, pg_dsc, &null);
heap_close(pg_shadow_rel, AccessExclusiveLock);
elog(ERROR, "DROP USER: user \"%s\" owns database \"%s\", cannot be removed%s",
- user, nameout(DatumGetName(datum)),
+ user,
+ DatumGetCString(DirectFunctionCall1(nameout,
+ NameGetDatum(DatumGetName(datum)))),
(length(stmt->users) > 1) ? " (no users removed)" : ""
);
}
@@ -587,11 +591,9 @@ DropUser(DropUserStmt *stmt)
{
AlterGroupStmt ags;
+ /* the group name from which to try to drop the user: */
datum = heap_getattr(tmp_tuple, Anum_pg_group_groname, pg_dsc, &null);
-
- ags.name = nameout(DatumGetName(datum)); /* the group name from
- * which to try to drop
- * the user */
+ ags.name = DatumGetCString(DirectFunctionCall1(nameout, datum));
ags.action = -1;
ags.listUsers = lcons((void *) makeInteger(usesysid), NIL);
AlterGroup(&ags, "DROP USER");
diff --git a/src/backend/optimizer/path/indxpath.c b/src/backend/optimizer/path/indxpath.c
index a675963005d..44305558abb 100644
--- a/src/backend/optimizer/path/indxpath.c
+++ b/src/backend/optimizer/path/indxpath.c
@@ -9,7 +9,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/optimizer/path/indxpath.c,v 1.90 2000/07/27 23:15:56 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/optimizer/path/indxpath.c,v 1.91 2000/08/03 16:34:12 tgl Exp $
*
*-------------------------------------------------------------------------
*/
@@ -2006,7 +2006,7 @@ string_to_datum(const char *str, Oid datatype)
* varchar constants too...
*/
if (datatype == NAMEOID)
- return PointerGetDatum(namein((char *) str));
+ return DirectFunctionCall1(namein, CStringGetDatum(str));
else
return DirectFunctionCall1(textin, CStringGetDatum(str));
}
diff --git a/src/backend/parser/analyze.c b/src/backend/parser/analyze.c
index b5305edb54b..5824c300d7c 100644
--- a/src/backend/parser/analyze.c
+++ b/src/backend/parser/analyze.c
@@ -6,7 +6,7 @@
* Portions Copyright (c) 1996-2000, PostgreSQL, Inc
* Portions Copyright (c) 1994, Regents of the University of California
*
- * $Id: analyze.c,v 1.151 2000/07/15 00:01:41 tgl Exp $
+ * $Id: analyze.c,v 1.152 2000/08/03 16:35:08 tgl Exp $
*
*-------------------------------------------------------------------------
*/
@@ -2078,7 +2078,8 @@ transformFkeyGetPrimaryKey(FkConstraint *fkconstraint)
int pkattno = indexStruct->indkey[i];
Ident *pkattr = makeNode(Ident);
- pkattr->name = nameout(&(pkrel_attrs[pkattno - 1]->attname));
+ pkattr->name = DatumGetCString(DirectFunctionCall1(nameout,
+ NameGetDatum(&(pkrel_attrs[pkattno - 1]->attname))));
pkattr->indirection = NIL;
pkattr->isRel = false;
diff --git a/src/backend/utils/adt/cash.c b/src/backend/utils/adt/cash.c
index e1a68940a84..d924bf3fe09 100644
--- a/src/backend/utils/adt/cash.c
+++ b/src/backend/utils/adt/cash.c
@@ -9,7 +9,7 @@
* workings can be found in the book "Software Solutions in C" by
* Dale Schumacher, Academic Press, ISBN: 0-12-632360-7.
*
- * $Header: /cvsroot/pgsql/src/backend/utils/adt/cash.c,v 1.44 2000/08/01 18:29:35 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/utils/adt/cash.c,v 1.45 2000/08/03 16:34:22 tgl Exp $
*/
#include <limits.h>
@@ -66,11 +66,11 @@ CashGetDatum(Cash value)
* XXX UNHACK Allow the currency symbol to be multi-byte.
* - thomas 1998-03-01
*/
-Cash *
-cash_in(const char *str)
+Datum
+cash_in(PG_FUNCTION_ARGS)
{
- Cash *result;
-
+ char *str = PG_GETARG_CSTRING(0);
+ Cash result;
Cash value = 0;
Cash dec = 0;
Cash sgn = 1;
@@ -200,17 +200,14 @@ cash_in(const char *str)
if (*s != '\0')
elog(ERROR, "Bad money external representation %s", str);
- if (!PointerIsValid(result = palloc(sizeof(Cash))))
- elog(ERROR, "Memory allocation failed, can't input cash '%s'", str);
-
- *result = (value * sgn);
+ result = (value * sgn);
#ifdef CASHDEBUG
- printf("cashin- result is %d\n", *result);
+ printf("cashin- result is %d\n", result);
#endif
- return result;
-} /* cash_in() */
+ PG_RETURN_CASH(result);
+}
/* cash_out()
@@ -218,10 +215,10 @@ cash_in(const char *str)
* XXX HACK This code appears to assume US conventions for
* positive-valued amounts. - tgl 97/04/14
*/
-const char *
-cash_out(Cash *in_value)
+Datum
+cash_out(PG_FUNCTION_ARGS)
{
- Cash value = *in_value;
+ Cash value = PG_GETARG_CASH(0);
char *result;
char buf[CASH_BUFSZ];
int minus = 0;
@@ -323,103 +320,95 @@ cash_out(Cash *in_value)
strcpy(result, buf + count);
}
- return result;
-} /* cash_out() */
+ PG_RETURN_CSTRING(result);
+}
-bool
-cash_eq(Cash *c1, Cash *c2)
+Datum
+cash_eq(PG_FUNCTION_ARGS)
{
- if (!PointerIsValid(c1) || !PointerIsValid(c2))
- return FALSE;
+ Cash c1 = PG_GETARG_CASH(0);
+ Cash c2 = PG_GETARG_CASH(1);
- return *c1 == *c2;
-} /* cash_eq() */
+ PG_RETURN_BOOL(c1 == c2);
+}
-bool
-cash_ne(Cash *c1, Cash *c2)
+Datum
+cash_ne(PG_FUNCTION_ARGS)
{
- if (!PointerIsValid(c1) || !PointerIsValid(c2))
- return FALSE;
+ Cash c1 = PG_GETARG_CASH(0);
+ Cash c2 = PG_GETARG_CASH(1);
- return *c1 != *c2;
-} /* cash_ne() */
+ PG_RETURN_BOOL(c1 != c2);
+}
-bool
-cash_lt(Cash *c1, Cash *c2)
+Datum
+cash_lt(PG_FUNCTION_ARGS)
{
- if (!PointerIsValid(c1) || !PointerIsValid(c2))
- return FALSE;
+ Cash c1 = PG_GETARG_CASH(0);
+ Cash c2 = PG_GETARG_CASH(1);
- return *c1 < *c2;
-} /* cash_lt() */
+ PG_RETURN_BOOL(c1 < c2);
+}
-bool
-cash_le(Cash *c1, Cash *c2)
+Datum
+cash_le(PG_FUNCTION_ARGS)
{
- if (!PointerIsValid(c1) || !PointerIsValid(c2))
- return FALSE;
+ Cash c1 = PG_GETARG_CASH(0);
+ Cash c2 = PG_GETARG_CASH(1);
- return *c1 <= *c2;
-} /* cash_le() */
+ PG_RETURN_BOOL(c1 <= c2);
+}
-bool
-cash_gt(Cash *c1, Cash *c2)
+Datum
+cash_gt(PG_FUNCTION_ARGS)
{
- if (!PointerIsValid(c1) || !PointerIsValid(c2))
- return FALSE;
+ Cash c1 = PG_GETARG_CASH(0);
+ Cash c2 = PG_GETARG_CASH(1);
- return *c1 > *c2;
-} /* cash_gt() */
+ PG_RETURN_BOOL(c1 > c2);
+}
-bool
-cash_ge(Cash *c1, Cash *c2)
+Datum
+cash_ge(PG_FUNCTION_ARGS)
{
- if (!PointerIsValid(c1) || !PointerIsValid(c2))
- return FALSE;
+ Cash c1 = PG_GETARG_CASH(0);
+ Cash c2 = PG_GETARG_CASH(1);
- return *c1 >= *c2;
-} /* cash_ge() */
+ PG_RETURN_BOOL(c1 >= c2);
+}
/* cash_pl()
* Add two cash values.
*/
-Cash *
-cash_pl(Cash *c1, Cash *c2)
+Datum
+cash_pl(PG_FUNCTION_ARGS)
{
- Cash *result;
-
- if (!PointerIsValid(c1) || !PointerIsValid(c2))
- return NULL;
-
- if (!PointerIsValid(result = palloc(sizeof(Cash))))
- elog(ERROR, "Memory allocation failed, can't add cash");
+ Cash c1 = PG_GETARG_CASH(0);
+ Cash c2 = PG_GETARG_CASH(1);
+ Cash result;
- *result = (*c1 + *c2);
+ result = c1 + c2;
- return result;
-} /* cash_pl() */
+ PG_RETURN_CASH(result);
+}
/* cash_mi()
* Subtract two cash values.
*/
-Cash *
-cash_mi(Cash *c1, Cash *c2)
+Datum
+cash_mi(PG_FUNCTION_ARGS)
{
- Cash *result;
-
- if (!PointerIsValid(c1) || !PointerIsValid(c2))
- return NULL;
-
- if (!PointerIsValid(result = palloc(sizeof(Cash))))
- elog(ERROR, "Memory allocation failed, can't subtract cash");
+ Cash c1 = PG_GETARG_CASH(0);
+ Cash c2 = PG_GETARG_CASH(1);
+ Cash result;
- *result = (*c1 - *c2);
+ result = c1 - c2;
- return result;
-} /* cash_mi() */
+ PG_RETURN_CASH(result);
+}
/* cash_mul_flt8()
@@ -626,41 +615,32 @@ cash_div_int2(PG_FUNCTION_ARGS)
/* cashlarger()
* Return larger of two cash values.
*/
-Cash *
-cashlarger(Cash *c1, Cash *c2)
+Datum
+cashlarger(PG_FUNCTION_ARGS)
{
- Cash *result;
-
- if (!PointerIsValid(c1) || !PointerIsValid(c2))
- return NULL;
-
- if (!PointerIsValid(result = palloc(sizeof(Cash))))
- elog(ERROR, "Memory allocation failed, can't return larger cash");
-
- *result = ((*c1 > *c2) ? *c1 : *c2);
+ Cash c1 = PG_GETARG_CASH(0);
+ Cash c2 = PG_GETARG_CASH(1);
+ Cash result;
- return result;
-} /* cashlarger() */
+ result = (c1 > c2) ? c1 : c2;
+ PG_RETURN_CASH(result);
+}
/* cashsmaller()
* Return smaller of two cash values.
*/
-Cash *
-cashsmaller(Cash *c1, Cash *c2)
+Datum
+cashsmaller(PG_FUNCTION_ARGS)
{
- Cash *result;
-
- if (!PointerIsValid(c1) || !PointerIsValid(c2))
- return NULL;
-
- if (!PointerIsValid(result = palloc(sizeof(Cash))))
- elog(ERROR, "Memory allocation failed, can't return smaller cash");
+ Cash c1 = PG_GETARG_CASH(0);
+ Cash c2 = PG_GETARG_CASH(1);
+ Cash result;
- *result = ((*c1 < *c2) ? *c1 : *c2);
+ result = (c1 < c2) ? c1 : c2;
- return result;
-} /* cashsmaller() */
+ PG_RETURN_CASH(result);
+}
/* cash_words()
diff --git a/src/backend/utils/adt/name.c b/src/backend/utils/adt/name.c
index 630070ce3b3..3acf40e0d43 100644
--- a/src/backend/utils/adt/name.c
+++ b/src/backend/utils/adt/name.c
@@ -12,11 +12,13 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/utils/adt/name.c,v 1.28 2000/04/12 17:15:50 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/utils/adt/name.c,v 1.29 2000/08/03 16:34:22 tgl Exp $
*
*-------------------------------------------------------------------------
*/
#include "postgres.h"
+
+#include "miscadmin.h"
#include "utils/builtins.h"
/*****************************************************************************
@@ -31,14 +33,13 @@
* [Old] Currently if strlen(s) < NAMEDATALEN, the extra chars are nulls
* Now, always NULL terminated
*/
-NameData *
-namein(const char *s)
+Datum
+namein(PG_FUNCTION_ARGS)
{
+ char *s = PG_GETARG_CSTRING(0);
NameData *result;
int len;
- if (s == NULL)
- return NULL;
result = (NameData *) palloc(NAMEDATALEN);
/* always keep it null-padded */
StrNCpy(NameStr(*result), s, NAMEDATALEN);
@@ -48,19 +49,18 @@ namein(const char *s)
*(NameStr(*result) + len) = '\0';
len++;
}
- return result;
+ PG_RETURN_NAME(result);
}
/*
- * nameout - converts internal reprsentation to "..."
+ * nameout - converts internal representation to "..."
*/
-char *
-nameout(const NameData *s)
+Datum
+nameout(PG_FUNCTION_ARGS)
{
- if (s == NULL)
- return "-";
- else
- return pstrdup(NameStr(*s));
+ Name s = PG_GETARG_NAME(0);
+
+ PG_RETURN_CSTRING(pstrdup(NameStr(*s)));
}
@@ -82,57 +82,67 @@ nameout(const NameData *s)
* namege - returns 1 iff a <= b
*
*/
-bool
-nameeq(const NameData *arg1, const NameData *arg2)
+Datum
+nameeq(PG_FUNCTION_ARGS)
{
- if (!arg1 || !arg2)
- return 0;
- else
- return (bool) (strncmp(NameStr(*arg1), NameStr(*arg2), NAMEDATALEN) == 0);
+ Name arg1 = PG_GETARG_NAME(0);
+ Name arg2 = PG_GETARG_NAME(1);
+
+ PG_RETURN_BOOL(strncmp(NameStr(*arg1), NameStr(*arg2), NAMEDATALEN) == 0);
}
-bool
-namene(const NameData *arg1, const NameData *arg2)
+Datum
+namene(PG_FUNCTION_ARGS)
{
- if (arg1 == NULL || arg2 == NULL)
- return (bool) 0;
- return (bool) (strncmp(NameStr(*arg1), NameStr(*arg2), NAMEDATALEN) != 0);
+ Name arg1 = PG_GETARG_NAME(0);
+ Name arg2 = PG_GETARG_NAME(1);
+
+ PG_RETURN_BOOL(strncmp(NameStr(*arg1), NameStr(*arg2), NAMEDATALEN) != 0);
}
-bool
-namelt(const NameData *arg1, const NameData *arg2)
+Datum
+namelt(PG_FUNCTION_ARGS)
{
- if (arg1 == NULL || arg2 == NULL)
- return (bool) 0;
- return (bool) (strncmp(NameStr(*arg1), NameStr(*arg2), NAMEDATALEN) < 0);
+ Name arg1 = PG_GETARG_NAME(0);
+ Name arg2 = PG_GETARG_NAME(1);
+
+ PG_RETURN_BOOL(strncmp(NameStr(*arg1), NameStr(*arg2), NAMEDATALEN) < 0);
}
-bool
-namele(const NameData *arg1, const NameData *arg2)
+Datum
+namele(PG_FUNCTION_ARGS)
{
- if (arg1 == NULL || arg2 == NULL)
- return (bool) 0;
- return (bool) (strncmp(NameStr(*arg1), NameStr(*arg2), NAMEDATALEN) <= 0);
+ Name arg1 = PG_GETARG_NAME(0);
+ Name arg2 = PG_GETARG_NAME(1);
+
+ PG_RETURN_BOOL(strncmp(NameStr(*arg1), NameStr(*arg2), NAMEDATALEN) <= 0);
}
-bool
-namegt(const NameData *arg1, const NameData *arg2)
+Datum
+namegt(PG_FUNCTION_ARGS)
{
- if (arg1 == NULL || arg2 == NULL)
- return (bool) 0;
+ Name arg1 = PG_GETARG_NAME(0);
+ Name arg2 = PG_GETARG_NAME(1);
- return (bool) (strncmp(NameStr(*arg1), NameStr(*arg2), NAMEDATALEN) > 0);
+ PG_RETURN_BOOL(strncmp(NameStr(*arg1), NameStr(*arg2), NAMEDATALEN) > 0);
}
-bool
-namege(const NameData *arg1, const NameData *arg2)
+Datum
+namege(PG_FUNCTION_ARGS)
{
- if (arg1 == NULL || arg2 == NULL)
- return (bool) 0;
+ Name arg1 = PG_GETARG_NAME(0);
+ Name arg2 = PG_GETARG_NAME(1);
- return (bool) (strncmp(NameStr(*arg1), NameStr(*arg2), NAMEDATALEN) >= 0);
+ PG_RETURN_BOOL(strncmp(NameStr(*arg1), NameStr(*arg2), NAMEDATALEN) >= 0);
}
+/* SQL-function interface to GetPgUserName() */
+Datum
+getpgusername(PG_FUNCTION_ARGS)
+{
+ PG_RETURN_DATUM(DirectFunctionCall1(namein,
+ CStringGetDatum(GetPgUserName())));
+}
/* (see char.c for comparison/operation routines) */
diff --git a/src/backend/utils/adt/selfuncs.c b/src/backend/utils/adt/selfuncs.c
index 16b7964392e..e31860c4d35 100644
--- a/src/backend/utils/adt/selfuncs.c
+++ b/src/backend/utils/adt/selfuncs.c
@@ -15,7 +15,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/utils/adt/selfuncs.c,v 1.77 2000/08/03 00:58:22 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/utils/adt/selfuncs.c,v 1.78 2000/08/03 16:34:22 tgl Exp $
*
*-------------------------------------------------------------------------
*/
@@ -1889,7 +1889,8 @@ string_lessthan(const char *str1, const char *str2, Oid datatype)
break;
case NAMEOID:
- result = namelt((NameData *) datum1, (NameData *) datum2);
+ result = DatumGetBool(DirectFunctionCall2(namelt,
+ datum1, datum2));
break;
default:
@@ -1933,7 +1934,7 @@ string_to_datum(const char *str, Oid datatype)
* varchar constants too...
*/
if (datatype == NAMEOID)
- return PointerGetDatum(namein((char *) str));
+ return DirectFunctionCall1(namein, CStringGetDatum(str));
else
return DirectFunctionCall1(textin, CStringGetDatum(str));
}
diff --git a/src/backend/utils/adt/tid.c b/src/backend/utils/adt/tid.c
index 7d0f4447c2d..0f7bd5f9159 100644
--- a/src/backend/utils/adt/tid.c
+++ b/src/backend/utils/adt/tid.c
@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/utils/adt/tid.c,v 1.21 2000/07/05 23:11:35 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/utils/adt/tid.c,v 1.22 2000/08/03 16:34:23 tgl Exp $
*
* NOTES
* input routine largely stolen from boxin().
@@ -21,6 +21,11 @@
#include "access/heapam.h"
#include "utils/builtins.h"
+#define DatumGetItemPointer(X) ((ItemPointer) DatumGetPointer(X))
+#define ItemPointerGetDatum(X) PointerGetDatum(X)
+#define PG_GETARG_ITEMPOINTER(n) DatumGetItemPointer(PG_GETARG_DATUM(n))
+#define PG_RETURN_ITEMPOINTER(x) return ItemPointerGetDatum(x)
+
#define LDELIM '('
#define RDELIM ')'
#define DELIM ','
@@ -30,30 +35,23 @@
* tidin
* ----------------------------------------------------------------
*/
-ItemPointer
-tidin(const char *str)
+Datum
+tidin(PG_FUNCTION_ARGS)
{
- const char *p,
+ char *str = PG_GETARG_CSTRING(0);
+ char *p,
*coord[NTIDARGS];
int i;
ItemPointer result;
-
BlockNumber blockNumber;
OffsetNumber offsetNumber;
- if (str == NULL)
- return NULL;
-
for (i = 0, p = str; *p && i < NTIDARGS && *p != RDELIM; p++)
if (*p == DELIM || (*p == LDELIM && !i))
coord[i++] = p + 1;
- /* if (i < NTIDARGS - 1) */
if (i < NTIDARGS)
- {
- elog(ERROR, "%s invalid tid format", str);
- return NULL;
- }
+ elog(ERROR, "invalid tid format: '%s'", str);
blockNumber = (BlockNumber) atoi(coord[0]);
offsetNumber = (OffsetNumber) atoi(coord[1]);
@@ -62,67 +60,61 @@ tidin(const char *str)
ItemPointerSet(result, blockNumber, offsetNumber);
- return result;
+ PG_RETURN_ITEMPOINTER(result);
}
/* ----------------------------------------------------------------
* tidout
* ----------------------------------------------------------------
*/
-char *
-tidout(ItemPointer itemPtr)
+Datum
+tidout(PG_FUNCTION_ARGS)
{
+ ItemPointer itemPtr = PG_GETARG_ITEMPOINTER(0);
+ BlockId blockId;
BlockNumber blockNumber;
OffsetNumber offsetNumber;
- BlockId blockId;
char buf[32];
- char *str;
static char *invalidTid = "()";
- if (!itemPtr || !ItemPointerIsValid(itemPtr))
- {
- str = palloc(strlen(invalidTid));
- strcpy(str, invalidTid);
- return str;
- }
+ if (!ItemPointerIsValid(itemPtr))
+ PG_RETURN_CSTRING(pstrdup(invalidTid));
blockId = &(itemPtr->ip_blkid);
blockNumber = BlockIdGetBlockNumber(blockId);
offsetNumber = itemPtr->ip_posid;
- sprintf(buf, "(%d,%d)", blockNumber, offsetNumber);
-
- str = (char *) palloc(strlen(buf) + 1);
- strcpy(str, buf);
+ sprintf(buf, "(%d,%d)", (int) blockNumber, (int) offsetNumber);
- return str;
+ PG_RETURN_CSTRING(pstrdup(buf));
}
/*****************************************************************************
* PUBLIC ROUTINES *
*****************************************************************************/
-bool
-tideq(ItemPointer arg1, ItemPointer arg2)
+Datum
+tideq(PG_FUNCTION_ARGS)
{
- if ((!arg1) || (!arg2))
- return false;
+ ItemPointer arg1 = PG_GETARG_ITEMPOINTER(0);
+ ItemPointer arg2 = PG_GETARG_ITEMPOINTER(1);
- return (BlockIdGetBlockNumber(&(arg1->ip_blkid)) ==
- BlockIdGetBlockNumber(&(arg2->ip_blkid)) &&
- arg1->ip_posid == arg2->ip_posid);
+ PG_RETURN_BOOL(BlockIdGetBlockNumber(&(arg1->ip_blkid)) ==
+ BlockIdGetBlockNumber(&(arg2->ip_blkid)) &&
+ arg1->ip_posid == arg2->ip_posid);
}
#ifdef NOT_USED
-bool
-tidne(ItemPointer arg1, ItemPointer arg2)
+Datum
+tidne(PG_FUNCTION_ARGS)
{
- if ((!arg1) || (!arg2))
- return false;
- return (BlockIdGetBlockNumber(&(arg1->ip_blkid)) !=
- BlockIdGetBlockNumber(&(arg2->ip_blkid)) ||
- arg1->ip_posid != arg2->ip_posid);
+ ItemPointer arg1 = PG_GETARG_ITEMPOINTER(0);
+ ItemPointer arg2 = PG_GETARG_ITEMPOINTER(1);
+
+ PG_RETURN_BOOL(BlockIdGetBlockNumber(&(arg1->ip_blkid)) !=
+ BlockIdGetBlockNumber(&(arg2->ip_blkid)) ||
+ arg1->ip_posid != arg2->ip_posid);
}
#endif
@@ -135,7 +127,7 @@ Datum
currtid_byreloid(PG_FUNCTION_ARGS)
{
Oid reloid = PG_GETARG_OID(0);
- ItemPointer tid = (ItemPointer) PG_GETARG_POINTER(1);
+ ItemPointer tid = PG_GETARG_ITEMPOINTER(1);
ItemPointer result,
ret;
Relation rel;
@@ -152,14 +144,14 @@ currtid_byreloid(PG_FUNCTION_ARGS)
else
elog(ERROR, "Relation %u not found", reloid);
- PG_RETURN_POINTER(result);
+ PG_RETURN_ITEMPOINTER(result);
}
Datum
currtid_byrelname(PG_FUNCTION_ARGS)
{
text *relname = PG_GETARG_TEXT_P(0);
- ItemPointer tid = (ItemPointer) PG_GETARG_POINTER(1);
+ ItemPointer tid = PG_GETARG_ITEMPOINTER(1);
ItemPointer result,
ret;
char *str;
@@ -182,5 +174,5 @@ currtid_byrelname(PG_FUNCTION_ARGS)
pfree(str);
- PG_RETURN_POINTER(result);
+ PG_RETURN_ITEMPOINTER(result);
}
diff --git a/src/backend/utils/init/miscinit.c b/src/backend/utils/init/miscinit.c
index b4ad59af6f2..01182c765a9 100644
--- a/src/backend/utils/init/miscinit.c
+++ b/src/backend/utils/init/miscinit.c
@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/utils/init/miscinit.c,v 1.52 2000/07/14 16:41:44 petere Exp $
+ * $Header: /cvsroot/pgsql/src/backend/utils/init/miscinit.c,v 1.53 2000/08/03 16:34:24 tgl Exp $
*
*-------------------------------------------------------------------------
*/
@@ -277,20 +277,16 @@ convertstr(unsigned char *buff, int len, int dest)
*
* SetPgUserName must be called before InitPostgres, since the setuid()
* is done there.
- *
- * Replace GetPgUserName() with a lower-case version
- * to allow use in new case-insensitive SQL (referenced
- * in pg_proc.h). Define GetPgUserName() as a macro - tgl 97/04/26
* ----------------
*/
char *
-getpgusername()
+GetPgUserName(void)
{
return UserName;
}
void
-SetPgUserName()
+SetPgUserName(void)
{
#ifndef NO_SECURITY
char *p;