PostgreSQL Source Code git master
stringinfo.c File Reference
#include "postgres.h"
#include "utils/memutils.h"
#include "lib/stringinfo.h"
Include dependency graph for stringinfo.c:

Go to the source code of this file.

Functions

static void initStringInfoInternal (StringInfo str, int initsize)
 
static StringInfo makeStringInfoInternal (int initsize)
 
StringInfo makeStringInfo (void)
 
StringInfo makeStringInfoExt (int initsize)
 
void initStringInfo (StringInfo str)
 
void initStringInfoExt (StringInfo str, int initsize)
 
void resetStringInfo (StringInfo str)
 
void appendStringInfo (StringInfo str, const char *fmt,...)
 
int appendStringInfoVA (StringInfo str, const char *fmt, va_list args)
 
void appendStringInfoString (StringInfo str, const char *s)
 
void appendStringInfoChar (StringInfo str, char ch)
 
void appendStringInfoSpaces (StringInfo str, int count)
 
void appendBinaryStringInfo (StringInfo str, const void *data, int datalen)
 
void appendBinaryStringInfoNT (StringInfo str, const void *data, int datalen)
 
void enlargeStringInfo (StringInfo str, int needed)
 
void destroyStringInfo (StringInfo str)
 

Function Documentation

◆ appendBinaryStringInfo()

void appendBinaryStringInfo ( StringInfo  str,
const void *  data,
int  datalen 
)

Definition at line 281 of file stringinfo.c.

282{
283 Assert(str != NULL);
284
285 /* Make more room if needed */
286 enlargeStringInfo(str, datalen);
287
288 /* OK, append the data */
289 memcpy(str->data + str->len, data, datalen);
290 str->len += datalen;
291
292 /*
293 * Keep a trailing null in place, even though it's probably useless for
294 * binary data. (Some callers are dealing with text but call this because
295 * their input isn't null-terminated.)
296 */
297 str->data[str->len] = '\0';
298}
#define Assert(condition)
Definition: c.h:815
const char * str
const void * data
void enlargeStringInfo(StringInfo str, int needed)
Definition: stringinfo.c:337

References Assert, data, enlargeStringInfo(), and str.

Referenced by addlit(), AppendIncrementalManifestData(), appendStringInfoRegexpSubstr(), appendStringInfoString(), appendStringInfoText(), astreamer_buffer_bytes(), buf_add_txid(), buf_init(), bytea_string_agg_transfn(), composite_to_json(), config_enum_get_options(), CopySendData(), CopySendString(), database_to_xml_internal(), datum_to_json_internal(), DeadLockReport(), deparseFromExprForRel(), escape_json_with_len(), ExecBuildSlotPartitionKeyDescription(), ExecBuildSlotValueDescription(), flattenJsonPathParseItem(), get_from_clause(), get_target_list(), HandleParallelApplyMessages(), HandleParallelMessages(), hstore_to_json_loose(), hstore_to_jsonb_loose(), jsonb_put_escaped_value(), JsonbToCStringWorker(), log_status_format(), main(), map_sql_identifier_to_xml_name(), map_xml_name_to_sql_identifier(), multirange_recv(), parse_fcall_arguments(), pg_decode_message(), pg_decode_stream_message(), pg_get_functiondef(), plpgsql_append_source_text(), pq_sendbytes(), pq_sendtext(), print_function_rettype(), process_pipe_input(), range_recv(), rebuildInsertSql(), replace_text(), replace_text_regexp(), reserveSpaceForItemPointer(), RI_FKey_cascade_upd(), schema_to_xml_internal(), string_agg_combine(), string_agg_deserialize(), testcustomrmgrs_desc(), unaccent_lexize(), write_csvlog(), write_jsonlog(), XLogInsertRecord(), and xmlconcat().

◆ appendBinaryStringInfoNT()

void appendBinaryStringInfoNT ( StringInfo  str,
const void *  data,
int  datalen 
)

Definition at line 307 of file stringinfo.c.

308{
309 Assert(str != NULL);
310
311 /* Make more room if needed */
312 enlargeStringInfo(str, datalen);
313
314 /* OK, append the data */
315 memcpy(str->data + str->len, data, datalen);
316 str->len += datalen;
317}

References Assert, data, enlargeStringInfo(), and str.

Referenced by appendStringInfoStringQuoted(), pq_sendcountedtext(), and pq_sendstring().

◆ appendStringInfo()

void appendStringInfo ( StringInfo  str,
const char *  fmt,
  ... 
)

Definition at line 145 of file stringinfo.c.

146{
147 int save_errno = errno;
148
149 for (;;)
150 {
151 va_list args;
152 int needed;
153
154 /* Try to format the data. */
155 errno = save_errno;
156 va_start(args, fmt);
157 needed = appendStringInfoVA(str, fmt, args);
158 va_end(args);
159
160 if (needed == 0)
161 break; /* success */
162
163 /* Increase the buffer size and try again. */
164 enlargeStringInfo(str, needed);
165 }
166}
static void const char * fmt
va_end(args)
va_start(args, fmt)
int appendStringInfoVA(StringInfo str, const char *fmt, va_list args)
Definition: stringinfo.c:187

References appendStringInfoVA(), generate_unaccent_rules::args, enlargeStringInfo(), fmt, str, va_end(), and va_start().

