Skip to content

Commit 481487b

Browse files
committed
GetAttributeByName and GetAttributeByNum should be declared to return
Datum, not char*, for portability's sake.
1 parent d9eb7d8 commit 481487b

File tree

3 files changed

+18
-21
lines changed

3 files changed

+18
-21
lines changed

src/backend/executor/execQual.c

Lines changed: 11 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
*
99
*
1010
* IDENTIFICATION
11-
* $Header: /cvsroot/pgsql/src/backend/executor/execQual.c,v 1.79 2000/08/24 03:29:03 tgl Exp $
11+
* $Header: /cvsroot/pgsql/src/backend/executor/execQual.c,v 1.80 2000/08/24 23:34:09 tgl Exp $
1212
*
1313
*-------------------------------------------------------------------------
1414
*/
@@ -502,13 +502,8 @@ ExecEvalParam(Param *expression, ExprContext *econtext, bool *isNull)
502502
* named attribute out of the tuple from the arg slot. User defined
503503
* C functions which take a tuple as an argument are expected
504504
* to use this. Ex: overpaid(EMP) might call GetAttributeByNum().
505-
*
506-
* XXX these two functions are misdeclared: they should be declared to
507-
* return Datum. They are not used anywhere in the backend proper, and
508-
* exist only for use by user-defined functions. Should we change their
509-
* definitions, at risk of breaking user code?
510505
*/
511-
char *
506+
Datum
512507
GetAttributeByNum(TupleTableSlot *slot,
513508
AttrNumber attrno,
514509
bool *isNull)
@@ -527,19 +522,20 @@ GetAttributeByNum(TupleTableSlot *slot,
527522
if (TupIsNull(slot))
528523
{
529524
*isNull = true;
530-
return (char *) NULL;
525+
return (Datum) 0;
531526
}
532527

533528
retval = heap_getattr(slot->val,
534529
attrno,
535530
slot->ttc_tupleDescriptor,
536531
isNull);
537532
if (*isNull)
538-
return (char *) NULL;
539-
return (char *) retval;
533+
return (Datum) 0;
534+
535+
return retval;
540536
}
541537

542-
char *
538+
Datum
543539
GetAttributeByName(TupleTableSlot *slot, char *attname, bool *isNull)
544540
{
545541
AttrNumber attrno;
@@ -557,7 +553,7 @@ GetAttributeByName(TupleTableSlot *slot, char *attname, bool *isNull)
557553
if (TupIsNull(slot))
558554
{
559555
*isNull = true;
560-
return (char *) NULL;
556+
return (Datum) 0;
561557
}
562558

563559
tupdesc = slot->ttc_tupleDescriptor;
@@ -581,8 +577,9 @@ GetAttributeByName(TupleTableSlot *slot, char *attname, bool *isNull)
581577
tupdesc,
582578
isNull);
583579
if (*isNull)
584-
return (char *) NULL;
585-
return (char *) retval;
580+
return (Datum) 0;
581+
582+
return retval;
586583
}
587584

588585
/*

src/include/executor/executor.h

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
* Portions Copyright (c) 1996-2000, PostgreSQL, Inc
88
* Portions Copyright (c) 1994, Regents of the University of California
99
*
10-
* $Id: executor.h,v 1.49 2000/08/24 03:29:10 tgl Exp $
10+
* $Id: executor.h,v 1.50 2000/08/24 23:34:09 tgl Exp $
1111
*
1212
*-------------------------------------------------------------------------
1313
*/
@@ -74,9 +74,9 @@ extern void ExecEndNode(Plan *node, Plan *parent);
7474
*/
7575
extern Datum ExecEvalParam(Param *expression, ExprContext *econtext,
7676
bool *isNull);
77-
extern char *GetAttributeByNum(TupleTableSlot *slot, AttrNumber attrno,
78-
bool *isNull);
79-
extern char *GetAttributeByName(TupleTableSlot *slot, char *attname,
77+
extern Datum GetAttributeByNum(TupleTableSlot *slot, AttrNumber attrno,
78+
bool *isNull);
79+
extern Datum GetAttributeByName(TupleTableSlot *slot, char *attname,
8080
bool *isNull);
8181
extern Datum ExecMakeFunctionResult(FunctionCachePtr fcache,
8282
List *arguments,

src/test/regress/regress.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* $Header: /cvsroot/pgsql/src/test/regress/regress.c,v 1.43 2000/07/30 20:43:54 tgl Exp $
2+
* $Header: /cvsroot/pgsql/src/test/regress/regress.c,v 1.44 2000/08/24 23:34:11 tgl Exp $
33
*/
44

55
#include <float.h> /* faked on sunos */
@@ -187,9 +187,9 @@ overpaid(PG_FUNCTION_ARGS)
187187
{
188188
TUPLE tuple = (TUPLE) PG_GETARG_POINTER(0);
189189
bool isnull;
190-
long salary;
190+
int32 salary;
191191

192-
salary = (long) GetAttributeByName(tuple, "salary", &isnull);
192+
salary = DatumGetInt32(GetAttributeByName(tuple, "salary", &isnull));
193193
if (isnull)
194194
PG_RETURN_NULL();
195195
PG_RETURN_BOOL(salary > 699);

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy