params.h
上传用户:blenddy
上传日期:2007-01-07
资源大小:6495k
文件大小:3k
- /*-------------------------------------------------------------------------
- *
- * params.h
- * Declarations/definitions of stuff needed to handle parameterized plans.
- *
- *
- * Copyright (c) 1994, Regents of the University of California
- *
- * $Id: params.h,v 1.10 1999/02/13 23:21:38 momjian Exp $
- *
- *-------------------------------------------------------------------------
- */
- #ifndef PARAMS_H
- #define PARAMS_H
- #include <access/attnum.h>
- /* ----------------------------------------------------------------
- *
- * The following are the possible values for the 'paramkind'
- * field of a Param node.
- *
- * PARAM_NAMED: The parameter has a name, i.e. something
- * like `$.salary' or `$.foobar'.
- * In this case field `paramname' must be a valid Name.
- * and field `paramid' must be == 0.
- *
- * PARAM_NUM: The parameter has only a numeric identifier,
- * i.e. something like `$1', `$2' etc.
- * The number is contained in the `parmid' field.
- *
- * PARAM_NEW: Used in PRS2 rule, similar to PARAM_NAMED.
- * The `paramname' & `paramid' refer to the "NEW" tuple
- * `paramname' is the attribute name and `paramid' its
- * attribute number.
- *
- * PARAM_OLD: Same as PARAM_NEW, but in this case we refer to
- * the "OLD" tuple.
- *
- * PARAM_EXEC: Evaluated by executor. Used for subselect...
- *
- */
- #define PARAM_NAMED 11
- #define PARAM_NUM 12
- #define PARAM_NEW 13
- #define PARAM_OLD 14
- #define PARAM_EXEC 15
- #define PARAM_INVALID 100
- /* ----------------------------------------------------------------
- * ParamListInfo
- *
- * Information needed in order for the executor to handle
- * parameterized plans (you know, $.salary, $.name etc. stuff...).
- *
- * ParamListInfoData contains information needed when substituting a
- * Param node with a Const node.
- *
- * kind : the kind of parameter.
- * name : the parameter name (valid if kind == PARAM_NAMED,
- * PARAM_NEW or PARAM_OLD)
- * id : the parameter id (valid if kind == PARAM_NUM)
- * or the attrno (if kind == PARAM_NEW or PARAM_OLD)
- * type : PG_TYPE OID of the value
- * length : length in bytes of the value
- * isnull : true if & only if the value is null (if true then
- * the fields 'length' and 'value' are undefined).
- * value : the value that has to be substituted in the place
- * of the parameter.
- *
- * ParamListInfo is to be used as an array of ParamListInfoData
- * records. An 'InvalidName' in the name field of such a record
- * indicates that this is the last record in the array.
- *
- * ----------------------------------------------------------------
- */
- typedef struct ParamListInfoData
- {
- int kind;
- char *name;
- AttrNumber id;
- Oid type;
- Size length;
- bool isnull;
- bool byval;
- Datum value;
- } ParamListInfoData;
- typedef ParamListInfoData *ParamListInfo;
- typedef struct ParamExecData
- {
- void *execPlan; /* plan must be executed to get param
- * value */
- Datum value;
- bool isnull;
- } ParamExecData;
- #endif /* PARAMS_H */