Referenced by _outForeignKeyOptInfo(), _outInteger(), _outList(), add_cast_to(), add_file_to_manifest(), AddFileToBackupManifest(), append_num_word(), appendFunctionName(), appendStringInfoStringQuoted(), array_to_text_internal(), BackendInitialize(), bqarr_in(), brin_bloom_summary_out(), brin_desc(), brin_minmax_multi_summary_out(), btree_desc(), build_backup_content(), build_tuple_value_details(), build_tuplestore_recursively(), BuildIndexValueDescription(), BuildParamLogString(), check_publications_origin(), CheckAlterSubOption(), checkSharedDependencies(), clog_desc(), commit_ts_desc(), copy_table(), create_cursor(), create_manifest_writer(), CreateSchemaCommand(), database_to_xml_internal(), dbase_desc(), dblink_close(), dblink_fetch(), dblink_open(), DeadLockReport(), decompile_column_index_array(), default_desc(), delvacuum_desc(), deparseAnalyzeSizeSql(), deparseAnalyzeSql(), deparseArrayExpr(), deparseBoolExpr(), deparseColumnRef(), deparseConst(), deparseDirectDeleteSql(), deparseDirectUpdateSql(), deparseFromExprForRel(), deparseFuncExpr(), deparseInsertSql(), deparseLockingClause(), deparseOperatorName(), deparseRangeTblRef(), deparseRelabelType(), deparseRelation(), deparseScalarArrayOpExpr(), deparseSortGroupClause(), deparseTruncateSql(), deparseUpdateSql(), deparseVar(), desc_recompress_leaf(), DescribeLockTag(), do_analyze_rel(), do_pg_backup_start(), errdetail_apply_conflict(), escape_json(), escape_json_char(), ExecBuildSlotPartitionKeyDescription(), ExecEvalXmlExpr(), execute_extension_script(), ExplainIndexScanDetails(), ExplainNode(), ExplainOpenGroup(), ExplainOpenWorker(), ExplainPrintJIT(), ExplainPrintSerialize(), ExplainPrintSettings(), ExplainProperty(), ExplainPropertyList(), ExplainTargetRel(), ExportSnapshot(), fetch_remote_table_info(), fetch_table_list(), finalize_manifest(), flatten_set_variable_args(), format_expr_params(), format_node_dump(), format_operator_extended(), format_preparedparamsdata(), format_procedure_extended(), FreePageManagerDump(), FreePageManagerDumpBtree(), FreePageManagerDumpSpans(), fsm_page_contents(), funcname_signature_string(), generate_operator_clause(), generate_operator_name(), generic_desc(), get_agg_expr_helper(), get_coercion_expr(), get_connect_string(), get_const_collation(), get_const_expr(), get_delete_query_def(), get_from_clause_coldeflist(), get_from_clause_item(), get_func_expr(), get_func_sql_syntax(), get_insert_query_def(), get_json_behavior(), get_json_constructor(), get_json_format(), get_json_returning(), get_json_table(), get_json_table_columns(), get_json_table_nested_columns(), get_merge_query_def(), get_opclass_name(), get_oper_expr(), get_parameter(), get_reloptions(), get_returning_clause(), get_rte_alias(), get_rule_expr(), get_rule_expr_funccall(), get_rule_orderby(), get_rule_sortgroupclause(), get_rule_windowclause(), get_select_query_def(), get_sql_delete(), get_sql_insert(), get_sql_update(), get_sublink_expr(), get_tablesample_def(), get_target_list(), get_tuple_of_interest(), get_update_query_def(), get_utility_query_def(), get_variable(), get_windowfunc_expr_helper(), get_with_clause(), get_xmltable(), getObjectDescription(), getObjectIdentityParts(), getOpFamilyDescription(), getOpFamilyIdentity(), getRelationDescription(), gin_desc(), gist_page_items(), hash_desc(), heap2_desc(), heap_desc(), heap_vacuum_rel(), incompatible_module_error(), infobits_desc(), initialize_worker_spi(), isolation_start_test(), KnownAssignedXidsDisplay(), libpqrcv_alter_slot(), libpqrcv_create_slot(), libpqrcv_startstreaming(), log_status_format(), logicalmsg_desc(), logicalrep_get_attrs_str(), LogRecoveryConflict(), make_ruledef(), make_temptable_name_n(), map_multipart_sql_identifier_to_xml_name(), map_sql_catalog_to_xmlschema_types(), map_sql_identifier_to_xml_name(), map_sql_schema_to_xmlschema_types(), map_sql_table_to_xmlschema(), map_sql_type_to_xml_name(), map_sql_type_to_xmlschema_type(), map_sql_typecoll_to_xmlschema_types(), multixact_desc(), mxid_to_string(), offset_elem_desc(), oid_elem_desc(), op_signature_string(), out_gistxlogDelete(), out_gistxlogPageDelete(), out_gistxlogPageReuse(), out_gistxlogPageSplit(), out_member(), outBitmapset(), outDatum(), pair_encode(), PerformAuthentication(), PerformWalRecovery(), pg_decode_commit_prepared_txn(), pg_decode_commit_txn(), pg_decode_message(), pg_decode_prepare_txn(), pg_decode_rollback_prepared_txn(), pg_decode_stream_abort(), pg_decode_stream_change(), pg_decode_stream_commit(), pg_decode_stream_message(), pg_decode_stream_prepare(), pg_decode_stream_stop(), pg_decode_stream_truncate(), pg_dependencies_out(), pg_get_constraintdef_worker(), pg_get_functiondef(), pg_get_indexdef_worker(), pg_get_partkeydef_worker(), pg_get_statisticsobj_worker(), pg_get_triggerdef_worker(), pg_get_wait_events(), pg_ndistinct_out(), pg_output_begin(), pg_output_stream_start(), pg_snapshot_out(), pg_sync_replication_slots(), pgp_armor_encode(), plan_elem_desc(), PLy_traceback(), populate_array_report_expected_array(), postgresAcquireSampleRowsFunc(), postgresExplainForeignScan(), postgresImportForeignSchema(), PostmasterMain(), pretty_format_node_dump(), print_function_arguments(), print_function_trftypes(), print_literal(), printJsonPathItem(), printRemoteParam(), printRemotePlaceholder(), process_pgfdw_appname(), process_queued_fetch_requests(), processIndirection(), ProcSleep(), psql_end_command(), psql_start_command(), psql_start_test(), query_to_xml_internal(), quote_object_name(), quote_qualified_identifier(), rebuildInsertSql(), redirect_elem_desc(), refresh_by_match_merge(), regression_main(), relmap_desc(), ReplicationSlotDropAtPubNode(), replorigin_desc(), ReplSlotSyncWorkerMain(), report_triggers(), reportDependentObjects(), ReportSlotInvalidation(), ri_Check_Pk_Match(), RI_FKey_cascade_del(), RI_FKey_cascade_upd(), RI_FKey_check(), ri_GenerateQual(), ri_GenerateQualCollation(), RI_Initial_Check(), RI_PartitionRemove_Check(), ri_restrict(), ri_set(), schema_get_xml_visible_tables(), schema_to_xml_internal(), send_message_to_frontend(), send_message_to_server_log(), sepgsql_attribute_post_create(), sepgsql_audit_log(), sepgsql_proc_post_create(), sepgsql_relation_post_create(), seq_desc(), serialize_deflist(), set_backtrace(), show_buffer_usage(), show_hash_info(), show_hashagg_info(), show_incremental_sort_group_info(), show_memoize_info(), show_memory_counters(), show_modifytable_info(), show_sort_info(), show_sortorder_options(), show_storage_info(), show_tablesample(), show_tidbitmap_info(), show_wal_usage(), ShowTransactionStateRec(), ShowUsage(), smgr_desc(), spg_desc(), SPI_sql_row_to_xmlelement(), standby_desc(), standby_desc_invalidations(), standby_desc_running_xacts(), storeObjectDescription(), table_to_xml_internal(), tblspc_desc(), test_status_failed(), testcustomrmgrs_desc(), validate_remote_info(), verify_cb(), worker_spi_main(), write_csvlog(), write_reconstructed_file(), xact_desc(), xact_desc_abort(), xact_desc_assignment(), xact_desc_commit(), xact_desc_prepare(), xact_desc_relations(), xact_desc_stats(), xact_desc_subxacts(), xlog_block_info(), xlog_desc(), xlog_outdesc(), XLogInsertRecord(), XLogRecGetBlockRefInfo(), xmldata_root_element_end(), xmldata_root_element_start(), xmlpi(), xpath_table(), and xsd_schema_element_start().

