diff --git a/contrib/hstore/hstore_io.c b/contrib/hstore/hstore_io.c index 7d89867..b405583 100644 --- a/contrib/hstore/hstore_io.c +++ b/contrib/hstore/hstore_io.c @@ -1280,7 +1280,7 @@ hstore_to_json_loose(PG_FUNCTION_ARGS) } appendStringInfoChar(&dst, '}'); - PG_RETURN_TEXT_P(cstring_to_text(dst.data)); + PG_RETURN_TEXT_P(cstring_to_text_with_len(dst.data, dst.len)); } PG_FUNCTION_INFO_V1(hstore_to_json); @@ -1323,7 +1323,7 @@ hstore_to_json(PG_FUNCTION_ARGS) } appendStringInfoChar(&dst, '}'); - PG_RETURN_TEXT_P(cstring_to_text(dst.data)); + PG_RETURN_TEXT_P(cstring_to_text_with_len(dst.data, dst.len)); } PG_FUNCTION_INFO_V1(hstore_to_jsonb); diff --git a/src/backend/executor/execMain.c b/src/backend/executor/execMain.c index 0dee949..3bc06d9 100644 --- a/src/backend/executor/execMain.c +++ b/src/backend/executor/execMain.c @@ -1969,7 +1969,7 @@ ExecBuildSlotValueDescription(Oid reloid, if (!table_perm) { appendStringInfoString(&collist, ") = "); - appendStringInfoString(&collist, buf.data); + appendBinaryStringInfo(&collist, buf.data, buf.len); return collist.data; } diff --git a/src/backend/lib/pairingheap.c b/src/backend/lib/pairingheap.c index 17278fd..53520eb 100644 --- a/src/backend/lib/pairingheap.c +++ b/src/backend/lib/pairingheap.c @@ -306,7 +306,7 @@ pairingheap_dump_recurse(StringInfo buf, appendStringInfoSpaces(buf, depth * 4); dumpfunc(node, buf, opaque); - appendStringInfoString(buf, "\n"); + appendStringInfoChar(buf, '\n'); if (node->first_child) pairingheap_dump_recurse(buf, node->first_child, dumpfunc, opaque, depth + 1, node); prev_or_parent = node; diff --git a/src/backend/storage/lmgr/deadlock.c b/src/backend/storage/lmgr/deadlock.c index aea46b2..e67e313 100644 --- a/src/backend/storage/lmgr/deadlock.c +++ b/src/backend/storage/lmgr/deadlock.c @@ -931,7 +931,7 @@ DeadLockReport(void) } /* Duplicate all the above for the server ... */ - appendStringInfoString(&logbuf, clientbuf.data); + appendBinaryStringInfo(&logbuf, clientbuf.data, clientbuf.len); /* ... and add info about query strings */ for (i = 0; i < nDeadlockDetails; i++) diff --git a/src/backend/utils/adt/ri_triggers.c b/src/backend/utils/adt/ri_triggers.c index f6bec8b..de18dc9 100644 --- a/src/backend/utils/adt/ri_triggers.c +++ b/src/backend/utils/adt/ri_triggers.c @@ -1316,7 +1316,7 @@ RI_FKey_cascade_upd(PG_FUNCTION_ARGS) queryoids[i] = pk_type; queryoids[j] = pk_type; } - appendStringInfoString(&querybuf, qualbuf.data); + appendBinaryStringInfo(&querybuf, qualbuf.data, qualbuf.len); /* Prepare and save the plan */ qplan = ri_PlanCheck(querybuf.data, riinfo->nkeys * 2, queryoids, @@ -1481,7 +1481,7 @@ RI_FKey_setnull_del(PG_FUNCTION_ARGS) qualsep = "AND"; queryoids[i] = pk_type; } - appendStringInfoString(&querybuf, qualbuf.data); + appendBinaryStringInfo(&querybuf, qualbuf.data, qualbuf.len); /* Prepare and save the plan */ qplan = ri_PlanCheck(querybuf.data, riinfo->nkeys, queryoids, @@ -1657,7 +1657,7 @@ RI_FKey_setnull_upd(PG_FUNCTION_ARGS) qualsep = "AND"; queryoids[i] = pk_type; } - appendStringInfoString(&querybuf, qualbuf.data); + appendBinaryStringInfo(&querybuf, qualbuf.data, qualbuf.len); /* Prepare and save the plan */ qplan = ri_PlanCheck(querybuf.data, riinfo->nkeys, queryoids, @@ -1823,7 +1823,7 @@ RI_FKey_setdefault_del(PG_FUNCTION_ARGS) qualsep = "AND"; queryoids[i] = pk_type; } - appendStringInfoString(&querybuf, qualbuf.data); + appendBinaryStringInfo(&querybuf, qualbuf.data, qualbuf.len); /* Prepare and save the plan */ qplan = ri_PlanCheck(querybuf.data, riinfo->nkeys, queryoids, @@ -2014,7 +2014,7 @@ RI_FKey_setdefault_upd(PG_FUNCTION_ARGS) qualsep = "AND"; queryoids[i] = pk_type; } - appendStringInfoString(&querybuf, qualbuf.data); + appendBinaryStringInfo(&querybuf, qualbuf.data, qualbuf.len); /* Prepare and save the plan */ qplan = ri_PlanCheck(querybuf.data, riinfo->nkeys, queryoids, diff --git a/src/backend/utils/adt/ruleutils.c b/src/backend/utils/adt/ruleutils.c index 903e80a..c8b4f6d 100644 --- a/src/backend/utils/adt/ruleutils.c +++ b/src/backend/utils/adt/ruleutils.c @@ -2067,9 +2067,9 @@ pg_get_functiondef(PG_FUNCTION_ARGS) appendStringInfoChar(&dq, 'x'); appendStringInfoChar(&dq, '$'); - appendStringInfoString(&buf, dq.data); + appendBinaryStringInfo(&buf, dq.data, dq.len); appendStringInfoString(&buf, prosrc); - appendStringInfoString(&buf, dq.data); + appendBinaryStringInfo(&buf, dq.data, dq.len); appendStringInfoChar(&buf, '\n'); @@ -2187,7 +2187,7 @@ print_function_rettype(StringInfo buf, HeapTuple proctup) appendStringInfoString(&rbuf, format_type_be(proc->prorettype)); } - appendStringInfoString(buf, rbuf.data); + appendBinaryStringInfo(buf, rbuf.data, rbuf.len); } /* @@ -4813,7 +4813,7 @@ get_target_list(List *targetList, deparse_context *context, } /* Add the new field */ - appendStringInfoString(buf, targetbuf.data); + appendBinaryStringInfo(buf, targetbuf.data, targetbuf.len); } /* clean up */ @@ -8494,7 +8494,7 @@ get_from_clause(Query *query, const char *prefix, deparse_context *context) } /* Add the new item */ - appendStringInfoString(buf, itembuf.data); + appendBinaryStringInfo(buf, itembuf.data, itembuf.len); /* clean up */ pfree(itembuf.data); diff --git a/src/backend/utils/adt/xml.c b/src/backend/utils/adt/xml.c index 8bb7144..f74d482 100644 --- a/src/backend/utils/adt/xml.c +++ b/src/backend/utils/adt/xml.c @@ -508,7 +508,7 @@ xmlconcat(List *args) 0, global_standalone); - appendStringInfoString(&buf2, buf.data); + appendBinaryStringInfo(&buf2, buf.data, buf.len); buf = buf2; } @@ -1680,7 +1680,8 @@ xml_errorHandler(void *data, xmlErrorPtr error) if (xmlerrcxt->strictness == PG_XML_STRICTNESS_LEGACY) { appendStringInfoLineSeparator(&xmlerrcxt->err_buf); - appendStringInfoString(&xmlerrcxt->err_buf, errorBuf->data); + appendBinaryStringInfo(&xmlerrcxt->err_buf, errorBuf->data, + errorBuf->len); pfree(errorBuf->data); pfree(errorBuf); @@ -1698,7 +1699,8 @@ xml_errorHandler(void *data, xmlErrorPtr error) if (level >= XML_ERR_ERROR) { appendStringInfoLineSeparator(&xmlerrcxt->err_buf); - appendStringInfoString(&xmlerrcxt->err_buf, errorBuf->data); + appendBinaryStringInfo(&xmlerrcxt->err_buf, errorBuf->data, + errorBuf->len); xmlerrcxt->err_occurred = true; } @@ -2473,7 +2475,7 @@ query_to_xml_internal(const char *query, char *tablename, { xmldata_root_element_start(result, xmltn, xmlschema, targetns, top_level); - appendStringInfoString(result, "\n"); + appendStringInfoChar(result, '\n'); } if (xmlschema) @@ -2637,7 +2639,7 @@ schema_to_xml_internal(Oid nspid, const char *xmlschema, bool nulls, result = makeStringInfo(); xmldata_root_element_start(result, xmlsn, xmlschema, targetns, top_level); - appendStringInfoString(result, "\n"); + appendStringInfoChar(result, '\n'); if (xmlschema) appendStringInfo(result, "%s\n\n", xmlschema); @@ -2656,7 +2658,7 @@ schema_to_xml_internal(Oid nspid, const char *xmlschema, bool nulls, subres = table_to_xml_internal(relid, NULL, nulls, tableforest, targetns, false); - appendStringInfoString(result, subres->data); + appendBinaryStringInfo(result, subres->data, subres->len); appendStringInfoChar(result, '\n'); } @@ -2815,7 +2817,7 @@ database_to_xml_internal(const char *xmlschema, bool nulls, result = makeStringInfo(); xmldata_root_element_start(result, xmlcn, xmlschema, targetns, true); - appendStringInfoString(result, "\n"); + appendStringInfoChar(result, '\n'); if (xmlschema) appendStringInfo(result, "%s\n\n", xmlschema); @@ -2834,7 +2836,7 @@ database_to_xml_internal(const char *xmlschema, bool nulls, subres = schema_to_xml_internal(nspid, NULL, nulls, tableforest, targetns, false); - appendStringInfoString(result, subres->data); + appendBinaryStringInfo(result, subres->data, subres->len); appendStringInfoChar(result, '\n'); } diff --git a/src/bin/pg_basebackup/pg_basebackup.c b/src/bin/pg_basebackup/pg_basebackup.c index 83bf2f5..49d5987 100644 --- a/src/bin/pg_basebackup/pg_basebackup.c +++ b/src/bin/pg_basebackup/pg_basebackup.c @@ -1516,7 +1516,7 @@ GenerateRecoveryConf(PGconn *conn) /* Separate key-value pairs with spaces */ if (conninfo_buf.len != 0) - appendPQExpBufferStr(&conninfo_buf, " "); + appendPQExpBufferChar(&conninfo_buf, ' '); /* * Write "keyword=value" pieces, the value string is escaped and/or diff --git a/src/bin/pg_dump/dumputils.c b/src/bin/pg_dump/dumputils.c index d7506e1..ec263c2 100644 --- a/src/bin/pg_dump/dumputils.c +++ b/src/bin/pg_dump/dumputils.c @@ -172,7 +172,7 @@ fmtQualifiedId(int remoteVersion, const char *schema, const char *id) id_return = getLocalPQExpBuffer(); - appendPQExpBufferStr(id_return, lcl_pqexp->data); + appendBinaryPQExpBuffer(id_return, lcl_pqexp->data, lcl_pqexp->len); destroyPQExpBuffer(lcl_pqexp); return id_return->data; @@ -331,9 +331,9 @@ appendStringLiteralDQ(PQExpBuffer buf, const char *str, const char *dqprefix) appendPQExpBufferChar(delimBuf, '$'); /* quote it and we are all done */ - appendPQExpBufferStr(buf, delimBuf->data); + appendBinaryPQExpBuffer(buf, delimBuf->data, delimBuf->len); appendPQExpBufferStr(buf, str); - appendPQExpBufferStr(buf, delimBuf->data); + appendBinaryPQExpBuffer(buf, delimBuf->data, delimBuf->len); destroyPQExpBuffer(delimBuf); } @@ -1065,7 +1065,7 @@ processSQLNamePattern(PGconn *conn, PQExpBuffer buf, const char *pattern, { /* Found schema/name separator, move current pattern to schema */ resetPQExpBuffer(&schemabuf); - appendPQExpBufferStr(&schemabuf, namebuf.data); + appendBinaryPQExpBuffer(&schemabuf, namebuf.data, namebuf.len); resetPQExpBuffer(&namebuf); appendPQExpBufferStr(&namebuf, "^("); cp++; diff --git a/src/bin/pg_dump/pg_backup_archiver.c b/src/bin/pg_dump/pg_backup_archiver.c index f9b564e..0d52bab 100644 --- a/src/bin/pg_dump/pg_backup_archiver.c +++ b/src/bin/pg_dump/pg_backup_archiver.c @@ -533,7 +533,7 @@ RestoreArchive(Archive *AHX) * search for hardcoded "DROP CONSTRAINT" instead. */ if (strcmp(te->desc, "DEFAULT") == 0) - appendPQExpBuffer(ftStmt, "%s", dropStmt); + appendPQExpBufferStr(ftStmt, dropStmt); else { if (strcmp(te->desc, "CONSTRAINT") == 0 || diff --git a/src/bin/pg_dump/pg_dump.c b/src/bin/pg_dump/pg_dump.c index dccb472..b915b7b 100644 --- a/src/bin/pg_dump/pg_dump.c +++ b/src/bin/pg_dump/pg_dump.c @@ -1663,7 +1663,7 @@ dumpTableData_insert(Archive *fout, DumpOptions *dopt, void *dcontext) /* append the list of column names if required */ if (dopt->column_inserts) { - appendPQExpBufferStr(insertStmt, "("); + appendPQExpBufferChar(insertStmt, '('); for (field = 0; field < nfields; field++) { if (field > 0) @@ -9550,7 +9550,7 @@ dumpCompositeType(Archive *fout, DumpOptions *dopt, TypeInfo *tyinfo) } } appendPQExpBufferStr(q, "\n);\n"); - appendPQExpBufferStr(q, dropped->data); + appendBinaryPQExpBuffer(q, dropped->data, dropped->len); /* * DROP must be fully qualified in case same name appears in pg_catalog @@ -11338,7 +11338,7 @@ dumpOpclass(Archive *fout, DumpOptions *dopt, OpclassInfo *opcinfo) appendPQExpBufferStr(q, " FAMILY "); if (strcmp(opcfamilynsp, opcinfo->dobj.namespace->dobj.name) != 0) appendPQExpBuffer(q, "%s.", fmtId(opcfamilynsp)); - appendPQExpBuffer(q, "%s", fmtId(opcfamilyname)); + appendPQExpBufferStr(q, fmtId(opcfamilyname)); } appendPQExpBufferStr(q, " AS\n "); @@ -13850,7 +13850,7 @@ dumpTableSchema(Archive *fout, DumpOptions *dopt, TableInfo *tbinfo) if (actual_atts == 0) appendPQExpBufferStr(q, " ("); else - appendPQExpBufferStr(q, ","); + appendPQExpBufferChar(q, ','); appendPQExpBufferStr(q, "\n "); actual_atts++; @@ -15283,7 +15283,7 @@ dumpEventTrigger(Archive *fout, DumpOptions *dopt, EventTriggerInfo *evtinfo) appendPQExpBufferStr(query, fmtId(evtinfo->dobj.name)); appendPQExpBufferStr(query, " ON "); appendPQExpBufferStr(query, fmtId(evtinfo->evtevent)); - appendPQExpBufferStr(query, " "); + appendPQExpBufferChar(query, ' '); if (strcmp("", evtinfo->evttags) != 0) { diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c index 04d769e..2c9b092 100644 --- a/src/bin/psql/describe.c +++ b/src/bin/psql/describe.c @@ -1611,7 +1611,7 @@ describeOneTableDetails(const char *schemaname, if (!PQgetisnull(res, i, 5)) { if (tmpbuf.len > 0) - appendPQExpBufferStr(&tmpbuf, " "); + appendPQExpBufferChar(&tmpbuf, ' '); appendPQExpBuffer(&tmpbuf, _("collate %s"), PQgetvalue(res, i, 5)); } @@ -1619,7 +1619,7 @@ describeOneTableDetails(const char *schemaname, if (strcmp(PQgetvalue(res, i, 3), "t") == 0) { if (tmpbuf.len > 0) - appendPQExpBufferStr(&tmpbuf, " "); + appendPQExpBufferChar(&tmpbuf, ' '); appendPQExpBufferStr(&tmpbuf, _("not null")); } @@ -1628,7 +1628,7 @@ describeOneTableDetails(const char *schemaname, if (strlen(PQgetvalue(res, i, 2)) != 0) { if (tmpbuf.len > 0) - appendPQExpBufferStr(&tmpbuf, " "); + appendPQExpBufferChar(&tmpbuf, ' '); /* translator: default values of column definitions */ appendPQExpBuffer(&tmpbuf, _("default %s"), PQgetvalue(res, i, 2)); @@ -2440,7 +2440,7 @@ describeOneTableDetails(const char *schemaname, printfPQExpBuffer(&buf, "%*s %s", sw, "", PQgetvalue(result, i, 0)); if (i < tuples - 1) - appendPQExpBufferStr(&buf, ","); + appendPQExpBufferChar(&buf, ','); printTableAddFooter(&cont, buf.data); } diff --git a/src/bin/psql/mainloop.c b/src/bin/psql/mainloop.c index b6cef94..f620957 100644 --- a/src/bin/psql/mainloop.c +++ b/src/bin/psql/mainloop.c @@ -345,7 +345,8 @@ MainLoop(FILE *source) query_buf->len == 0) { /* copy previous buffer to current for handling */ - appendPQExpBufferStr(query_buf, previous_buf->data); + appendBinaryPQExpBuffer(query_buf, previous_buf->data, + previous_buf->len); } if (slashCmdStatus == PSQL_CMD_SEND) diff --git a/src/bin/scripts/clusterdb.c b/src/bin/scripts/clusterdb.c index 85087af..8c0e7cf 100644 --- a/src/bin/scripts/clusterdb.c +++ b/src/bin/scripts/clusterdb.c @@ -201,7 +201,7 @@ cluster_one_database(const char *dbname, bool verbose, const char *table, appendPQExpBufferStr(&sql, " VERBOSE"); if (table) appendPQExpBuffer(&sql, " %s", table); - appendPQExpBufferStr(&sql, ";"); + appendPQExpBufferChar(&sql, ';'); conn = connectDatabase(dbname, host, port, username, prompt_password, progname, false); diff --git a/src/bin/scripts/createdb.c b/src/bin/scripts/createdb.c index a958bb8..4d3fb22 100644 --- a/src/bin/scripts/createdb.c +++ b/src/bin/scripts/createdb.c @@ -195,7 +195,7 @@ main(int argc, char *argv[]) if (lc_ctype) appendPQExpBuffer(&sql, " LC_CTYPE '%s'", lc_ctype); - appendPQExpBufferStr(&sql, ";"); + appendPQExpBufferChar(&sql, ';'); /* No point in trying to use postgres db when creating postgres db. */ if (maintenance_db == NULL && strcmp(dbname, "postgres") == 0) @@ -222,7 +222,7 @@ main(int argc, char *argv[]) { printfPQExpBuffer(&sql, "COMMENT ON DATABASE %s IS ", fmtId(dbname)); appendStringLiteralConn(&sql, comment, conn); - appendPQExpBufferStr(&sql, ";"); + appendPQExpBufferChar(&sql, ';'); if (echo) printf("%s\n", sql.data); diff --git a/src/bin/scripts/createuser.c b/src/bin/scripts/createuser.c index fba21a1..6fc898e 100644 --- a/src/bin/scripts/createuser.c +++ b/src/bin/scripts/createuser.c @@ -318,10 +318,10 @@ main(int argc, char *argv[]) if (cell->next) appendPQExpBuffer(&sql, "%s,", fmtId(cell->val)); else - appendPQExpBuffer(&sql, "%s", fmtId(cell->val)); + appendPQExpBufferStr(&sql, fmtId(cell->val)); } } - appendPQExpBufferStr(&sql, ";"); + appendPQExpBufferChar(&sql, ';'); if (echo) printf("%s\n", sql.data); diff --git a/src/bin/scripts/reindexdb.c b/src/bin/scripts/reindexdb.c index 778d72a..1f85b3e 100644 --- a/src/bin/scripts/reindexdb.c +++ b/src/bin/scripts/reindexdb.c @@ -281,7 +281,7 @@ reindex_one_database(const char *name, const char *dbname, const char *type, appendPQExpBuffer(&sql, " SCHEMA %s", name); else if (strcmp(type, "DATABASE") == 0) appendPQExpBuffer(&sql, " DATABASE %s", fmtId(name)); - appendPQExpBufferStr(&sql, ";"); + appendPQExpBufferChar(&sql, ';'); conn = connectDatabase(dbname, host, port, username, prompt_password, progname, false); diff --git a/src/bin/scripts/vacuumdb.c b/src/bin/scripts/vacuumdb.c index 2cd4aa6..99e0a8a 100644 --- a/src/bin/scripts/vacuumdb.c +++ b/src/bin/scripts/vacuumdb.c @@ -392,7 +392,7 @@ vacuum_one_database(const char *dbname, vacuumingOptions *vacopts, ntups = PQntuples(res); for (i = 0; i < ntups; i++) { - appendPQExpBuffer(&buf, "%s", + appendPQExpBufferStr(&buf, fmtQualifiedId(PQserverVersion(conn), PQgetvalue(res, i, 1), PQgetvalue(res, i, 0))); @@ -643,7 +643,7 @@ prepare_vacuum_command(PQExpBuffer sql, PGconn *conn, vacuumingOptions *vacopts, sep = comma; } if (sep != paren) - appendPQExpBufferStr(sql, ")"); + appendPQExpBufferChar(sql, ')'); } else { diff --git a/src/interfaces/libpq/fe-protocol3.c b/src/interfaces/libpq/fe-protocol3.c index a847f08..aa9409e 100644 --- a/src/interfaces/libpq/fe-protocol3.c +++ b/src/interfaces/libpq/fe-protocol3.c @@ -971,7 +971,8 @@ pqGetErrorNotice3(PGconn *conn, bool isError) goto fail; pqClearAsyncResult(conn); conn->result = res; - appendPQExpBufferStr(&conn->errorMessage, workBuf.data); + appendBinaryPQExpBuffer(&conn->errorMessage, workBuf.data, + workBuf.len); } else {