]> granicus.if.org Git - postgresql/commitdiff
GetAttributeByName and GetAttributeByNum should be declared to return
authorTom Lane <tgl@sss.pgh.pa.us>
Thu, 24 Aug 2000 23:34:11 +0000 (23:34 +0000)
committerTom Lane <tgl@sss.pgh.pa.us>
Thu, 24 Aug 2000 23:34:11 +0000 (23:34 +0000)
Datum, not char*, for portability's sake.

src/backend/executor/execQual.c
src/include/executor/executor.h
src/test/regress/regress.c

index 3929c8782a9a6351ae5f520ff730f0db979832a3..622ea2ef82c24679af9ee616807799c53d20fbcf 100644 (file)
@@ -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;
 }
 
 /*
index e39a60a6a2478140b6d7db997e766264e2e49f3b..5eb7cbb93bae73664ff370c83360d8ed0499e941 100644 (file)
@@ -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,
index e5fbf962a4ffd869035fd4ed6e987b282a5953f8..479527fc3fc862948764d5fa71e46fda60d3326c 100644 (file)
@@ -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);