◆ appendStringInfoChar()

void appendStringInfoChar ( StringInfo  str,
char  ch 
)

Definition at line 242 of file stringinfo.c.

243{
244 /* Make more room if needed */
245 if (str->len + 1 >= str->maxlen)
247
248 /* OK, append the character */
249 str->data[str->len] = ch;
250 str->len++;
251 str->data[str->len] = '\0';
252}

References enlargeStringInfo(), and str.

Referenced by _outList(), _outString(), add_file_to_manifest(), AddFileToBackupManifest(), addlitchar(), appendConditions(), appendContextKeyword(), appendJSONKeyValue(), appendStringInfoRegexpSubstr(), appendTypeNameToBuffer(), array_desc(), array_dim_to_json(), brin_bloom_summary_out(), brin_minmax_multi_summary_out(), brin_page_items(), build_tuple_value_details(), BuildIndexValueDescription(), check_publications(), CheckSASLAuth(), circle_out(), composite_to_json(), copy_table(), cube_out(), cursor_to_xml(), database_to_xml_internal(), datum_to_json_internal(), DeadLockReport(), delvacuum_desc(), deparseAggref(), deparseArrayExpr(), deparseBoolExpr(), deparseCaseExpr(), deparseColumnRef(), deparseDistinctExpr(), deparseFromExprForRel(), deparseFuncExpr(), deparseInsertSql(), deparseNullTest(), deparseOpExpr(), deparseRangeTblRef(), deparseScalarArrayOpExpr(), deparseSortGroupClause(), deparseStringLiteral(), deparseSubscriptingRef(), do_pg_backup_start(), escape_param_str(), exec_stmt_raise(), ExecBuildSlotPartitionKeyDescription(), ExecBuildSlotValueDescription(), ExplainBeginOutput(), ExplainCloseGroup(), ExplainJSONLineEnding(), ExplainNode(), ExplainOpenGroup(), ExplainProperty(), ExplainPropertyList(), ExplainPropertyListNested(), ExplainSeparatePlans(), ExplainXMLTag(), ExplainYAMLLineStarting(), flattenJsonPathParseItem(), format_procedure_extended(), FreePageManagerDumpBtree(), FreePageManagerDumpSpans(), funcname_signature_string(), generate_operator_name(), get_agg_expr_helper(), get_basic_select_query(), get_coercion_expr(), get_column_alias_list(), get_delete_query_def(), get_from_clause_coldeflist(), get_from_clause_item(), get_func_expr(), get_func_sql_syntax(), get_insert_query_def(), get_json_constructor(), get_json_table(), get_json_table_columns(), get_json_table_nested_columns(), get_merge_query_def(), get_oper_expr(), get_parameter(), get_range_partbound_string(), get_returning_clause(), get_rule_expr(), get_rule_expr_paren(), get_rule_groupingset(), get_rule_sortgroupclause(), get_rule_windowspec(), get_setop_query(), get_special_variable(), get_sql_insert(), get_sublink_expr(), get_tablesample_def(), get_update_query_def(), get_update_query_targetlist_def(), get_values_def(), get_variable(), get_windowfunc_expr_helper(), get_with_clause(), get_xmltable(), GetPublicationsStr(), gist_page_items(), hstore_to_json(), hstore_to_json_loose(), incompatible_module_error(), infobits_desc(), InteractiveBackend(), json_agg_transfn_worker(), json_build_array_worker(), json_build_object_worker(), json_object(), json_object_two_arg(), libpqrcv_create_slot(), libpqrcv_startstreaming(), log_status_format(), make_ruledef(), make_viewdef(), multirange_out(), mxid_to_string(), NameListToQuotedString(), NameListToString(), next_token(), outBitmapset(), outDatum(), outNode(), outToken(), path_encode(), pg_decode_change(), pg_dependencies_out(), pg_get_constraintdef_worker(), pg_get_functiondef(), pg_get_indexdef_worker(), pg_get_partkeydef_worker(), pg_get_statisticsobj_worker(), pg_get_triggerdef_worker(), pg_ndistinct_out(), pg_snapshot_out(), pg_split_opts(), pgp_armor_encode(), postgresExplainForeignScan(), postgresImportForeignSchema(), pq_send_ascii_string(), print_function_arguments(), print_function_rettype(), print_function_sqlbody(), print_function_trftypes(), print_literal(), printJsonPathItem(), printSubscripts(), process_pgfdw_appname(), process_queued_fetch_requests(), psql_add_command(), query_to_xml_internal(), range_bound_escape(), range_deparse(), range_parse_bound(), ReadArrayToken(), rebuildInsertSql(), record_in(), record_out(), replace_percent_placeholders(), reportDependentObjects(), RI_Initial_Check(), RI_PartitionRemove_Check(), schema_to_xml_internal(), scram_get_mechanisms(), send_message_to_frontend(), send_message_to_server_log(), sepgsql_proc_post_create(), serialize_deflist(), show_buffer_usage(), show_hashagg_info(), show_incremental_sort_info(), show_memory_counters(), show_modifytable_info(), show_tablesample(), show_tidbitmap_info(), show_wal_usage(), simple_quote_literal(), SPI_sql_row_to_xmlelement(), storeObjectDescription(), stringlist_to_identifierstr(), test_status_failed(), tokenize_auth_file(), truncate_flags_desc(), tuple_to_stringinfo(), TypeNameListToString(), unistr(), verify_cb(), write_csvlog(), write_jsonlog(), writeNodeArray(), xlog_outdesc(), XLogRecGetBlockRefInfo(), and xmlpi().

