GetAttributeByName and GetAttributeByNum should be declared to return
Datum, not char*, for portability's sake.
This commit is contained in:
parent
d9eb7d8fa1
commit
481487b964
@ -8,7 +8,7 @@
|
||||
*
|
||||
*
|
||||
* IDENTIFICATION
|
||||
* $Header: /cvsroot/pgsql/src/backend/executor/execQual.c,v 1.79 2000/08/24 03:29:03 tgl Exp $
|
||||
* $Header: /cvsroot/pgsql/src/backend/executor/execQual.c,v 1.80 2000/08/24 23:34:09 tgl Exp $
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
@ -502,13 +502,8 @@ ExecEvalParam(Param *expression, ExprContext *econtext, bool *isNull)
|
||||
* named attribute out of the tuple from the arg slot. User defined
|
||||
* C functions which take a tuple as an argument are expected
|
||||
* to use this. Ex: overpaid(EMP) might call GetAttributeByNum().
|
||||
*
|
||||
* XXX these two functions are misdeclared: they should be declared to
|
||||
* return Datum. They are not used anywhere in the backend proper, and
|
||||
* exist only for use by user-defined functions. Should we change their
|
||||
* definitions, at risk of breaking user code?
|
||||
*/
|
||||
char *
|
||||
Datum
|
||||
GetAttributeByNum(TupleTableSlot *slot,
|
||||
AttrNumber attrno,
|
||||
bool *isNull)
|
||||
@ -527,7 +522,7 @@ GetAttributeByNum(TupleTableSlot *slot,
|
||||
if (TupIsNull(slot))
|
||||
{
|
||||
*isNull = true;
|
||||
return (char *) NULL;
|
||||
return (Datum) 0;
|
||||
}
|
||||
|
||||
retval = heap_getattr(slot->val,
|
||||
@ -535,11 +530,12 @@ GetAttributeByNum(TupleTableSlot *slot,
|
||||
slot->ttc_tupleDescriptor,
|
||||
isNull);
|
||||
if (*isNull)
|
||||
return (char *) NULL;
|
||||
return (char *) retval;
|
||||
return (Datum) 0;
|
||||
|
||||
return retval;
|
||||
}
|
||||
|
||||
char *
|
||||
Datum
|
||||
GetAttributeByName(TupleTableSlot *slot, char *attname, bool *isNull)
|
||||
{
|
||||
AttrNumber attrno;
|
||||
@ -557,7 +553,7 @@ GetAttributeByName(TupleTableSlot *slot, char *attname, bool *isNull)
|
||||
if (TupIsNull(slot))
|
||||
{
|
||||
*isNull = true;
|
||||
return (char *) NULL;
|
||||
return (Datum) 0;
|
||||
}
|
||||
|
||||
tupdesc = slot->ttc_tupleDescriptor;
|
||||
@ -581,8 +577,9 @@ GetAttributeByName(TupleTableSlot *slot, char *attname, bool *isNull)
|
||||
tupdesc,
|
||||
isNull);
|
||||
if (*isNull)
|
||||
return (char *) NULL;
|
||||
return (char *) retval;
|
||||
return (Datum) 0;
|
||||
|
||||
return retval;
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -7,7 +7,7 @@
|
||||
* Portions Copyright (c) 1996-2000, PostgreSQL, Inc
|
||||
* Portions Copyright (c) 1994, Regents of the University of California
|
||||
*
|
||||
* $Id: executor.h,v 1.49 2000/08/24 03:29:10 tgl Exp $
|
||||
* $Id: executor.h,v 1.50 2000/08/24 23:34:09 tgl Exp $
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
@ -74,9 +74,9 @@ extern void ExecEndNode(Plan *node, Plan *parent);
|
||||
*/
|
||||
extern Datum ExecEvalParam(Param *expression, ExprContext *econtext,
|
||||
bool *isNull);
|
||||
extern char *GetAttributeByNum(TupleTableSlot *slot, AttrNumber attrno,
|
||||
bool *isNull);
|
||||
extern char *GetAttributeByName(TupleTableSlot *slot, char *attname,
|
||||
extern Datum GetAttributeByNum(TupleTableSlot *slot, AttrNumber attrno,
|
||||
bool *isNull);
|
||||
extern Datum GetAttributeByName(TupleTableSlot *slot, char *attname,
|
||||
bool *isNull);
|
||||
extern Datum ExecMakeFunctionResult(FunctionCachePtr fcache,
|
||||
List *arguments,
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* $Header: /cvsroot/pgsql/src/test/regress/regress.c,v 1.43 2000/07/30 20:43:54 tgl Exp $
|
||||
* $Header: /cvsroot/pgsql/src/test/regress/regress.c,v 1.44 2000/08/24 23:34:11 tgl Exp $
|
||||
*/
|
||||
|
||||
#include <float.h> /* faked on sunos */
|
||||
@ -187,9 +187,9 @@ overpaid(PG_FUNCTION_ARGS)
|
||||
{
|
||||
TUPLE tuple = (TUPLE) PG_GETARG_POINTER(0);
|
||||
bool isnull;
|
||||
long salary;
|
||||
int32 salary;
|
||||
|
||||
salary = (long) GetAttributeByName(tuple, "salary", &isnull);
|
||||
salary = DatumGetInt32(GetAttributeByName(tuple, "salary", &isnull));
|
||||
if (isnull)
|
||||
PG_RETURN_NULL();
|
||||
PG_RETURN_BOOL(salary > 699);
|
||||
|
Loading…
x
Reference in New Issue
Block a user