case T_Integer:
return psprintf("%ld", (long) intVal(def->arg));
case T_Float:
- return castNode(Float, def->arg)->val;
+ return castNode(Float, def->arg)->fval;
case T_String:
return strVal(def->arg);
case T_TypeName:
* strings.
*/
return DatumGetInt64(DirectFunctionCall1(int8in,
- CStringGetDatum(castNode(Float, def->arg)->val)));
+ CStringGetDatum(castNode(Float, def->arg)->fval)));
default:
ereport(ERROR,
(errcode(ERRCODE_SYNTAX_ERROR),
switch (nodeTag(&from->val))
{
case T_Integer:
- COPY_SCALAR_FIELD(val.ival.val);
+ COPY_SCALAR_FIELD(val.ival.ival);
break;
case T_Float:
- COPY_STRING_FIELD(val.fval.val);
+ COPY_STRING_FIELD(val.fval.fval);
break;
case T_String:
- COPY_STRING_FIELD(val.sval.val);
+ COPY_STRING_FIELD(val.sval.sval);
break;
case T_BitString:
- COPY_STRING_FIELD(val.bsval.val);
+ COPY_STRING_FIELD(val.bsval.bsval);
break;
default:
elog(ERROR, "unrecognized node type: %d",
{
Integer *newnode = makeNode(Integer);
- COPY_SCALAR_FIELD(val);
+ COPY_SCALAR_FIELD(ival);
return newnode;
}
{
Float *newnode = makeNode(Float);
- COPY_STRING_FIELD(val);
+ COPY_STRING_FIELD(fval);
return newnode;
}
{
String *newnode = makeNode(String);
- COPY_STRING_FIELD(val);
+ COPY_STRING_FIELD(sval);
return newnode;
}
{
BitString *newnode = makeNode(BitString);
- COPY_STRING_FIELD(val);
+ COPY_STRING_FIELD(bsval);
return newnode;
}
static bool
_equalInteger(const Integer *a, const Integer *b)
{
- COMPARE_SCALAR_FIELD(val);
+ COMPARE_SCALAR_FIELD(ival);
return true;
}
static bool
_equalFloat(const Float *a, const Float *b)
{
- COMPARE_STRING_FIELD(val);
+ COMPARE_STRING_FIELD(fval);
return true;
}
static bool
_equalString(const String *a, const String *b)
{
- COMPARE_STRING_FIELD(val);
+ COMPARE_STRING_FIELD(sval);
return true;
}
static bool
_equalBitString(const BitString *a, const BitString *b)
{
- COMPARE_STRING_FIELD(val);
+ COMPARE_STRING_FIELD(bsval);
return true;
}
static void
_outInteger(StringInfo str, const Integer *node)
{
- appendStringInfo(str, "%d", node->val);
+ appendStringInfo(str, "%d", node->ival);
}
static void
* We assume the value is a valid numeric literal and so does not
* need quoting.
*/
- appendStringInfoString(str, node->val);
+ appendStringInfoString(str, node->fval);
}
static void
* but we don't want it to do anything with an empty string.
*/
appendStringInfoChar(str, '"');
- if (node->val[0] != '\0')
- outToken(str, node->val);
+ if (node->sval[0] != '\0')
+ outToken(str, node->sval);
appendStringInfoChar(str, '"');
}
_outBitString(StringInfo str, const BitString *node)
{
/* internal representation already has leading 'b' */
- appendStringInfoString(str, node->val);
+ appendStringInfoString(str, node->bsval);
}
static void
{
Integer *v = makeNode(Integer);
- v->val = i;
+ v->ival = i;
return v;
}
{
Float *v = makeNode(Float);
- v->val = numericStr;
+ v->fval = numericStr;
return v;
}
{
String *v = makeNode(String);
- v->val = str;
+ v->sval = str;
return v;
}
{
BitString *v = makeNode(BitString);
- v->val = str;
+ v->bsval = str;
return v;
}
if ($3 != NIL)
{
A_Const *n = (A_Const *) linitial($3);
- if ((n->val.ival.val & ~(INTERVAL_MASK(HOUR) | INTERVAL_MASK(MINUTE))) != 0)
+ if ((n->val.ival.ival & ~(INTERVAL_MASK(HOUR) | INTERVAL_MASK(MINUTE))) != 0)
ereport(ERROR,
(errcode(ERRCODE_SYNTAX_ERROR),
errmsg("time zone interval must be HOUR or HOUR TO MINUTE"),
A_Const *n = makeNode(A_Const);
n->val.sval.type = T_String;
- n->val.sval.val = str;
+ n->val.sval.sval = str;
n->location = location;
return (Node *)n;
A_Const *n = makeNode(A_Const);
n->val.ival.type = T_Integer;
- n->val.ival.val = val;
+ n->val.ival.ival = val;
n->location = location;
return (Node *)n;
A_Const *n = makeNode(A_Const);
n->val.fval.type = T_Float;
- n->val.fval.val = str;
+ n->val.fval.fval = str;
n->location = location;
return (Node *)n;
A_Const *n = makeNode(A_Const);
n->val.bsval.type = T_BitString;
- n->val.bsval.val = str;
+ n->val.bsval.bsval = str;
n->location = location;
return (Node *)n;
switch (v->type)
{
case T_Float:
- n = makeFloatConst(castNode(Float, v)->val, location);
+ n = makeFloatConst(castNode(Float, v)->fval, location);
break;
case T_Integer:
- n = makeIntConst(castNode(Integer, v)->val, location);
+ n = makeIntConst(castNode(Integer, v)->ival, location);
break;
case T_String:
default:
- n = makeStringConst(castNode(String, v)->val, location);
+ n = makeStringConst(castNode(String, v)->sval, location);
break;
}
if (IsA(&con->val, Integer))
{
- con->val.ival.val = -con->val.ival.val;
+ con->val.ival.ival = -con->val.ival.ival;
return n;
}
if (IsA(&con->val, Float))
static void
doNegateFloat(Float *v)
{
- char *oldval = v->val;
+ char *oldval = v->fval;
if (*oldval == '+')
oldval++;
if (*oldval == '-')
- v->val = oldval+1; /* just strip the '-' */
+ v->fval = oldval+1; /* just strip the '-' */
else
- v->val = psprintf("-%s", oldval);
+ v->fval = psprintf("-%s", oldval);
}
static Node *
switch (nodeTag(&aconst->val))
{
case T_Integer:
- val = Int32GetDatum(aconst->val.ival.val);
+ val = Int32GetDatum(intVal(&aconst->val));
typeid = INT4OID;
typelen = sizeof(int32);
case T_Float:
/* could be an oversize integer as well as a float ... */
- if (scanint8(aconst->val.fval.val, true, &val64))
+ if (scanint8(aconst->val.fval.fval, true, &val64))
{
/*
* It might actually fit in int32. Probably only INT_MIN can
/* arrange to report location if numeric_in() fails */
setup_parser_errposition_callback(&pcbstate, pstate, aconst->location);
val = DirectFunctionCall3(numeric_in,
- CStringGetDatum(aconst->val.fval.val),
+ CStringGetDatum(aconst->val.fval.fval),
ObjectIdGetDatum(InvalidOid),
Int32GetDatum(-1));
cancel_parser_errposition_callback(&pcbstate);
* We assume here that UNKNOWN's internal representation is the
* same as CSTRING
*/
- val = CStringGetDatum(aconst->val.sval.val);
+ val = CStringGetDatum(strVal(&aconst->val));
typeid = UNKNOWNOID; /* will be coerced later */
typelen = -2; /* cstring-style varwidth type */
/* arrange to report location if bit_in() fails */
setup_parser_errposition_callback(&pcbstate, pstate, aconst->location);
val = DirectFunctionCall3(bit_in,
- CStringGetDatum(aconst->val.bsval.val),
+ CStringGetDatum(aconst->val.bsval.bsval),
ObjectIdGetDatum(InvalidOid),
Int32GetDatum(-1));
cancel_parser_errposition_callback(&pcbstate);
if (IsA(&ac->val, Integer))
{
- cstr = psprintf("%ld", (long) ac->val.ival.val);
+ cstr = psprintf("%ld", (long) intVal(&ac->val));
}
else if (IsA(&ac->val, Float))
{
/* we can just use the string representation directly. */
- cstr = ac->val.fval.val;
+ cstr = ac->val.fval.fval;
}
else if (IsA(&ac->val, String))
{
/* we can just use the string representation directly. */
- cstr = ac->val.sval.val;
+ cstr = strVal(&ac->val);
}
}
else if (IsA(tm, ColumnRef))
qstring = quote_qualified_identifier(snamespace, sname);
snamenode = makeNode(A_Const);
snamenode->val.node.type = T_String;
- snamenode->val.sval.val = qstring;
+ snamenode->val.sval.sval = qstring;
snamenode->location = -1;
castnode = makeNode(TypeCast);
castnode->typeName = SystemTypeName("regclass");
* constants by the lexer. Accept these if they are valid OID
* strings.
*/
- return oidin_subr(castNode(Float, node)->val, NULL);
+ return oidin_subr(castNode(Float, node)->fval, NULL);
default:
elog(ERROR, "unrecognized node type: %d", (int) nodeTag(node));
}
break;
case T_Float:
/* represented as a string, so just copy it */
- appendStringInfoString(&buf, castNode(Float, &con->val)->val);
+ appendStringInfoString(&buf, castNode(Float, &con->val)->fval);
break;
case T_String:
val = strVal(&con->val);
typedef struct Integer
{
NodeTag type;
- int val;
+ int ival;
} Integer;
/*
typedef struct Float
{
NodeTag type;
- char *val;
+ char *fval;
} Float;
typedef struct String
{
NodeTag type;
- char *val;
+ char *sval;
} String;
typedef struct BitString
{
NodeTag type;
- char *val;
+ char *bsval;
} BitString;
-#define intVal(v) (castNode(Integer, v)->val)
-#define floatVal(v) atof(castNode(Float, v)->val)
-#define strVal(v) (castNode(String, v)->val)
+#define intVal(v) (castNode(Integer, v)->ival)
+#define floatVal(v) atof(castNode(Float, v)->fval)
+#define strVal(v) (castNode(String, v)->sval)
extern Integer *makeInteger(int i);
extern Float *makeFloat(char *numericStr);