◆ appendStringInfoSpaces()

void appendStringInfoSpaces ( StringInfo  str,
int  count 
)

Definition at line 260 of file stringinfo.c.

261{
262 if (count > 0)
263 {
264 /* Make more room if needed */
265 enlargeStringInfo(str, count);
266
267 /* OK, append the spaces */
268 memset(&str->data[str->len], ' ', count);
269 str->len += count;
270 str->data[str->len] = '\0';
271 }
272}

References enlargeStringInfo(), and str.

Referenced by add_indent(), appendContextKeyword(), ExplainCloseGroup(), ExplainDummyGroup(), ExplainIndentText(), ExplainOpenGroup(), ExplainProperty(), ExplainPropertyList(), ExplainPropertyListNested(), ExplainXMLTag(), ExplainYAMLLineStarting(), flattenJsonPathParseItem(), jsonPathFromCstring(), log_status_format(), show_hashagg_info(), show_incremental_sort_group_info(), and text_format_append_string().

◆ appendStringInfoString()

void appendStringInfoString ( StringInfo  str,
const char *  s 
)

Definition at line 230 of file stringinfo.c.

231{
232 appendBinaryStringInfo(str, s, strlen(s));
233}
void appendBinaryStringInfo(StringInfo str, const void *data, int datalen)
Definition: stringinfo.c:281

References appendBinaryStringInfo(), and str.

