From dbcbc304cfeabc045b31dac69275ac55abe277ad Mon Sep 17 00:00:00 2001 From: Peter Eisentraut Date: Mon, 22 Sep 2025 14:47:48 +0200 Subject: [PATCH 08/23] C11 anonymous unions [pgbench] --- src/bin/pgbench/exprparse.y | 22 ++++++++-------- src/bin/pgbench/pgbench.c | 52 ++++++++++++++++++------------------- src/bin/pgbench/pgbench.h | 4 +-- 3 files changed, 39 insertions(+), 39 deletions(-) diff --git a/src/bin/pgbench/exprparse.y b/src/bin/pgbench/exprparse.y index 68a37e49e45..4e291a13e95 100644 --- a/src/bin/pgbench/exprparse.y +++ b/src/bin/pgbench/exprparse.y @@ -170,8 +170,8 @@ make_null_constant(void) PgBenchExpr *expr = pg_malloc(sizeof(PgBenchExpr)); expr->etype = ENODE_CONSTANT; - expr->u.constant.type = PGBT_NULL; - expr->u.constant.u.ival = 0; + expr->constant.type = PGBT_NULL; + expr->constant.ival = 0; return expr; } @@ -181,8 +181,8 @@ make_integer_constant(int64 ival) PgBenchExpr *expr = pg_malloc(sizeof(PgBenchExpr)); expr->etype = ENODE_CONSTANT; - expr->u.constant.type = PGBT_INT; - expr->u.constant.u.ival = ival; + expr->constant.type = PGBT_INT; + expr->constant.ival = ival; return expr; } @@ -192,8 +192,8 @@ make_double_constant(double dval) PgBenchExpr *expr = pg_malloc(sizeof(PgBenchExpr)); expr->etype = ENODE_CONSTANT; - expr->u.constant.type = PGBT_DOUBLE; - expr->u.constant.u.dval = dval; + expr->constant.type = PGBT_DOUBLE; + expr->constant.dval = dval; return expr; } @@ -203,8 +203,8 @@ make_boolean_constant(bool bval) PgBenchExpr *expr = pg_malloc(sizeof(PgBenchExpr)); expr->etype = ENODE_CONSTANT; - expr->u.constant.type = PGBT_BOOLEAN; - expr->u.constant.u.bval = bval; + expr->constant.type = PGBT_BOOLEAN; + expr->constant.bval = bval; return expr; } @@ -214,7 +214,7 @@ make_variable(char *varname) PgBenchExpr *expr = pg_malloc(sizeof(PgBenchExpr)); expr->etype = ENODE_VARIABLE; - expr->u.variable.varname = varname; + expr->variable.varname = varname; return expr; } @@ -514,10 +514,10 @@ make_func(yyscan_t yyscanner, int fnumber, PgBenchExprList *args) } expr->etype = ENODE_FUNCTION; - expr->u.function.function = PGBENCH_FUNCTIONS[fnumber].tag; + expr->function.function = PGBENCH_FUNCTIONS[fnumber].tag; /* only the link is used, the head/tail is not useful anymore */ - expr->u.function.args = args != NULL ? args->head : NULL; + expr->function.args = args != NULL ? args->head : NULL; if (args) pg_free(args); diff --git a/src/bin/pgbench/pgbench.c b/src/bin/pgbench/pgbench.c index 3cafd88ac53..9b4e15fab9b 100644 --- a/src/bin/pgbench/pgbench.c +++ b/src/bin/pgbench/pgbench.c @@ -1673,13 +1673,13 @@ getVariable(Variables *variables, char *name) snprintf(stringform, sizeof(stringform), "NULL"); else if (var->value.type == PGBT_BOOLEAN) snprintf(stringform, sizeof(stringform), - "%s", var->value.u.bval ? "true" : "false"); + "%s", var->value.bval ? "true" : "false"); else if (var->value.type == PGBT_INT) snprintf(stringform, sizeof(stringform), - INT64_FORMAT, var->value.u.ival); + INT64_FORMAT, var->value.ival); else if (var->value.type == PGBT_DOUBLE) snprintf(stringform, sizeof(stringform), - "%.*g", DBL_DIG, var->value.u.dval); + "%.*g", DBL_DIG, var->value.dval); else /* internal error, unexpected type */ Assert(0); var->svalue = pg_strdup(stringform); @@ -2032,7 +2032,7 @@ coerceToBool(PgBenchValue *pval, bool *bval) { if (pval->type == PGBT_BOOLEAN) { - *bval = pval->u.bval; + *bval = pval->bval; return true; } else /* NULL, INT or DOUBLE */ @@ -2055,11 +2055,11 @@ valueTruth(PgBenchValue *pval) case PGBT_NULL: return false; case PGBT_BOOLEAN: - return pval->u.bval; + return pval->bval; case PGBT_INT: - return pval->u.ival != 0; + return pval->ival != 0; case PGBT_DOUBLE: - return pval->u.dval != 0.0; + return pval->dval != 0.0; default: /* internal error, unexpected type */ Assert(0); @@ -2073,12 +2073,12 @@ coerceToInt(PgBenchValue *pval, int64 *ival) { if (pval->type == PGBT_INT) { - *ival = pval->u.ival; + *ival = pval->ival; return true; } else if (pval->type == PGBT_DOUBLE) { - double dval = rint(pval->u.dval); + double dval = rint(pval->dval); if (isnan(dval) || !FLOAT8_FITS_IN_INT64(dval)) { @@ -2101,12 +2101,12 @@ coerceToDouble(PgBenchValue *pval, double *dval) { if (pval->type == PGBT_DOUBLE) { - *dval = pval->u.dval; + *dval = pval->dval; return true; } else if (pval->type == PGBT_INT) { - *dval = (double) pval->u.ival; + *dval = (double) pval->ival; return true; } else /* BOOLEAN or NULL */ @@ -2121,7 +2121,7 @@ static void setNullValue(PgBenchValue *pv) { pv->type = PGBT_NULL; - pv->u.ival = 0; + pv->ival = 0; } /* assign a boolean value */ @@ -2129,7 +2129,7 @@ static void setBoolValue(PgBenchValue *pv, bool bval) { pv->type = PGBT_BOOLEAN; - pv->u.bval = bval; + pv->bval = bval; } /* assign an integer value */ @@ -2137,7 +2137,7 @@ static void setIntValue(PgBenchValue *pv, int64 ival) { pv->type = PGBT_INT; - pv->u.ival = ival; + pv->ival = ival; } /* assign a double value */ @@ -2145,7 +2145,7 @@ static void setDoubleValue(PgBenchValue *pv, double dval) { pv->type = PGBT_DOUBLE; - pv->u.dval = dval; + pv->dval = dval; } static bool @@ -2525,13 +2525,13 @@ evalStandardFunc(CState *st, if (varg->type == PGBT_INT) { - int64 i = varg->u.ival; + int64 i = varg->ival; setIntValue(retval, i < 0 ? -i : i); } else { - double d = varg->u.dval; + double d = varg->dval; Assert(varg->type == PGBT_DOUBLE); setDoubleValue(retval, d < 0.0 ? -d : d); @@ -2552,11 +2552,11 @@ evalStandardFunc(CState *st, if (varg->type == PGBT_NULL) fprintf(stderr, "null\n"); else if (varg->type == PGBT_BOOLEAN) - fprintf(stderr, "boolean %s\n", varg->u.bval ? "true" : "false"); + fprintf(stderr, "boolean %s\n", varg->bval ? "true" : "false"); else if (varg->type == PGBT_INT) - fprintf(stderr, "int " INT64_FORMAT "\n", varg->u.ival); + fprintf(stderr, "int " INT64_FORMAT "\n", varg->ival); else if (varg->type == PGBT_DOUBLE) - fprintf(stderr, "double %.*g\n", DBL_DIG, varg->u.dval); + fprintf(stderr, "double %.*g\n", DBL_DIG, varg->dval); else /* internal error, unexpected type */ Assert(0); @@ -2779,7 +2779,7 @@ evalStandardFunc(CState *st, */ setBoolValue(retval, vargs[0].type == vargs[1].type && - vargs[0].u.bval == vargs[1].u.bval); + vargs[0].bval == vargs[1].bval); return true; } @@ -2862,7 +2862,7 @@ evaluateExpr(CState *st, PgBenchExpr *expr, PgBenchValue *retval) { case ENODE_CONSTANT: { - *retval = expr->u.constant; + *retval = expr->constant; return true; } @@ -2870,9 +2870,9 @@ evaluateExpr(CState *st, PgBenchExpr *expr, PgBenchValue *retval) { Variable *var; - if ((var = lookupVariable(&st->variables, expr->u.variable.varname)) == NULL) + if ((var = lookupVariable(&st->variables, expr->variable.varname)) == NULL) { - pg_log_error("undefined variable \"%s\"", expr->u.variable.varname); + pg_log_error("undefined variable \"%s\"", expr->variable.varname); return false; } @@ -2885,8 +2885,8 @@ evaluateExpr(CState *st, PgBenchExpr *expr, PgBenchValue *retval) case ENODE_FUNCTION: return evalFunc(st, - expr->u.function.function, - expr->u.function.args, + expr->function.function, + expr->function.args, retval); default: diff --git a/src/bin/pgbench/pgbench.h b/src/bin/pgbench/pgbench.h index d55d30e0ef9..7454f29bb69 100644 --- a/src/bin/pgbench/pgbench.h +++ b/src/bin/pgbench/pgbench.h @@ -50,7 +50,7 @@ typedef struct double dval; bool bval; /* add other types here */ - } u; + }; } PgBenchValue; /* Types of expression nodes */ @@ -122,7 +122,7 @@ struct PgBenchExpr PgBenchFunction function; PgBenchExprLink *args; } function; - } u; + }; }; /* List of expression nodes */ -- 2.51.0