mirror of
https://github.com/postgres/postgres.git
synced 2025-07-18 17:42:25 +03:00
Use appendStringInfoString instead of appendStringInfo where possible.
This shaves a few cycles, and generally seems like good programming practice. David Rowley
This commit is contained in:
@ -111,7 +111,7 @@ _outToken(StringInfo str, const char *s)
|
||||
{
|
||||
if (s == NULL || *s == '\0')
|
||||
{
|
||||
appendStringInfo(str, "<>");
|
||||
appendStringInfoString(str, "<>");
|
||||
return;
|
||||
}
|
||||
|
||||
@ -214,19 +214,19 @@ _outDatum(StringInfo str, Datum value, int typlen, bool typbyval)
|
||||
appendStringInfo(str, "%u [ ", (unsigned int) length);
|
||||
for (i = 0; i < (Size) sizeof(Datum); i++)
|
||||
appendStringInfo(str, "%d ", (int) (s[i]));
|
||||
appendStringInfo(str, "]");
|
||||
appendStringInfoChar(str, ']');
|
||||
}
|
||||
else
|
||||
{
|
||||
s = (char *) DatumGetPointer(value);
|
||||
if (!PointerIsValid(s))
|
||||
appendStringInfo(str, "0 [ ]");
|
||||
appendStringInfoString(str, "0 [ ]");
|
||||
else
|
||||
{
|
||||
appendStringInfo(str, "%u [ ", (unsigned int) length);
|
||||
for (i = 0; i < length; i++)
|
||||
appendStringInfo(str, "%d ", (int) (s[i]));
|
||||
appendStringInfo(str, "]");
|
||||
appendStringInfoChar(str, ']');
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -362,19 +362,19 @@ _outMergeAppend(StringInfo str, const MergeAppend *node)
|
||||
|
||||
WRITE_INT_FIELD(numCols);
|
||||
|
||||
appendStringInfo(str, " :sortColIdx");
|
||||
appendStringInfoString(str, " :sortColIdx");
|
||||
for (i = 0; i < node->numCols; i++)
|
||||
appendStringInfo(str, " %d", node->sortColIdx[i]);
|
||||
|
||||
appendStringInfo(str, " :sortOperators");
|
||||
appendStringInfoString(str, " :sortOperators");
|
||||
for (i = 0; i < node->numCols; i++)
|
||||
appendStringInfo(str, " %u", node->sortOperators[i]);
|
||||
|
||||
appendStringInfo(str, " :collations");
|
||||
appendStringInfoString(str, " :collations");
|
||||
for (i = 0; i < node->numCols; i++)
|
||||
appendStringInfo(str, " %u", node->collations[i]);
|
||||
|
||||
appendStringInfo(str, " :nullsFirst");
|
||||
appendStringInfoString(str, " :nullsFirst");
|
||||
for (i = 0; i < node->numCols; i++)
|
||||
appendStringInfo(str, " %s", booltostr(node->nullsFirst[i]));
|
||||
}
|
||||
@ -391,11 +391,11 @@ _outRecursiveUnion(StringInfo str, const RecursiveUnion *node)
|
||||
WRITE_INT_FIELD(wtParam);
|
||||
WRITE_INT_FIELD(numCols);
|
||||
|
||||
appendStringInfo(str, " :dupColIdx");
|
||||
appendStringInfoString(str, " :dupColIdx");
|
||||
for (i = 0; i < node->numCols; i++)
|
||||
appendStringInfo(str, " %d", node->dupColIdx[i]);
|
||||
|
||||
appendStringInfo(str, " :dupOperators");
|
||||
appendStringInfoString(str, " :dupOperators");
|
||||
for (i = 0; i < node->numCols; i++)
|
||||
appendStringInfo(str, " %u", node->dupOperators[i]);
|
||||
|
||||
@ -599,19 +599,19 @@ _outMergeJoin(StringInfo str, const MergeJoin *node)
|
||||
|
||||
numCols = list_length(node->mergeclauses);
|
||||
|
||||
appendStringInfo(str, " :mergeFamilies");
|
||||
appendStringInfoString(str, " :mergeFamilies");
|
||||
for (i = 0; i < numCols; i++)
|
||||
appendStringInfo(str, " %u", node->mergeFamilies[i]);
|
||||
|
||||
appendStringInfo(str, " :mergeCollations");
|
||||
appendStringInfoString(str, " :mergeCollations");
|
||||
for (i = 0; i < numCols; i++)
|
||||
appendStringInfo(str, " %u", node->mergeCollations[i]);
|
||||
|
||||
appendStringInfo(str, " :mergeStrategies");
|
||||
appendStringInfoString(str, " :mergeStrategies");
|
||||
for (i = 0; i < numCols; i++)
|
||||
appendStringInfo(str, " %d", node->mergeStrategies[i]);
|
||||
|
||||
appendStringInfo(str, " :mergeNullsFirst");
|
||||
appendStringInfoString(str, " :mergeNullsFirst");
|
||||
for (i = 0; i < numCols; i++)
|
||||
appendStringInfo(str, " %d", (int) node->mergeNullsFirst[i]);
|
||||
}
|
||||
@ -638,11 +638,11 @@ _outAgg(StringInfo str, const Agg *node)
|
||||
WRITE_ENUM_FIELD(aggstrategy, AggStrategy);
|
||||
WRITE_INT_FIELD(numCols);
|
||||
|
||||
appendStringInfo(str, " :grpColIdx");
|
||||
appendStringInfoString(str, " :grpColIdx");
|
||||
for (i = 0; i < node->numCols; i++)
|
||||
appendStringInfo(str, " %d", node->grpColIdx[i]);
|
||||
|
||||
appendStringInfo(str, " :grpOperators");
|
||||
appendStringInfoString(str, " :grpOperators");
|
||||
for (i = 0; i < node->numCols; i++)
|
||||
appendStringInfo(str, " %u", node->grpOperators[i]);
|
||||
|
||||
@ -661,21 +661,21 @@ _outWindowAgg(StringInfo str, const WindowAgg *node)
|
||||
WRITE_UINT_FIELD(winref);
|
||||
WRITE_INT_FIELD(partNumCols);
|
||||
|
||||
appendStringInfo(str, " :partColIdx");
|
||||
appendStringInfoString(str, " :partColIdx");
|
||||
for (i = 0; i < node->partNumCols; i++)
|
||||
appendStringInfo(str, " %d", node->partColIdx[i]);
|
||||
|
||||
appendStringInfo(str, " :partOperations");
|
||||
appendStringInfoString(str, " :partOperations");
|
||||
for (i = 0; i < node->partNumCols; i++)
|
||||
appendStringInfo(str, " %u", node->partOperators[i]);
|
||||
|
||||
WRITE_INT_FIELD(ordNumCols);
|
||||
|
||||
appendStringInfo(str, " :ordColIdx");
|
||||
appendStringInfoString(str, " :ordColIdx");
|
||||
for (i = 0; i < node->ordNumCols; i++)
|
||||
appendStringInfo(str, " %d", node->ordColIdx[i]);
|
||||
|
||||
appendStringInfo(str, " :ordOperations");
|
||||
appendStringInfoString(str, " :ordOperations");
|
||||
for (i = 0; i < node->ordNumCols; i++)
|
||||
appendStringInfo(str, " %u", node->ordOperators[i]);
|
||||
|
||||
@ -695,11 +695,11 @@ _outGroup(StringInfo str, const Group *node)
|
||||
|
||||
WRITE_INT_FIELD(numCols);
|
||||
|
||||
appendStringInfo(str, " :grpColIdx");
|
||||
appendStringInfoString(str, " :grpColIdx");
|
||||
for (i = 0; i < node->numCols; i++)
|
||||
appendStringInfo(str, " %d", node->grpColIdx[i]);
|
||||
|
||||
appendStringInfo(str, " :grpOperators");
|
||||
appendStringInfoString(str, " :grpOperators");
|
||||
for (i = 0; i < node->numCols; i++)
|
||||
appendStringInfo(str, " %u", node->grpOperators[i]);
|
||||
}
|
||||
@ -723,19 +723,19 @@ _outSort(StringInfo str, const Sort *node)
|
||||
|
||||
WRITE_INT_FIELD(numCols);
|
||||
|
||||
appendStringInfo(str, " :sortColIdx");
|
||||
appendStringInfoString(str, " :sortColIdx");
|
||||
for (i = 0; i < node->numCols; i++)
|
||||
appendStringInfo(str, " %d", node->sortColIdx[i]);
|
||||
|
||||
appendStringInfo(str, " :sortOperators");
|
||||
appendStringInfoString(str, " :sortOperators");
|
||||
for (i = 0; i < node->numCols; i++)
|
||||
appendStringInfo(str, " %u", node->sortOperators[i]);
|
||||
|
||||
appendStringInfo(str, " :collations");
|
||||
appendStringInfoString(str, " :collations");
|
||||
for (i = 0; i < node->numCols; i++)
|
||||
appendStringInfo(str, " %u", node->collations[i]);
|
||||
|
||||
appendStringInfo(str, " :nullsFirst");
|
||||
appendStringInfoString(str, " :nullsFirst");
|
||||
for (i = 0; i < node->numCols; i++)
|
||||
appendStringInfo(str, " %s", booltostr(node->nullsFirst[i]));
|
||||
}
|
||||
@ -751,11 +751,11 @@ _outUnique(StringInfo str, const Unique *node)
|
||||
|
||||
WRITE_INT_FIELD(numCols);
|
||||
|
||||
appendStringInfo(str, " :uniqColIdx");
|
||||
appendStringInfoString(str, " :uniqColIdx");
|
||||
for (i = 0; i < node->numCols; i++)
|
||||
appendStringInfo(str, " %d", node->uniqColIdx[i]);
|
||||
|
||||
appendStringInfo(str, " :uniqOperators");
|
||||
appendStringInfoString(str, " :uniqOperators");
|
||||
for (i = 0; i < node->numCols; i++)
|
||||
appendStringInfo(str, " %u", node->uniqOperators[i]);
|
||||
}
|
||||
@ -787,11 +787,11 @@ _outSetOp(StringInfo str, const SetOp *node)
|
||||
WRITE_ENUM_FIELD(strategy, SetOpStrategy);
|
||||
WRITE_INT_FIELD(numCols);
|
||||
|
||||
appendStringInfo(str, " :dupColIdx");
|
||||
appendStringInfoString(str, " :dupColIdx");
|
||||
for (i = 0; i < node->numCols; i++)
|
||||
appendStringInfo(str, " %d", node->dupColIdx[i]);
|
||||
|
||||
appendStringInfo(str, " :dupOperators");
|
||||
appendStringInfoString(str, " :dupOperators");
|
||||
for (i = 0; i < node->numCols; i++)
|
||||
appendStringInfo(str, " %u", node->dupOperators[i]);
|
||||
|
||||
@ -928,9 +928,9 @@ _outConst(StringInfo str, const Const *node)
|
||||
WRITE_BOOL_FIELD(constisnull);
|
||||
WRITE_LOCATION_FIELD(location);
|
||||
|
||||
appendStringInfo(str, " :constvalue ");
|
||||
appendStringInfoString(str, " :constvalue ");
|
||||
if (node->constisnull)
|
||||
appendStringInfo(str, "<>");
|
||||
appendStringInfoString(str, "<>");
|
||||
else
|
||||
_outDatum(str, node->constvalue, node->constlen, node->constbyval);
|
||||
}
|
||||
@ -1104,7 +1104,7 @@ _outBoolExpr(StringInfo str, const BoolExpr *node)
|
||||
opstr = "not";
|
||||
break;
|
||||
}
|
||||
appendStringInfo(str, " :boolop ");
|
||||
appendStringInfoString(str, " :boolop ");
|
||||
_outToken(str, opstr);
|
||||
|
||||
WRITE_NODE_FIELD(args);
|
||||
@ -1477,9 +1477,9 @@ static void
|
||||
_outPathInfo(StringInfo str, const Path *node)
|
||||
{
|
||||
WRITE_ENUM_FIELD(pathtype, NodeTag);
|
||||
appendStringInfo(str, " :parent_relids ");
|
||||
appendStringInfoString(str, " :parent_relids ");
|
||||
_outBitmapset(str, node->parent->relids);
|
||||
appendStringInfo(str, " :required_outer ");
|
||||
appendStringInfoString(str, " :required_outer ");
|
||||
if (node->param_info)
|
||||
_outBitmapset(str, node->param_info->ppi_req_outer);
|
||||
else
|
||||
@ -2232,12 +2232,12 @@ _outQuery(StringInfo str, const Query *node)
|
||||
WRITE_NODE_FIELD(utilityStmt);
|
||||
break;
|
||||
default:
|
||||
appendStringInfo(str, " :utilityStmt ?");
|
||||
appendStringInfoString(str, " :utilityStmt ?");
|
||||
break;
|
||||
}
|
||||
}
|
||||
else
|
||||
appendStringInfo(str, " :utilityStmt <>");
|
||||
appendStringInfoString(str, " :utilityStmt <>");
|
||||
|
||||
WRITE_INT_FIELD(resultRelation);
|
||||
WRITE_BOOL_FIELD(hasAggs);
|
||||
@ -2421,46 +2421,46 @@ _outAExpr(StringInfo str, const A_Expr *node)
|
||||
switch (node->kind)
|
||||
{
|
||||
case AEXPR_OP:
|
||||
appendStringInfo(str, " ");
|
||||
appendStringInfoChar(str, ' ');
|
||||
WRITE_NODE_FIELD(name);
|
||||
break;
|
||||
case AEXPR_AND:
|
||||
appendStringInfo(str, " AND");
|
||||
appendStringInfoString(str, " AND");
|
||||
break;
|
||||
case AEXPR_OR:
|
||||
appendStringInfo(str, " OR");
|
||||
appendStringInfoString(str, " OR");
|
||||
break;
|
||||
case AEXPR_NOT:
|
||||
appendStringInfo(str, " NOT");
|
||||
appendStringInfoString(str, " NOT");
|
||||
break;
|
||||
case AEXPR_OP_ANY:
|
||||
appendStringInfo(str, " ");
|
||||
appendStringInfoChar(str, ' ');
|
||||
WRITE_NODE_FIELD(name);
|
||||
appendStringInfo(str, " ANY ");
|
||||
appendStringInfoString(str, " ANY ");
|
||||
break;
|
||||
case AEXPR_OP_ALL:
|
||||
appendStringInfo(str, " ");
|
||||
appendStringInfoChar(str, ' ');
|
||||
WRITE_NODE_FIELD(name);
|
||||
appendStringInfo(str, " ALL ");
|
||||
appendStringInfoString(str, " ALL ");
|
||||
break;
|
||||
case AEXPR_DISTINCT:
|
||||
appendStringInfo(str, " DISTINCT ");
|
||||
appendStringInfoString(str, " DISTINCT ");
|
||||
WRITE_NODE_FIELD(name);
|
||||
break;
|
||||
case AEXPR_NULLIF:
|
||||
appendStringInfo(str, " NULLIF ");
|
||||
appendStringInfoString(str, " NULLIF ");
|
||||
WRITE_NODE_FIELD(name);
|
||||
break;
|
||||
case AEXPR_OF:
|
||||
appendStringInfo(str, " OF ");
|
||||
appendStringInfoString(str, " OF ");
|
||||
WRITE_NODE_FIELD(name);
|
||||
break;
|
||||
case AEXPR_IN:
|
||||
appendStringInfo(str, " IN ");
|
||||
appendStringInfoString(str, " IN ");
|
||||
WRITE_NODE_FIELD(name);
|
||||
break;
|
||||
default:
|
||||
appendStringInfo(str, " ??");
|
||||
appendStringInfoString(str, " ??");
|
||||
break;
|
||||
}
|
||||
|
||||
@ -2527,7 +2527,7 @@ _outAConst(StringInfo str, const A_Const *node)
|
||||
{
|
||||
WRITE_NODE_TYPE("A_CONST");
|
||||
|
||||
appendStringInfo(str, " :val ");
|
||||
appendStringInfoString(str, " :val ");
|
||||
_outValue(str, &(node->val));
|
||||
WRITE_LOCATION_FIELD(location);
|
||||
}
|
||||
@ -2635,32 +2635,32 @@ _outConstraint(StringInfo str, const Constraint *node)
|
||||
WRITE_BOOL_FIELD(initdeferred);
|
||||
WRITE_LOCATION_FIELD(location);
|
||||
|
||||
appendStringInfo(str, " :contype ");
|
||||
appendStringInfoString(str, " :contype ");
|
||||
switch (node->contype)
|
||||
{
|
||||
case CONSTR_NULL:
|
||||
appendStringInfo(str, "NULL");
|
||||
appendStringInfoString(str, "NULL");
|
||||
break;
|
||||
|
||||
case CONSTR_NOTNULL:
|
||||
appendStringInfo(str, "NOT_NULL");
|
||||
appendStringInfoString(str, "NOT_NULL");
|
||||
break;
|
||||
|
||||
case CONSTR_DEFAULT:
|
||||
appendStringInfo(str, "DEFAULT");
|
||||
appendStringInfoString(str, "DEFAULT");
|
||||
WRITE_NODE_FIELD(raw_expr);
|
||||
WRITE_STRING_FIELD(cooked_expr);
|
||||
break;
|
||||
|
||||
case CONSTR_CHECK:
|
||||
appendStringInfo(str, "CHECK");
|
||||
appendStringInfoString(str, "CHECK");
|
||||
WRITE_BOOL_FIELD(is_no_inherit);
|
||||
WRITE_NODE_FIELD(raw_expr);
|
||||
WRITE_STRING_FIELD(cooked_expr);
|
||||
break;
|
||||
|
||||
case CONSTR_PRIMARY:
|
||||
appendStringInfo(str, "PRIMARY_KEY");
|
||||
appendStringInfoString(str, "PRIMARY_KEY");
|
||||
WRITE_NODE_FIELD(keys);
|
||||
WRITE_NODE_FIELD(options);
|
||||
WRITE_STRING_FIELD(indexname);
|
||||
@ -2669,7 +2669,7 @@ _outConstraint(StringInfo str, const Constraint *node)
|
||||
break;
|
||||
|
||||
case CONSTR_UNIQUE:
|
||||
appendStringInfo(str, "UNIQUE");
|
||||
appendStringInfoString(str, "UNIQUE");
|
||||
WRITE_NODE_FIELD(keys);
|
||||
WRITE_NODE_FIELD(options);
|
||||
WRITE_STRING_FIELD(indexname);
|
||||
@ -2678,7 +2678,7 @@ _outConstraint(StringInfo str, const Constraint *node)
|
||||
break;
|
||||
|
||||
case CONSTR_EXCLUSION:
|
||||
appendStringInfo(str, "EXCLUSION");
|
||||
appendStringInfoString(str, "EXCLUSION");
|
||||
WRITE_NODE_FIELD(exclusions);
|
||||
WRITE_NODE_FIELD(options);
|
||||
WRITE_STRING_FIELD(indexname);
|
||||
@ -2688,7 +2688,7 @@ _outConstraint(StringInfo str, const Constraint *node)
|
||||
break;
|
||||
|
||||
case CONSTR_FOREIGN:
|
||||
appendStringInfo(str, "FOREIGN_KEY");
|
||||
appendStringInfoString(str, "FOREIGN_KEY");
|
||||
WRITE_NODE_FIELD(pktable);
|
||||
WRITE_NODE_FIELD(fk_attrs);
|
||||
WRITE_NODE_FIELD(pk_attrs);
|
||||
@ -2701,19 +2701,19 @@ _outConstraint(StringInfo str, const Constraint *node)
|
||||
break;
|
||||
|
||||
case CONSTR_ATTR_DEFERRABLE:
|
||||
appendStringInfo(str, "ATTR_DEFERRABLE");
|
||||
appendStringInfoString(str, "ATTR_DEFERRABLE");
|
||||
break;
|
||||
|
||||
case CONSTR_ATTR_NOT_DEFERRABLE:
|
||||
appendStringInfo(str, "ATTR_NOT_DEFERRABLE");
|
||||
appendStringInfoString(str, "ATTR_NOT_DEFERRABLE");
|
||||
break;
|
||||
|
||||
case CONSTR_ATTR_DEFERRED:
|
||||
appendStringInfo(str, "ATTR_DEFERRED");
|
||||
appendStringInfoString(str, "ATTR_DEFERRED");
|
||||
break;
|
||||
|
||||
case CONSTR_ATTR_IMMEDIATE:
|
||||
appendStringInfo(str, "ATTR_IMMEDIATE");
|
||||
appendStringInfoString(str, "ATTR_IMMEDIATE");
|
||||
break;
|
||||
|
||||
default:
|
||||
@ -2732,7 +2732,7 @@ static void
|
||||
_outNode(StringInfo str, const void *obj)
|
||||
{
|
||||
if (obj == NULL)
|
||||
appendStringInfo(str, "<>");
|
||||
appendStringInfoString(str, "<>");
|
||||
else if (IsA(obj, List) ||IsA(obj, IntList) || IsA(obj, OidList))
|
||||
_outList(str, obj);
|
||||
else if (IsA(obj, Integer) ||
|
||||
|
Reference in New Issue
Block a user