Referenced by _outA_Const(), _outA_Expr(), _outBoolean(), _outBoolExpr(), _outConst(), _outFloat(), _outForeignKeyOptInfo(), add_file_to_manifest(), AddFileToBackupManifest(), append_num_word(), appendAggOrderBy(), appendConditions(), appendContextKeyword(), appendFunctionName(), appendGroupByClause(), appendJSONKeyValue(), appendLimitClause(), appendOrderByClause(), appendOrderBySuffix(), appendTypeNameToBuffer(), appendWhereClause(), array_desc(), array_dim_to_json(), array_to_json_internal(), array_to_text_internal(), BackendInitialize(), brin_page_items(), build_backup_content(), build_tuple_value_details(), build_tuplestore_recursively(), BuildIndexValueDescription(), BuildParamLogString(), cash_words(), check_publications(), check_publications_origin(), concat_internal(), config_enum_get_options(), copy_table(), CreateSchemaCommand(), cube_out(), database_to_xmlschema_internal(), datum_to_json_internal(), dbase_desc(), decompile_column_index_array(), delvacuum_desc(), deparseAggref(), deparseAnalyzeInfoSql(), deparseAnalyzeSizeSql(), deparseAnalyzeSql(), deparseArrayExpr(), deparseBoolExpr(), deparseCaseExpr(), deparseColumnRef(), deparseConst(), deparseDeleteSql(), deparseDirectDeleteSql(), deparseDirectUpdateSql(), deparseDistinctExpr(), deparseExplicitTargetList(), deparseFromExpr(), deparseFromExprForRel(), deparseFuncExpr(), deparseInsertSql(), deparseLockingClause(), deparseNullTest(), deparseOperatorName(), deparseRangeTblRef(), deparseSelectSql(), deparseSelectStmtForRel(), deparseSubqueryTargetList(), deparseTargetList(), deparseTruncateSql(), deparseUpdateSql(), ecpg_start_test(), escape_json(), escape_json_char(), escape_xml(), estimate_path_cost_size(), exec_stmt_raise(), ExecBuildSlotPartitionKeyDescription(), ExecBuildSlotValueDescription(), execute_extension_script(), ExplainBeginOutput(), ExplainDummyGroup(), ExplainEndOutput(), ExplainFlushWorkersState(), ExplainIndexScanDetails(), ExplainNode(), ExplainOnePlan(), ExplainOneUtility(), ExplainOpenGroup(), ExplainPrintJIT(), ExplainPrintSettings(), ExplainProperty(), ExplainPropertyList(), ExplainPropertyListNested(), ExplainQuery(), ExplainTargetRel(), ExplainXMLTag(), ExportSnapshot(), fetch_table_list(), finalize_manifest(), flatten_set_variable_args(), format_expr_params(), format_operator_extended(), format_preparedparamsdata(), format_procedure_extended(), FreePageManagerDump(), funcname_signature_string(), generate_operator_clause(), generate_operator_name(), get_agg_expr_helper(), get_basic_select_query(), get_column_alias_list(), get_const_expr(), get_from_clause(), get_from_clause_coldeflist(), get_from_clause_item(), get_func_expr(), get_func_sql_syntax(), get_insert_query_def(), get_json_behavior(), get_json_constructor(), get_json_constructor_options(), get_json_expr_options(), get_json_format(), get_json_table(), get_json_table_columns(), get_merge_query_def(), get_parameter(), get_query_def(), get_range_partbound_string(), get_reloptions(), get_rule_expr(), get_rule_expr_funccall(), get_rule_groupingset(), get_rule_list_toplevel(), get_rule_orderby(), get_rule_windowclause(), get_rule_windowspec(), get_select_query_def(), get_setop_query(), get_sql_delete(), get_sql_insert(), get_sql_update(), get_sublink_expr(), get_tablesample_def(), get_target_list(), get_tuple_of_interest(), get_update_query_def(), get_update_query_targetlist_def(), get_utility_query_def(), get_values_def(), get_variable(), get_windowfunc_expr_helper(), get_with_clause(), get_xmltable(), getConstraintTypeDescription(), getObjectIdentityParts(), getObjectTypeDescription(), getProcedureTypeDescription(), GetPublicationsStr(), getRelationIdentity(), getRelationTypeDescription(), gin_desc(), gist_page_items(), heap2_desc(), heap_desc(), heap_vacuum_rel(), hstore_to_json(), hstore_to_json_loose(), incompatible_module_error(), infobits_desc(), json_agg_transfn_worker(), json_build_array_worker(), json_build_object_worker(), json_lex_string(), json_object(), json_object_agg_transfn_worker(), json_object_two_arg(), jsonb_put_escaped_value(), jsonPathToCstring(), libpqrcv_alter_slot(), libpqrcv_create_slot(), libpqrcv_startstreaming(), log_status_format(), main(), make_ruledef(), make_temptable_name_n(), map_multipart_sql_identifier_to_xml_name(), map_sql_catalog_to_xmlschema_types(), map_sql_identifier_to_xml_name(), map_sql_schema_to_xmlschema_types(), map_sql_table_to_xmlschema(), map_sql_type_to_xml_name(), map_sql_type_to_xmlschema_type(), map_sql_value_to_xml_value(), map_xml_name_to_sql_identifier(), multirange_out(), NameListToQuotedString(), NameListToString(), op_signature_string(), out_member(), outChar(), outDatum(), outDouble(), outNode(), outToken(), PerformWalRecovery(), pg_decode_change(), pg_decode_commit_txn(), pg_decode_stream_abort(), pg_decode_stream_change(), pg_decode_stream_commit(), pg_decode_stream_stop(), pg_decode_stream_truncate(), pg_decode_truncate(), pg_dependencies_out(), pg_extension_update_paths(), pg_get_constraintdef_worker(), pg_get_functiondef(), pg_get_indexdef_worker(), pg_get_partkeydef_worker(), pg_get_statisticsobj_worker(), pg_get_triggerdef_worker(), pg_ndistinct_out(), pg_output_begin(), pg_output_stream_start(), pg_sync_replication_slots(), pgp_armor_encode(), plan_elem_desc(), PLy_traceback(), postgresExplainForeignScan(), postgresImportForeignSchema(), PostmasterMain(), print_function_arguments(), print_function_rettype(), print_function_sqlbody(), print_function_trftypes(), print_literal(), printJsonPathItem(), process_pgfdw_appname(), psql_add_command(), quote_object_name(), quote_qualified_identifier(), range_deparse(), rebuildInsertSql(), refresh_by_match_merge(), regression_main(), replace_percent_placeholders(), ReplSlotSyncWorkerMain(), report_triggers(), ReportSlotInvalidation(), ri_Check_Pk_Match(), RI_FKey_check(), RI_Initial_Check(), RI_PartitionRemove_Check(), ri_ReportViolation(), ri_restrict(), schema_to_xmlschema_internal(), scram_get_mechanisms(), send_message_to_frontend(), send_message_to_server_log(), sepgsql_audit_log(), sepgsql_database_post_create(), sepgsql_proc_post_create(), sepgsql_schema_post_create(), serialize_deflist(), set_backtrace(), show_buffer_usage(), show_incremental_sort_group_info(), show_memoize_info(), show_modifytable_info(), show_sort_group_keys(), show_sortorder_options(), show_tablesample(), show_tidbitmap_info(), show_wal_usage(), ShowUsage(), single_encode(), smgr_desc(), sn_scalar(), spg_desc(), SPI_sql_row_to_xmlelement(), standby_desc_invalidations(), standby_desc_running_xacts(), stringlist_to_identifierstr(), text_format_append_string(), tokenize_auth_file(), transform_string_values_scalar(), transformJsonTableColumn(), truncate_flags_desc(), tuple_to_stringinfo(), unistr(), write_auto_conf_file(), write_csvlog(), writeNodeArray(), xact_desc_abort(), xact_desc_assignment(), xact_desc_commit(), xact_desc_prepare(), xact_desc_subxacts(), xlog_block_info(), xlog_desc(), xlog_outdesc(), XLogInsertRecord(), XLogRecGetBlockRefInfo(), xml_out_internal(), xmlcomment(), xmlconcat(), xmldata_root_element_start(), xmlpi(), xmlroot(), xsd_schema_element_end(), and xsd_schema_element_start().

◆ appendStringInfoVA()

int appendStringInfoVA ( StringInfo  str,
const char *  fmt,
va_list  args 
)

Definition at line 187 of file stringinfo.c.

188{
189 int avail;
190 size_t nprinted;
191
192 Assert(str != NULL);
193
194 /*
195 * If there's hardly any space, don't bother trying, just fail to make the
196 * caller enlarge the buffer first. We have to guess at how much to
197 * enlarge, since we're skipping the formatting work.
198 */
199 avail = str->maxlen - str->len;
200 if (avail < 16)
201 return 32;
202
203 nprinted = pvsnprintf(str->data + str->len, (size_t) avail, fmt, args);
204
205 if (nprinted < (size_t) avail)
206 {
207 /* Success. Note nprinted does not include trailing null. */
208 str->len += (int) nprinted;
209 return 0;
210 }
211
212 /* Restore the trailing null so that str is unmodified. */
213 str->data[str->len] = '\0';
214
215 /*
216 * Return pvsnprintf's estimate of the space needed. (Although this is
217 * given as a size_t, we know it will fit in int because it's not more
218 * than MaxAllocSize.)
219 */
220 return (int) nprinted;
221}
size_t pvsnprintf(char *buf, size_t len, const char *fmt, va_list args)
Definition: psprintf.c:103

References generate_unaccent_rules::args, Assert, fmt, pvsnprintf(), and str.

Referenced by appendStringInfo(), manifest_report_error(), PLy_elog_impl(), psql_add_command(), and ReportWalSummaryError().

◆ destroyStringInfo()

void destroyStringInfo ( StringInfo  str)

Definition at line 409 of file stringinfo.c.

410{
411 /* don't allow destroys of read-only StringInfos */
412 Assert(str->maxlen != 0);
413
414 pfree(str->data);
415 pfree(str);
416}
void pfree(void *pointer)
Definition: mcxt.c:1521

References Assert, pfree(), and str.

Referenced by check_backup_label_files(), check_publications(), fetch_remote_table_info(), fetch_table_list(), jsonb_send(), perform_base_backup(), and psql_end_command().

◆ enlargeStringInfo()

void enlargeStringInfo ( StringInfo  str,
int  needed 
)

Definition at line 337 of file stringinfo.c.

338{
339 int newlen;
340
341 /* validate this is not a read-only StringInfo */
342 Assert(str->maxlen != 0);
343
344 /*
345 * Guard against out-of-range "needed" values. Without this, we can get
346 * an overflow or infinite loop in the following.
347 */
348 if (needed < 0) /* should not happen */
349 {
350#ifndef FRONTEND
351 elog(ERROR, "invalid string enlargement request size: %d", needed);
352#else
353 fprintf(stderr, "invalid string enlargement request size: %d\n", needed);
355#endif
356 }
357 if (((Size) needed) >= (MaxAllocSize - (Size) str->len))
358 {
359#ifndef FRONTEND
361 (errcode(ERRCODE_PROGRAM_LIMIT_EXCEEDED),
362 errmsg("string buffer exceeds maximum allowed length (%zu bytes)", MaxAllocSize),
363 errdetail("Cannot enlarge string buffer containing %d bytes by %d more bytes.",
364 str->len, needed)));
365#else
366 fprintf(stderr,
367 _("string buffer exceeds maximum allowed length (%zu bytes)\n\nCannot enlarge string buffer containing %d bytes by %d more bytes.\n"),
368 MaxAllocSize, str->len, needed);
370#endif
371 }
372
373 needed += str->len + 1; /* total space required now */
374
375 /* Because of the above test, we now have needed <= MaxAllocSize */
376
377 if (needed <= str->maxlen)
378 return; /* got enough space already */
379
380 /*
381 * We don't want to allocate just a little more space with each append;
382 * for efficiency, double the buffer size each time it overflows.
383 * Actually, we might need to more than double it if 'needed' is big...
384 */
385 newlen = 2 * str->maxlen;
386 while (needed > newlen)
387 newlen = 2 * newlen;
388
389 /*
390 * Clamp to MaxAllocSize in case we went past it. Note we are assuming
391 * here that MaxAllocSize <= INT_MAX/2, else the above loop could
392 * overflow. We will still have newlen >= needed.
393 */
394 if (newlen > (int) MaxAllocSize)
395 newlen = (int) MaxAllocSize;
396
397 str->data = (char *) repalloc(str->data, newlen);
398
399 str->maxlen = newlen;
400}
size_t Size
Definition: c.h:562
#define fprintf(file, fmt, msg)
Definition: cubescan.l:21
int errdetail(const char *fmt,...)
Definition: elog.c:1203
int errcode(int sqlerrcode)
Definition: elog.c:853
int errmsg(const char *fmt,...)
Definition: elog.c:1070
#define _(x)
Definition: elog.c:90
#define ERROR
Definition: elog.h:39
#define elog(elevel,...)
Definition: elog.h:225
#define ereport(elevel,...)
Definition: elog.h:149
#define MaxAllocSize
Definition: fe_memutils.h:22
exit(1)
void * repalloc(void *pointer, Size size)
Definition: mcxt.c:1541
#define EXIT_FAILURE
Definition: settings.h:178

References _, Assert, elog, ereport, errcode(), errdetail(), errmsg(), ERROR, exit(), EXIT_FAILURE, fprintf, MaxAllocSize, repalloc(), and str.

Referenced by add_file_to_manifest(), AddFileToBackupManifest(), appendBinaryStringInfo(), appendBinaryStringInfoNT(), appendStringInfo(), appendStringInfoChar(), appendStringInfoSpaces(), astreamer_zstd_compressor_new(), astreamer_zstd_decompressor_new(), CopyReadAttributesCSV(), CopyReadAttributesText(), CopyReadBinaryAttribute(), escape_json_with_len(), finalize_manifest(), JsonbToCStringWorker(), jsonPathFromCstring(), jsonPathToCstring(), manifest_report_error(), pg_get_line_append(), pgp_armor_decode(), pgp_armor_encode(), PLy_elog_impl(), pq_getmessage(), pq_sendint16(), pq_sendint32(), pq_sendint64(), pq_sendint8(), psql_add_command(), read_binary_file(), ReportWalSummaryError(), reserveFromBuffer(), SendRowDescriptionMessage(), slurp_file(), and XLogSendPhysical().

◆ initStringInfo()

void initStringInfo ( StringInfo  str)

Definition at line 97 of file stringinfo.c.

98{
100}
static void initStringInfoInternal(StringInfo str, int initsize)
Definition: stringinfo.c:41
#define STRINGINFO_DEFAULT_SIZE
Definition: stringinfo.h:112

References initStringInfoInternal(), str, and STRINGINFO_DEFAULT_SIZE.

Referenced by AddFileToBackupManifest(), array_to_text_internal(), astreamer_gzip_decompressor_new(), astreamer_lz4_compressor_new(), astreamer_lz4_decompressor_new(), astreamer_tar_parser_new(), astreamer_zstd_compressor_new(), astreamer_zstd_decompressor_new(), BackendInitialize(), BeginCopyFrom(), bind_param_error_callback(), bmsToString(), bqarr_in(), brin_bloom_summary_out(), brin_minmax_multi_summary_out(), brin_page_items(), build_tuple_value_details(), build_tuplestore_recursively(), BuildIndexValueDescription(), BuildParamLogString(), cash_words(), check_publications_origin(), CheckAlterSubOption(), CheckSASLAuth(), checkSharedDependencies(), circle_out(), concat_internal(), config_enum_get_options(), convertToJsonb(), copy_table(), create_cursor(), create_manifest_writer(), CreateIncrementalBackupInfo(), CreateSchemaCommand(), cube_out(), cursor_to_xml(), dblink_close(), dblink_fetch(), dblink_open(), DeadLockReport(), deparse_expression_pretty(), deparseAnalyzeInfoSql(), deparseAnalyzeSizeSql(), deparseFromExprForRel(), do_analyze_rel(), do_pg_backup_start(), ecpg_filter_source(), ecpg_filter_stderr(), ecpg_start_test(), errdetail_apply_conflict(), escape_param_str(), escape_xml(), estimate_path_cost_size(), exec_replication_command(), exec_stmt_raise(), ExecBuildSlotPartitionKeyDescription(), ExecBuildSlotValueDescription(), ExecEvalXmlExpr(), execute_extension_script(), execute_foreign_modify(), ExplainOpenWorker(), ExplainPrintSettings(), ExportSnapshot(), fetch_remote_table_info(), fetch_table_list(), filter_init(), flatten_reloptions(), flatten_set_variable_args(), format_expr_params(), format_node_dump(), format_operator_extended(), format_preparedparamsdata(), format_procedure_extended(), FreePageManagerDump(), fsm_page_contents(), funcname_signature_string(), generate_opclass_name(), generate_operator_name(), get_connect_string(), get_from_clause(), get_json_agg_constructor(), get_sql_delete(), get_sql_insert(), get_sql_update(), get_target_list(), get_tuple_of_interest(), getObjectDescription(), getObjectIdentityParts(), getObjectTypeDescription(), GetWALBlockInfo(), GetWALRecordInfo(), gist_page_items(), HandleParallelApplyMessages(), HandleParallelMessages(), heap_vacuum_rel(), hstore_to_json(), hstore_to_json_loose(), hstore_to_jsonb_loose(), incompatible_module_error(), init_libpq_source(), initialize_worker_spi(), isolation_start_test(), json_object(), json_object_two_arg(), json_unique_builder_get_throwawaybuf(), JsonbValueAsText(), jsonpath_send(), jsonPathFromCstring(), jsonPathToCstring(), KnownAssignedXidsDisplay(), libpqrcv_alter_slot(), libpqrcv_create_slot(), libpqrcv_startstreaming(), logicalrep_get_attrs_str(), LogRecoveryConflict(), main(), make_temptable_name_n(), manifest_report_error(), map_multipart_sql_identifier_to_xml_name(), map_sql_catalog_to_xmlschema_types(), map_sql_identifier_to_xml_name(), map_sql_schema_to_xmlschema_types(), map_sql_table_to_xmlschema(), map_sql_type_to_xml_name(), map_sql_type_to_xmlschema_type(), map_sql_typecoll_to_xmlschema_types(), map_sql_value_to_xml_value(), map_xml_name_to_sql_identifier(), multirange_out(), multirange_recv(), mxid_to_string(), NameListToQuotedString(), NameListToString(), next_field_expand(), nodeToStringInternal(), op_signature_string(), parse_fcall_arguments(), path_encode(), PerformAuthentication(), PerformWalRecovery(), pg_armor(), pg_dearmor(), pg_dependencies_out(), pg_extension_update_paths(), pg_get_constraintdef_worker(), pg_get_function_arguments(), pg_get_function_identity_arguments(), pg_get_function_result(), pg_get_function_sqlbody(), pg_get_functiondef(), pg_get_indexdef_worker(), pg_get_line(), pg_get_partkeydef_worker(), pg_get_querydef(), pg_get_ruledef_worker(), pg_get_statisticsobj_worker(), pg_get_triggerdef_worker(), pg_get_viewdef_worker(), pg_get_wait_events(), pg_ndistinct_out(), pg_snapshot_out(), pg_split_opts(), pg_sync_replication_slots(), pgstat_progress_parallel_incr_param(), PLy_elog_impl(), PLy_traceback(), populate_array_report_expected_array(), populate_scalar(), postgresAcquireSampleRowsFunc(), postgresAnalyzeForeignTable(), postgresBeginForeignInsert(), postgresExecForeignTruncate(), postgresGetAnalyzeInfoForForeignTable(), postgresGetForeignPlan(), postgresImportForeignSchema(), PostgresMain(), postgresPlanDirectModify(), postgresPlanForeignModify(), PostmasterMain(), pq_beginmessage(), pq_begintypsend(), pretty_format_node_dump(), print_function_rettype(), printtup_startup(), process_pgfdw_appname(), process_pipe_input(), ProcSleep(), psql_add_command(), psql_start_test(), quote_object_name(), quote_qualified_identifier(), range_bound_escape(), range_deparse(), range_parse_bound(), range_recv(), read_binary_file(), read_pg_version_file(), ReadArrayStr(), readfile(), record_in(), record_out(), recv_password_packet(), refresh_by_match_merge(), regression_main(), replace_percent_placeholders(), replace_text(), replace_text_regexp(), ReplicationSlotDropAtPubNode(), ReplSlotSyncWorkerMain(), reportDependentObjects(), ReportSlotInvalidation(), ReportWalSummaryError(), ri_Check_Pk_Match(), RI_FKey_cascade_del(), RI_FKey_cascade_upd(), RI_FKey_check(), RI_Initial_Check(), RI_PartitionRemove_Check(), ri_ReportViolation(), ri_restrict(), ri_set(), rm_redo_error_callback(), schema_get_xml_visible_tables(), send_message_to_frontend(), send_message_to_server_log(), sepgsql_attribute_post_create(), sepgsql_audit_log(), sepgsql_database_post_create(), sepgsql_proc_post_create(), sepgsql_relation_post_create(), sepgsql_schema_post_create(), serialize_deflist(), serializeAnalyzeStartup(), set_backtrace(), show_incremental_sort_group_info(), show_memoize_info(), show_sort_group_keys(), ShowTransactionStateRec(), ShowUsage(), SortTocFromFile(), startlit(), stringlist_to_identifierstr(), table_to_xml_internal(), text_format(), tokenize_auth_file(), transformJsonTableColumn(), tsearch_readline_begin(), TypeNameListToString(), TypeNameToString(), unaccent_lexize(), unistr(), validate_remote_info(), verify_cb(), WalReceiverMain(), worker_spi_main(), write_auto_conf_file(), write_csvlog(), write_jsonlog(), write_reconstructed_file(), XLogDumpDisplayRecord(), XLogInsertRecord(), xml_out_internal(), xmlcomment(), xmlconcat(), xmlpi(), xmlroot(), XmlTableGetValue(), and xpath_table().

◆ initStringInfoExt()

void initStringInfoExt ( StringInfo  str,
int  initsize 
)

Definition at line 111 of file stringinfo.c.

112{
113 initStringInfoInternal(str, initsize);
114}

References initStringInfoInternal(), and str.

◆ initStringInfoInternal()

static void initStringInfoInternal ( StringInfo  str,
int  initsize 
)
inlinestatic

Definition at line 41 of file stringinfo.c.

42{
43 Assert(initsize >= 1 && initsize <= MaxAllocSize);
44
45 str->data = (char *) palloc(initsize);
46 str->maxlen = initsize;
48}
void * palloc(Size size)
Definition: mcxt.c:1317
void resetStringInfo(StringInfo str)
Definition: stringinfo.c:126

References Assert, MaxAllocSize, palloc(), resetStringInfo(), and str.

Referenced by initStringInfo(), initStringInfoExt(), and makeStringInfoInternal().

◆ makeStringInfo()

◆ makeStringInfoExt()

StringInfo makeStringInfoExt ( int  initsize)

Definition at line 85 of file stringinfo.c.

86{
87 return makeStringInfoInternal(initsize);
88}

References makeStringInfoInternal().

◆ makeStringInfoInternal()

static StringInfo makeStringInfoInternal ( int  initsize)
inlinestatic

Definition at line 58 of file stringinfo.c.

59{
61
62 initStringInfoInternal(res, initsize);
63 return res;
64}
StringInfoData * StringInfo
Definition: stringinfo.h:54

References initStringInfoInternal(), palloc(), and res.

Referenced by makeStringInfo(), and makeStringInfoExt().

◆ resetStringInfo()