PostgreSQL Source Code  git master
libpq_pipeline.c File Reference
#include "postgres_fe.h"
#include <sys/select.h>
#include <sys/time.h>
#include "catalog/pg_type_d.h"
#include "common/fe_memutils.h"
#include "libpq-fe.h"
#include "pg_getopt.h"
#include "portability/instr_time.h"
Include dependency graph for libpq_pipeline.c:

Go to the source code of this file.

Macros

#define pg_debug(...)
 
#define MAXINTLEN   12
 
#define MAXINT8LEN   20
 
#define pg_fatal(...)   pg_fatal_impl(__LINE__, __VA_ARGS__)
 

Enumerations

enum  PipelineInsertStep {
  BI_BEGIN_TX , BI_DROP_TABLE , BI_CREATE_TABLE , BI_PREPARE ,
  BI_INSERT_ROWS , BI_COMMIT_TX , BI_SYNC , BI_DONE
}
 

Functions

static void exit_nicely (PGconn *conn)
 
static void pg_attribute_noreturn () pg_fatal_impl(int line
 
static void const char pg_attribute_printf (2, 3)
 
static bool process_result (PGconn *conn, PGresult *res, int results, int numsent)
 
static void const char fflush (stdout)
 
 fprintf (stderr, "\n%s:%d: ", progname, line)
 
 va_start (args, fmt)
 
 vfprintf (stderr, fmt, args)
 
 va_end (args)
 
 Assert (fmt[strlen(fmt) - 1] !='\n')
 
 fprintf (stderr, "\n")
 
 exit (1)
 
static void test_disallowed_in_pipeline (PGconn *conn)
 
static void test_multi_pipelines (PGconn *conn)
 
static void test_nosync (PGconn *conn)
 
static void test_pipeline_abort (PGconn *conn)
 
static void test_pipelined_insert (PGconn *conn, int n_rows)
 
static void test_prepared (PGconn *conn)
 
static void notice_processor (void *arg, const char *message)
 
static void test_pipeline_idle (PGconn *conn)
 
static void test_simple_pipeline (PGconn *conn)
 
static void test_singlerowmode (PGconn *conn)
 
static void test_transaction (PGconn *conn)
 
static void test_uniqviol (PGconn *conn)
 
static void usage (const char *progname)
 
static void print_test_list (void)
 
int main (int argc, char **argv)
 

Variables

static void const char * fmt
 
const char *const progname = "libpq_pipeline"
 
char * tracefile = NULL
 
static const char *const drop_table_sql
 
static const char *const create_table_sql
 
static const char *const insert_sql
 
static const char *const insert_sql2
 

Macro Definition Documentation

◆ MAXINT8LEN

#define MAXINT8LEN   20

Definition at line 58 of file libpq_pipeline.c.

◆ MAXINTLEN

#define MAXINTLEN   12

Definition at line 57 of file libpq_pipeline.c.

◆ pg_debug

#define pg_debug (   ...)

Definition at line 43 of file libpq_pipeline.c.

◆ pg_fatal

#define pg_fatal (   ...)    pg_fatal_impl(__LINE__, __VA_ARGS__)

Definition at line 70 of file libpq_pipeline.c.

Enumeration Type Documentation

◆ PipelineInsertStep

Enumerator
BI_BEGIN_TX 
BI_DROP_TABLE 
BI_CREATE_TABLE 
BI_PREPARE 
BI_INSERT_ROWS 
BI_COMMIT_TX 
BI_SYNC 
BI_DONE 

Definition at line 676 of file libpq_pipeline.c.

677 {
678  BI_BEGIN_TX,
681  BI_PREPARE,
683  BI_COMMIT_TX,
684  BI_SYNC,
685  BI_DONE,
686 };
@ BI_INSERT_ROWS
@ BI_BEGIN_TX
@ BI_CREATE_TABLE
@ BI_PREPARE
@ BI_DROP_TABLE
@ BI_SYNC
@ BI_DONE
@ BI_COMMIT_TX

Function Documentation

◆ Assert()

Assert ( fmt [strlen(fmt) - 1] = '\n')

Referenced by _brin_begin_parallel(), _brin_end_parallel(), _brin_parallel_build_main(), _bt_afternewitemoff(), _bt_allocbuf(), _bt_begin_parallel(), _bt_binsrch(), _bt_binsrch_insert(), _bt_binsrch_posting(), _bt_bottomupdel_finish_pending(), _bt_bottomupdel_pass(), _bt_buildadd(), _bt_check_natts(), _bt_check_rowcompare(), _bt_check_unique(), _bt_checkkeys(), _bt_clear_incomplete_split(), _bt_compare(), _bt_compare_scankey_args(), _bt_deadblocks(), _bt_dedup_finish_pending(), _bt_dedup_pass(), _bt_dedup_save_htid(), _bt_dedup_start_pending(), _bt_delete_or_dedup_one_page(), _bt_delitems_cmp(), _bt_delitems_delete(), _bt_delitems_delete_check(), _bt_delitems_update(), _bt_delitems_vacuum(), _bt_doinsert(), _bt_endpoint(), _bt_find_extreme_element(), _bt_findinsertloc(), _bt_findsplitloc(), _bt_finish_split(), _bt_first(), _bt_fix_scankey_strategy(), _bt_form_posting(), _bt_getbuf(), _bt_getroot(), _bt_getrootheight(), _bt_getstackbuf(), _bt_insert_parent(), _bt_insertonpg(), _bt_interval_edges(), _bt_keep_natts(), _bt_killitems(), _bt_load(), _bt_lock_subtree_parent(), _bt_mark_page_halfdead(), _bt_mark_scankey_required(), _bt_metaversion(), _bt_mkscankey(), _bt_moveright(), _bt_newlevel(), _bt_pagedel(), _bt_parallel_build_main(), _bt_pendingfsm_add(), _bt_pendingfsm_finalize(), _bt_preprocess_array_keys(), _bt_preprocess_keys(), _bt_readpage(), _bt_recsplitloc(), _bt_relandgetbuf(), _bt_restore_array_keys(), _bt_restore_meta(), _bt_rightsib_halfdeadflag(), _bt_saveitem(), _bt_search(), _bt_search_insert(), _bt_set_cleanup_info(), _bt_setuppostingitems(), _bt_simpledel_pass(), _bt_slideleft(), _bt_sort_dedup_finish_pending(), _bt_split(), _bt_start_array_keys(), _bt_steppage(), _bt_stepright(), _bt_swap_posting(), _bt_truncate(), _bt_unlink_halfdead_page(), _bt_update_posting(), _bt_upgrademetapage(), _bt_uppershutdown(), _equalList(), _h_indexbuild(), _hash_addovflpage(), _hash_binsearch(), _hash_binsearch_last(), _hash_doinsert(), _hash_expandtable(), _hash_finish_split(), _hash_first(), _hash_freeovflpage(), _hash_getbucketbuf_from_hashkey(), _hash_getcachedmetap(), _hash_init_metabuffer(), _hash_kill_items(), _hash_load_qualified_items(), _hash_pgaddtup(), _hash_readnext(), _hash_readpage(), _hash_readprev(), _hash_splitbucket(), _hash_squeezebucket(), _int_matchsel(), _mdfd_getseg(), _mdfd_openseg(), _outBitString(), _soundex(), _SPI_execute_plan(), _SPI_find_ENR_by_name(), _SPI_make_plan_non_temp(), _SPI_prepare_plan(), _SPI_save_plan(), _tarReadRaw(), _tarWriteHeader(), _tarWritePadding(), AbortBufferIO(), AbortOutOfAnyTransaction(), AbortStrongLockAcquire(), AbortTransaction(), AbsoluteConfigLocation(), accum_sum_carry(), accum_sum_final(), accum_sum_rescale(), accumArrayResult(), accumArrayResultArr(), aclparse(), aclupdate(), acquire_inherited_sample_rows(), acquire_sample_rows(), AcquireRewriteLocks(), activate_interpreter(), ActivateCommitTs(), add_abs(), add_base_clause_to_rel(), add_child_join_rel_equivalences(), add_child_rel_equivalences(), add_eq_member(), add_exact_object_address(), add_foreign_final_paths(), add_foreign_grouping_paths(), add_foreign_ordered_paths(), add_guc_variable(), add_join_rel(), add_local_reloption(), add_merged_range_bounds(), add_module_to_inline_search_path(), add_nullingrels_if_needed(), add_object_address(), add_part_relids(), add_partial_path(), add_paths_to_append_rel(), add_paths_to_grouping_rel(), add_paths_with_pathkeys_for_rel(), add_placeholders_to_base_rels(), add_placeholders_to_joinrel(), add_row_identity_columns(), add_row_identity_var(), add_rtes_to_flat_rtable(), add_values_to_range(), add_vars_to_targetlist(), addArcs(), AddCatcacheInvalidationMessage(), addConstrChildIdxDeps(), AddEventToPendingNotifies(), addFkRecurseReferencing(), AddInvalidationMessage(), addItemPointersToLeafTuple(), addItemsToLeaf(), addOrReplaceTuple(), AddPendingSync(), AddQual(), addRangeTableEntry(), addRangeTableEntryForCTE(), addRangeTableEntryForENR(), addRangeTableEntryForFunction(), addRangeTableEntryForJoin(), addRangeTableEntryForRelation(), addRangeTableEntryForSubquery(), addRangeTableEntryForTableFunc(), addRangeTableEntryForValues(), AddRelationNewConstraints(), AddRelationNotNullConstraints(), addressOK(), AddRoleMems(), addRTEPermissionInfo(), addTargetToSortList(), AddWaitEventToSet(), adjacent_cmp_bounds(), adjust_appendrel_attrs(), adjust_appendrel_attrs_mutator(), adjust_group_pathkeys_for_groupagg(), adjust_inherited_attnums(), adjust_partition_colnos(), adjust_partition_colnos_using_map(), adjust_paths_for_srfs(), adjust_standard_join_alias_expression(), AdjustToFullTransactionId(), advance_windowaggregate(), advance_windowaggregate_base(), advanceConnectionState(), AdvanceNextFullTransactionIdPastXid(), AdvanceXLInsertBuffer(), afterTriggerAddEvent(), AfterTriggerBeginXact(), afterTriggerDeleteHeadEventChunk(), AfterTriggerEndQuery(), AfterTriggerEndSubXact(), AfterTriggerEnlargeQueryState(), AfterTriggerFireDeferred(), afterTriggerInvokeEvents(), AfterTriggerSaveEvent(), agg_refill_hash_table(), agg_retrieve_direct(), AggregateCreate(), AlignedAllocFree(), AlignedAllocGetChunkContext(), AlignedAllocRealloc(), alloc_object(), AllocateVfd(), allocCStatePrepared(), AllocSetAlloc(), AllocSetContextCreateInternal(), AllocSetDelete(), AllocSetFree(), AllocSetFreeIndex(), AllocSetGetChunkContext(), AllocSetGetChunkSpace(), AllocSetIsEmpty(), AllocSetRealloc(), AllocSetReset(), AllocSetStats(), AlterObjectNamespace_internal(), AlterObjectOwner_internal(), AlterObjectRename_internal(), AlterPolicy(), AlterPublicationOptions(), AlterRelationNamespaceInternal(), AlterSchemaOwner_internal(), AlterSeqNamespaces(), AlterSequence(), AlterStatistics(), AlterSubscription(), AlterTableNamespaceInternal(), am_leader_apply_worker(), am_parallel_apply_worker(), analyze_row_processor(), analyzeCTE(), analyzeCTETargetList(), append_pathkeys(), appendBinaryStringInfo(), appendBinaryStringInfoNT(), appendElement(), appendGroupByClause(), AppendInvalidationMessageSubGroup(), appendJSONKeyValue(), appendKey(), AppendSeconds(), appendStringInfoRegexpSubstr(), appendStringInfoStringQuoted(), appendStringInfoVA(), AppendStringToManifest(), appendValue(), apply_child_basequals(), apply_error_callback(), apply_handle_begin(), apply_handle_begin_prepare(), apply_handle_stream_abort(), apply_handle_stream_commit(), apply_handle_stream_prepare(), apply_handle_stream_start(), apply_handle_stream_stop(), apply_handle_tuple_routing(), apply_handle_update(), apply_scanjoin_target_to_paths(), apply_tlist_labeling(), apply_typmod_special(), ApplyLauncherMain(), applyLockingClause(), ApplyLogicalMappingFile(), applyRemoteGucs(), approximate_joinrel_size(), apw_load_buffers(), array_agg_array_combine(), array_agg_array_deserialize(), array_agg_array_finalfn(), array_agg_array_serialize(), array_agg_combine(), array_agg_finalfn(), array_agg_serialize(), array_bitmap_copy(), array_cmp(), array_create_iterator(), array_dim_to_json(), array_dim_to_jsonb(), array_fill_internal(), array_get_element_expanded(), array_out(), array_prepend(), array_set_element_expanded(), array_set_slice(), array_shuffle_n(), array_subscript_fetch(), array_subscript_fetch_slice(), array_subscript_transform(), ArrayCastAndSet(), ArrayGetNItemsSafe(), ascii(), AssertChangeLsnOrder(), AssertCheckExpandedRanges(), AssertCheckRanges(), AssertTXNLsnOrder(), assign_aggregate_collations(), assign_collations_walker(), assign_hypothetical_collations(), assign_param_for_placeholdervar(), assign_record_type_identifier(), assign_record_type_typmod(), assign_record_var(), assign_simple_var(), AssignDumpId(), AssignTransactionId(), asyncQueueAdvance(), asyncQueueAdvanceTail(), asyncQueueFillWarning(), asyncQueueNotificationToEntry(), asyncQueueReadAllNotifications(), asyncQueueUnregister(), ATAddCheckNNConstraint(), ATAddForeignKeyConstraint(), AtCleanup_Memory(), AtCleanup_Portals(), ATColumnChangeRequiresRewrite(), AtCommit_Memory(), ATDetachCheckNoForeignKeyRefs(), AtEOSubXact_cleanup(), AtEOSubXact_Inval(), AtEOSubXact_PgStat_DroppedStats(), AtEOSubXact_PgStat_Relations(), AtEOSubXact_RelationCache(), AtEOXact_Buffers(), AtEOXact_cleanup(), AtEOXact_GUC(), AtEOXact_Inval(), AtEOXact_PgStat(), AtEOXact_PgStat_Relations(), AtEOXact_RelationCache(), AtEOXact_RelationMap(), AtEOXact_Snapshot(), ATExecAddColumn(), ATExecAddConstraint(), ATExecAddIndex(), ATExecAddIndexConstraint(), ATExecAddStatistics(), ATExecAlterColumnType(), ATExecAttachPartition(), ATExecCmd(), ATExecDropColumn(), ATExecSetNotNull(), ATExecSetTableSpace(), ATExecSetTableSpaceNoStorage(), ATPrepAddPrimaryKey(), AtPrepare_PgStat(), AtPrepare_PgStat_Relations(), AtPrepare_PredicateLocks(), ATPrepCmd(), ATRewriteTable(), AtStart_Memory(), AtStart_ResourceOwner(), AtSubAbort_Memory(), AtSubAbort_Snapshot(), AtSubCleanup_Memory(), AtSubCommit_childXids(), AtSubCommit_Memory(), AtSubCommit_Notify(), AtSubStart_Memory(), AtSubStart_ResourceOwner(), attach_internal(), AttachSerializableXact(), ATTypedTableRecursion(), auth_peer(), autoprewarm_database_main(), autovac_recalculate_workers_for_balance(), AutoVacuumShmemInit(), AutoVacuumUpdateCostLimit(), AuxiliaryProcessMain(), AuxiliaryProcKill(), BackgroundWorkerShmemInit(), BarrierArriveAndDetachExceptLast(), BarrierArriveAndWait(), BarrierAttach(), BarrierDetachImpl(), base_yylex(), BaseBackup(), BaseInit(), basic_archive_shutdown(), bbsink_archive_contents(), bbsink_begin_archive(), bbsink_begin_backup(), bbsink_begin_manifest(), bbsink_cleanup(), bbsink_end_archive(), bbsink_end_backup(), bbsink_end_manifest(), bbsink_forward_archive_contents(), bbsink_forward_begin_archive(), bbsink_forward_begin_backup(), bbsink_forward_begin_manifest(), bbsink_forward_cleanup(), bbsink_forward_end_archive(), bbsink_forward_end_backup(), bbsink_forward_end_manifest(), bbsink_forward_manifest_contents(), bbsink_gzip_new(), bbsink_lz4_new(), bbsink_manifest_contents(), bbsink_progress_new(), bbsink_server_begin_archive(), bbsink_server_begin_manifest(), bbsink_throttle_new(), bbsink_zstd_new(), bbstreamer_buffer_bytes(), bbstreamer_content(), bbstreamer_extractor_content(), bbstreamer_extractor_finalize(), bbstreamer_finalize(), bbstreamer_free(), bbstreamer_gzip_decompressor_new(), bbstreamer_lz4_compressor_new(), bbstreamer_lz4_decompressor_new(), bbstreamer_plain_writer_free(), bbstreamer_recovery_injector_content(), bbstreamer_tar_archiver_content(), bbstreamer_tar_header(), bbstreamer_tar_parser_content(), bbstreamer_tar_terminator_content(), bbstreamer_zstd_compressor_new(), bbstreamer_zstd_decompressor_new(), be_gssapi_read(), be_gssapi_write(), be_lo_from_bytea(), be_lo_open(), be_lo_put(), be_tls_open_server(), BecomeLockGroupLeader(), BecomeLockGroupMember(), begin_cb_wrapper(), begin_prepare_cb_wrapper(), BeginCopyFrom(), BeginCopyTo(), beginmerge(), BeginStrongLockAcquire(), BgBufferSync(), binary_upgrade_logical_slot_has_caught_up(), binaryheap_first(), binaryheap_remove_first(), binaryheap_remove_node(), binaryheap_replace_first(), bitmap_hash(), bitmap_match(), BitmapHeapNext(), blbulkdelete(), blinsert(), BlockRefTableEntryGetBlocks(), BlockRefTableEntryMarkBlockModified(), BlockRefTableEntrySetLimitBlock(), BlockRefTableGetEntry(), BlockRefTableReaderGetBlocks(), BlockRefTableReaderNextRelation(), BlockRefTableWrite(), BlockSampler_Next(), bloom_init(), BloomFillMetapage(), BloomInitMetapage(), BloomPageAddItem(), bms_add_member(), bms_add_members(), bms_add_range(), bms_compare(), bms_copy(), bms_del_member(), bms_del_members(), bms_difference(), bms_equal(), bms_get_singleton_member(), bms_hash_value(), bms_int_members(), bms_intersect(), bms_is_member(), bms_is_subset(), bms_join(), bms_member_index(), bms_membership(), bms_next_member(), bms_nonempty_difference(), bms_num_members(), bms_overlap(), bms_overlap_list(), bms_prev_member(), bms_replace_members(), bms_singleton_member(), bms_subset_compare(), bms_union(), bootstrap_signals(), BootStrapCLOG(), BootstrapModeMain(), BootStrapMultiXact(), BootStrapSUBTRANS(), BootStrapXLOG(), bottomup_nblocksfavorable(), bottomup_sort_and_shrink(), bounds_adjacent(), bpchar(), brin_bloom_add_value(), brin_bloom_consistent(), brin_bloom_get_ndistinct(), brin_bloom_union(), brin_doinsert(), brin_doupdate(), brin_evacuate_page(), brin_form_tuple(), brin_free_desc(), brin_getinsertbuffer(), brin_inclusion_add_value(), brin_inclusion_consistent(), brin_inclusion_union(), brin_minmax_add_value(), brin_minmax_consistent(), brin_minmax_multi_add_value(), brin_minmax_multi_consistent(), brin_minmax_multi_distance_date(), brin_minmax_multi_distance_float4(), brin_minmax_multi_distance_float8(), brin_minmax_multi_distance_inet(), brin_minmax_multi_distance_int2(), brin_minmax_multi_distance_int4(), brin_minmax_multi_distance_int8(), brin_minmax_multi_distance_interval(), brin_minmax_multi_distance_macaddr(), brin_minmax_multi_distance_macaddr8(), brin_minmax_multi_distance_numeric(), brin_minmax_multi_distance_pg_lsn(), brin_minmax_multi_distance_tid(), brin_minmax_multi_distance_time(), brin_minmax_multi_distance_timestamp(), brin_minmax_multi_distance_timetz(), brin_minmax_multi_distance_uuid(), brin_minmax_multi_serialize(), brin_minmax_multi_union(), brin_minmax_union(), brin_range_deserialize(), brin_range_serialize(), brin_xlog_createidx(), brin_xlog_insert_update(), brin_xlog_revmap_extend(), brinbuild(), brincostestimate(), bringetbitmap(), brinGetTupleForHeapBlock(), brininsertcleanup(), brinRevmapExtend(), brinsummarize(), bt_check_every_level(), bt_check_level_from_leftmost(), bt_child_check(), bt_downlink_missing_check(), bt_entry_unique_check(), bt_leftmost_ignoring_half_dead(), bt_normalize_tuple(), bt_page_print_tuples(), bt_posting_plain_tuple(), bt_recheck_sibling_links(), bt_rootdescend(), bt_tuple_present_callback(), btbeginscan(), btbuildempty(), btcostestimate(), BTPageGetDeleteXid(), BTPageIsRecyclable(), btparallelrescan(), btree_xlog_dedup(), btree_xlog_insert(), btree_xlog_split(), btree_xlog_unlink_page(), BTreeShmemInit(), BTreeTupleGetHeapTIDCareful(), BTreeTupleGetMaxHeapTID(), BTreeTupleGetNPosting(), BTreeTupleGetPostingOffset(), BTreeTupleSetNAtts(), BTreeTupleSetPosting(), btvacuumcleanup(), btvacuumpage(), BufferAlloc(), BufferGetBlock(), BufferGetBlockNumber(), BufferGetLSNAtomic(), BufferGetTag(), BufferIsDirty(), BufferIsExclusiveLocked(), BufferIsPermanent(), BufferIsValid(), buffers_to_iovec(), BufferSync(), BufFileAppend(), BufFileCreateTemp(), BufFileDumpBuffer(), BufFileExportFileSet(), BufFileFlush(), BufFileReadCommon(), BufFileSize(), BufFileWrite(), BufTableInsert(), build_attnums_array(), build_backup_content(), build_child_join_rel(), build_client_first_message(), build_coercion_expression(), build_column_frequencies(), build_distances(), build_distinct_groups(), build_function_result_tupdesc_d(), build_guc_variables(), build_hash_table(), build_hash_tables(), build_index_paths(), build_join_rel(), build_join_rel_hash(), build_joinrel_partition_info(), build_joinrel_tlist(), build_merged_partition_bounds(), build_minmax_path(), build_partition_pathkeys(), build_pertrans_for_aggref(), build_regexp_match_result(), build_regexp_split_result(), build_reloptions(), build_remote_returning(), build_replindex_scan_key(), build_row_from_vars(), build_simple_rel(), build_sorted_items(), build_subplan(), build_test_match_result(), BuildCachedPlan(), BuildDescFromLists(), BuildIndexValueDescription(), buildMatViewRefreshDependencies(), buildNSItemFromLists(), buildNSItemFromTupleDesc(), BuildQueryCompletionString(), buildRelationAliases(), BuildSpeculativeIndexInfo(), buildSubPlanHash(), BuildTupleHashTableExt(), buildVarFromNSColumn(), buildWorkerCommand(), bytea_string_agg_finalfn(), cache_lookup(), cache_reduce_memory(), cache_store_tuple(), CachedPlanAllowsSimpleValidityCheck(), CachedPlanGetTargetList(), CachedPlanIsSimplyValid(), CachedPlanIsValid(), CachedPlanSetParentContext(), calc_hist_selectivity(), calc_inet_union_params(), calc_inet_union_params_indexed(), calc_length_hist_frac(), calc_nestloop_required_outer(), calc_non_nestloop_required_outer(), calcstrlen(), CallSyscacheCallbacks(), can_minmax_aggs(), canonicalize_path(), canonicalize_qual(), CatalogCacheComputeTupleHashValue(), CatalogCacheCreateEntry(), CatalogCacheInitializeCache(), CatalogIndexInsert(), CatCacheFreeKeys(), CatCacheInvalidate(), CatCacheRemoveCList(), CatCacheRemoveCTup(), change_cb_wrapper(), ChangeToDataDir(), ChangeVarNodes_walker(), char2wchar(), check_agglevels_and_constraints(), check_circularity(), check_cluster_versions(), check_for_freed_segments_locked(), check_foreign_key(), check_generic_type_consistency(), check_index_predicates(), check_new_partition_bound(), check_null_keys(), check_of_type(), check_publications(), check_publications_origin(), check_relation_privileges(), check_sql_fn_retval(), check_srf_call_placement(), check_timezone_abbreviations(), check_ungrouped_columns_walker(), CheckCachedPlan(), checkclass_str(), checkDataDir(), CheckDateTokenTables(), CheckDeadLock(), CheckForBufferLeaks(), CheckForLocalBufferLeaks(), CheckForSerializableConflictOut(), CheckIndexCompatible(), checkMatch(), checkMembershipInCurrentExtension(), CheckOpSlotCompatibility(), CheckPointReplicationSlots(), CheckPWChallengeAuth(), CheckRADIUSAuth(), CheckRecoveryConflictDeadlock(), CheckRecoveryConsistency(), checkRuleResultList(), CheckSASLAuth(), CheckSelectLocking(), checkSplitConditions(), CheckTableForSerializableConflictIn(), CheckTargetForConflictsIn(), checkTempNamespaceStatus(), checkWellFormedRecursion(), choose_bitmap_and(), choose_next_subplan_for_leader(), choose_next_subplan_for_worker(), choose_next_subplan_locally(), cidr_set_masklen_internal(), clamp_width_est(), classify_matching_subplans(), clean_NOT_intree(), clean_stopword_intree(), CleanQuerytext(), cleanup_output_dirs(), cleanup_rel_sync_cache(), CleanupInvalidationState(), CleanUpLock(), CleanupProcSignalState(), CleanupTempFiles(), ClearOldPredicateLocks(), ClientAuthentication(), clog_redo(), CloneArchive(), CloneForeignKeyConstraints(), close_destination_dir(), closeAllVfds(), CloseMatViewIncrementalMaintenance(), ClosePipeFromProgram(), ClosePipeToProgram(), cluster(), cluster_rel(), cmpcmdflag(), coerce_function_result_tuple(), CollationCreate(), collectMatchesForHeapRow(), commandError(), CommandIsReadOnly(), commit_cb_wrapper(), commit_prepared_cb_wrapper(), commit_ts_redo(), CommitTransaction(), CommitTransactionCommand(), CommitTsShmemInit(), commute_restrictinfo(), comp_keyword_case_hook(), compact_palloc0(), CompactCheckpointerRequestQueue(), compactify_ranges(), compactify_tuples(), compareJsonbContainers(), comparetup_index_brin(), comparetup_index_btree_tiebreak(), comparetup_index_hash(), comparetup_index_hash_tiebreak(), compile_database_list(), compile_pltcl_function(), compile_relation_list_one_db(), complete_pending_request(), CompleteCachedPlan(), compute_array_stats(), compute_expr_stats(), compute_new_xmax_infomask(), compute_parallel_delay(), compute_partition_bounds(), compute_partition_hash_value(), compute_range_stats(), compute_remaining_iovec(), compute_return_type(), compute_scalar_stats(), compute_tsvector_stats(), computeDistance(), ComputeIndexAttrs(), ComputePartitionAttrs(), ComputeXidHorizons(), concat_internal(), conditional_stack_set_paren_depth(), conditional_stack_set_query_len(), ConditionalLockBuffer(), ConditionalLockBufferForCleanup(), ConditionalXactLockTableWait(), ConditionVariableBroadcast(), ConditionVariableTimedSleep(), ConnectDatabase(), connectDatabase(), consider_abort_common(), consider_groupingsets_paths(), consider_parallel_nestloop(), ConstraintSetParentConstraint(), ConstructTupleDescriptor(), contain_agg_clause_walker(), contain_outer_selfref(), convert_ANY_sublink_to_join(), convert_combining_aggrefs(), convert_EXISTS_sublink_to_join(), convert_EXISTS_to_ANY(), convert_int_from_base_unit(), convert_prep_stmt_params(), convert_real_from_base_unit(), convert_string_datum(), convert_subquery_pathkeys(), convert_to_base(), convert_tuples_by_name_attrmap(), convertJsonbArray(), ConvertTimeZoneAbbrevs(), convertToJsonb(), cookDefault(), copy_plpgsql_datums(), copy_replication_slot(), copy_table(), copy_table_data(), CopyCachedPlan(), CopyConversionError(), CopyErrorData(), CopyFrom(), CopyGetData(), CopyLoadInputBuf(), CopyLoadRawBuf(), CopyMultiInsertBufferCleanup(), CopyMultiInsertBufferFlush(), CopyMultiInsertInfoNextFreeSlot(), CopyMultiInsertInfoStore(), CopyReadAttributesCSV(), CopyReadAttributesText(), CopyReadLine(), CopySnapshot(), CopyXLogRecordToWAL(), cost_agg(), cost_append(), cost_bitmap_heap_scan(), cost_ctescan(), cost_functionscan(), cost_gather_merge(), cost_incremental_sort(), cost_index(), cost_memoize_rescan(), cost_namedtuplestorescan(), cost_resultscan(), cost_samplescan(), cost_seqscan(), cost_subqueryscan(), cost_tablefuncscan(), cost_tidrangescan(), cost_tidscan(), cost_valuesscan(), count_distinct_groups(), count_nulls(), create_append_path(), create_append_plan(), create_bitmap_scan_plan(), create_bitmap_subplan(), create_ctescan_plan(), create_foreign_modify(), create_foreign_upper_path(), create_foreignscan_path(), create_foreignscan_plan(), create_functionscan_plan(), create_gather_merge_path(), create_gather_merge_plan(), create_gather_path(), create_gating_plan(), create_groupingsets_path(), create_groupingsets_plan(), create_hash_bounds(), create_hashjoin_plan(), create_index_paths(), create_indexscan_plan(), create_internal(), create_lateral_join_info(), create_LifetimeEnd(), create_list_bounds(), create_logical_replication_slot(), create_material_path(), create_memoize_path(), create_memoize_plan(), create_merge_append_path(), create_merge_append_plan(), create_mergejoin_plan(), create_minmaxagg_plan(), create_modifytable_path(), create_namedtuplestorescan_plan(), create_ordered_paths(), create_ordinary_grouping_paths(), create_partial_grouping_paths(), create_partitionwise_grouping_paths(), create_physical_replication_slot(), create_plan(), create_plan_recurse(), create_projection_path(), create_projection_plan(), create_range_bounds(), create_resultscan_plan(), create_samplescan_plan(), create_scan_plan(), create_seqscan_plan(), create_subqueryscan_plan(), create_tablefuncscan_plan(), create_target(), create_tidrangescan_plan(), create_tidscan_plan(), create_toast_table(), create_unique_path(), create_unique_plan(), create_valuesscan_plan(), create_windowagg_path(), create_windowagg_plan(), create_worktablescan_plan(), CreateAnonymousSegment(), CreateAuxProcessResourceOwner(), CreateBackupStreamer(), CreateCachedPlan(), CreateConstraintEntry(), CreateDatabaseUsingWalLog(), createdb(), CreateDecodingContext(), CreateFunction(), CreateLocalPredicateLockHash(), CreateOneShotCachedPlan(), CreateParallelContext(), CreatePartitionPruneState(), createPartitions(), CreatePortal(), CreateProceduralLanguage(), CreateReplicationSlot(), CreateRestartPoint(), CreateSharedMemoryAndSemaphores(), CreateStatistics(), CreateSubscription(), CreateTemplateTupleDesc(), CreateTriggerFiringOn(), createViewAsClause(), dataBeginPlaceToPage(), dataBeginPlaceToPageLeaf(), DataChecksumsEnabled(), dataFindChildPtr(), dataGetLeftMostPage(), dataLeafPageGetUncompressed(), dataLocateItem(), dataPlaceToPageLeafRecompress(), dataPlaceToPageLeafSplit(), date_cmp_timestamp_internal(), datum_to_json_internal(), datum_to_jsonb_internal(), datum_write(), DatumGetAnyArrayP(), DatumGetEOHP(), DatumGetExpandedArray(), DatumGetExpandedArrayX(), DatumGetExpandedRecord(), datumGetSize(), datumRestore(), dbase_redo(), DCH_cache_getnew(), DCH_from_char(), dclist_count(), dclist_delete_from(), dclist_delete_from_thoroughly(), dclist_has_next(), dclist_has_prev(), dclist_head_element_off(), dclist_head_node(), dclist_insert_after(), dclist_insert_before(), dclist_is_empty(), dclist_move_head(), dclist_move_tail(), dclist_next_node(), dclist_pop_head_node(), dclist_prev_node(), dclist_push_head(), dclist_push_tail(), dclist_tail_element_off(), dclist_tail_node(), dead_items_alloc(), DeadLockCheck(), DebugPrintBufferRefcount(), decide_file_action(), decimalLength(), DeCloneArchive(), decode_varbyte(), DecodeDelete(), DecodeInterval(), DecodeMultiInsert(), decodePageSplitRecord(), DecodeXLogRecord(), DecodeXLogTuple(), deconstruct_array(), deconstruct_distribute_oj_quals(), deconstruct_jointree(), deconstruct_recurse(), decr_dcc_refcount(), DecrementParentLocks(), DecrTupleDescRefCount(), default_threadlock(), define_custom_variable(), DefineAggregate(), DefineAttr(), DefineIndex(), DefineRange(), DefineRelation(), DefineSequence(), DefineType(), DefineVirtualRelation(), Delete(), delete_item(), DeleteChildTargetLocks(), DeleteExpandedObject(), DeleteLockTarget(), DeleteSecurityLabel(), DelRoleMems(), delvacuum_desc(), deparse_context_for_plan_tree(), deparseAggref(), deparseColumnRef(), deparseDirectUpdateSql(), deparseDistinctExpr(), deparseFromExpr(), deparseFromExprForRel(), deparseOpExpr(), deparseRangeTblRef(), deparseScalarArrayOpExpr(), deparseSelectStmtForRel(), deparseSortGroupClause(), deparseSubqueryTargetList(), dependencies_clauselist_selectivity(), dependency_degree(), DependencyGenerator_init(), describeOneTableDetails(), destroy_superblock(), DetachPartitionFinalize(), determineRecursiveColTypes(), detoast_attr(), detoast_attr_slice(), detoast_external_attr(), dir_close(), dir_realloc(), dir_sync(), dir_write(), disable_timeout(), disable_timeouts(), discard_query_text(), discardUntilSync(), disconnect_cached_connections(), disconnectDatabase(), DiscreteKnapsack(), DisownLatch(), dist_ppath_internal(), distribute_qual_to_rels(), distribute_row_identity_vars(), div_var(), div_var_fast(), dlist_head_element_off(), dlist_next_node(), dlist_node_is_detached(), dlist_pop_head_node(), dlist_prev_node(), dlist_tail_element_off(), do_compile(), do_connect(), do_interval_discard(), do_numeric_discard(), do_pg_abort_backup(), do_pg_backup_start(), do_pg_backup_stop(), do_pset(), do_start_bgworker(), do_to_timestamp(), DoCopy(), doDeletion(), doLog(), doPickSplit(), DoPortalRunFetch(), doRetry(), double_to_shortest_decimal_buf(), DropAllPredicateLocksFromTable(), DropCachedPlan(), DropErrorMsgNonExistent(), DropErrorMsgWrongType(), DropReplicationSlot(), dsa_allocate_extended(), dsa_free(), dsa_get_address(), dsa_get_handle(), dsa_release_in_place(), dsa_unpin(), dshash_attach(), dshash_delete_current(), dshash_delete_entry(), dshash_delete_key(), dshash_destroy(), dshash_dump(), dshash_find(), dshash_find_or_insert(), dshash_get_hash_table_handle(), dshash_release_lock(), dshash_seq_next(), dsm_attach(), dsm_backend_startup(), dsm_create(), dsm_detach(), dsm_impl_op(), dsm_postmaster_startup(), dsm_segment_address(), dsm_segment_map_length(), dsm_unpin_mapping(), dsm_unpin_segment(), dummy_ssl_passwd_cb(), dumpSubscriptionTable(), dumpTableData(), dumpTableSchema(), dumpTrigger(), dumptuples(), DynaHashAlloc(), EA_flatten_into(), EA_get_flat_size(), each_worker_jsonb(), ec_member_matches_indexcol(), echo_hidden_hook(), echo_hook(), eclass_useful_for_merging(), ecpg_do_prologue(), ECPGconnect(), ECPGget_desc(), editFile(), elem_contained_by_range_support(), eliminate_duplicate_dependencies(), enable_statement_timeout(), enable_timeout(), EnableDisableRule(), EnablePortalManager(), EncodeDateOnly(), EncodeDateTime(), EndParallelWorkerTransaction(), EndPrepare(), EndTransactionBlock(), enforce_generic_type_consistency(), enlarge_list(), enlargeStringInfo(), ENRMetadataGetTupDesc(), ensure_active_superblock(), ensure_free_space_in_buffer(), ensure_last_message(), EnsurePortalSnapshotExists(), EnterParallelMode(), entry_alloc(), entryFindChildPtr(), entryGetItem(), entryGetLeftMostPage(), entryIsEnoughSpace(), entryLocateEntry(), entryLocateLeafEntry(), entryPreparePage(), enum_cmp_internal(), ER_flatten_into(), ER_get_flat_size(), estimate_multivariate_ndistinct(), estimate_num_groups(), estimate_path_cost_size(), EstimateSnapshotSpace(), eval_const_expressions_mutator(), eval_windowaggregates(), evalLazyFunc(), EvalPlanQual(), EvalPlanQualFetchRowMark(), EvalPlanQualSlot(), EvalPlanQualStart(), evalStandardFunc(), EventTriggerCollectAlterTableSubcmd(), EventTriggerSQLDropAddObject(), examine_expression(), examine_opclause_args(), examine_simple_variable(), examine_variable(), exec_check_assignable(), exec_check_rw_parameter(), exec_command_endif(), exec_describe_statement_message(), exec_eval_simple_expr(), exec_execute_message(), exec_move_row_from_datum(), exec_move_row_from_fields(), exec_replication_command(), exec_run_select(), exec_save_simple_expr(), exec_simple_check_plan(), exec_simple_query(), exec_stmt_assign(), exec_stmt_block(), exec_stmt_call(), exec_stmt_execsql(), exec_stmt_forc(), exec_stmt_return_query(), ExecAggCopyTransValue(), ExecAlterExtensionContentsStmt(), ExecAlterObjectDependsStmt(), ExecAlterObjectSchemaStmt(), ExecAlterOwnerStmt(), ExecAppend(), ExecAppendAsyncBegin(), ExecAppendAsyncEventWait(), ExecAppendAsyncGetNext(), ExecAppendAsyncRequest(), ExecARDeleteTriggers(), ExecARUpdateTriggers(), ExecASUpdateTriggers(), ExecAsyncAppendResponse(), ExecAsyncForeignScanConfigureWait(), ExecAsyncForeignScanNotify(), ExecAsyncForeignScanRequest(), ExecBitmapHeapInitializeWorker(), ExecBRDeleteTriggers(), ExecBRUpdateTriggers(), ExecBSUpdateTriggers(), ExecBuildAggTrans(), ExecBuildAggTransCall(), ExecBuildGroupingEqual(), ExecBuildParamSetEqual(), ExecBuildUpdateProjection(), ExecCallTriggerFunc(), ExecCheck(), ExecCheckOneRelPerms(), ExecCheckPermissions(), ExecCheckPlanOutput(), ExecCheckTupleVisible(), ExecChooseHashTableSize(), ExecCloseResultRelations(), ExecComputeSlotInfo(), ExecComputeStoredGenerated(), ExecConstraints(), ExecCopySlot(), ExecCopySlotHeapTuple(), ExecCreateTableAs(), ExecCrossPartitionUpdate(), execCurrentOf(), ExecCustomScan(), ExecDelete(), ExecDropSingleTupleTableSlot(), ExecEndAgg(), ExecEndCustomScan(), ExecEndMemoize(), ExecEvalCoerceViaIOSafe(), ExecEvalConvertRowtype(), ExecEvalFieldSelect(), ExecEvalFuncArgs(), ExecEvalHashedScalarArrayOp(), ExecEvalMinMax(), ExecEvalParamExec(), ExecEvalStepOp(), ExecEvalWholeRowVar(), ExecEvalXmlExpr(), ExecFetchSlotHeapTuple(), ExecFetchSlotMinimalTuple(), ExecFindMatchingSubPlans(), ExecFindPartition(), ExecGetAncestorResultRels(), ExecGetJunkAttribute(), ExecGetRangeTableRelation(), ExecGetRootToChildMap(), ExecGetUpdateNewTuple(), ExecHashIncreaseNumBatches(), ExecHashIncreaseNumBuckets(), ExecHashJoinImpl(), ExecHashRemoveNextSkewBucket(), ExecHashSkewTableInsert(), ExecHashTableCreate(), ExecHashTableDetach(), ExecHashTableDetachBatch(), ExecHashTableInsert(), ExecIncrementalSort(), ExecIndexBuildScanKeys(), ExecIndexMarkPos(), ExecIndexOnlyMarkPos(), ExecIndexOnlyRestrPos(), ExecIndexRestrPos(), ExecInitAgg(), ExecInitAppend(), ExecInitBitmapAnd(), ExecInitBitmapHeapScan(), ExecInitBitmapIndexScan(), ExecInitBitmapOr(), ExecInitCheck(), ExecInitCteScan(), ExecInitExprRec(), ExecInitForeignScan(), ExecInitFunctionResultSet(), ExecInitFunctionScan(), ExecInitGather(), ExecInitGatherMerge(), ExecInitGroup(), ExecInitHash(), ExecInitHashJoin(), ExecInitIncrementalSort(), ExecInitIndexScan(), ExecInitJunkFilter(), ExecInitLimit(), ExecInitLockRows(), ExecInitMemoize(), ExecInitMergeAppend(), ExecInitMergeJoin(), ExecInitMergeTupleSlots(), ExecInitModifyTable(), ExecInitNamedTuplestoreScan(), ExecInitNestLoop(), ExecInitNode(), ExecInitPartitionDispatchInfo(), ExecInitPartitionInfo(), ExecInitPartitionPruning(), ExecInitProjectSet(), ExecInitQual(), ExecInitRecursiveUnion(), ExecInitResult(), ExecInitRoutingInfo(), ExecInitSampleScan(), ExecInitSeqScan(), ExecInitSetOp(), ExecInitStoredGenerated(), ExecInitSubPlan(), ExecInitSubqueryScan(), ExecInitSubscriptingRef(), ExecInitTableFuncScan(), ExecInitUnique(), ExecInitUpdateProjection(), ExecInitValuesScan(), ExecInitWindowAgg(), ExecInitWorkTableScan(), ExecInsert(), ExecInsertIndexTuples(), ExecInterpExpr(), ExecJustAssignVarImpl(), ExecJustAssignVarVirtImpl(), ExecJustVarVirtImpl(), ExecLimit(), ExecLockRows(), ExecMakeTableFunctionResult(), ExecMaterial(), ExecMaterialMarkPos(), ExecMaterialRestrPos(), ExecMemoize(), ExecMergeJoin(), ExecModifyTable(), ExecNestLoop(), ExecOnConflictUpdate(), ExecParallelCreateReaders(), ExecParallelHashEnsureBatchAccessors(), ExecParallelHashFirstTuple(), ExecParallelHashIncreaseNumBatches(), ExecParallelHashIncreaseNumBuckets(), ExecParallelHashJoinPartitionOuter(), ExecParallelHashJoinSetUpBatches(), ExecParallelHashNextTuple(), ExecParallelHashRepartitionFirst(), ExecParallelHashTableInsert(), ExecParallelHashTableInsertCurrentBatch(), ExecParallelHashTableSetCurrentBatch(), ExecParallelHashTupleAlloc(), ExecParallelHashTuplePrealloc(), ExecParallelPrepHashTableForUnmatched(), ExecParallelReinitialize(), ExecParallelReportInstrumentation(), ExecPendingInserts(), ExecProjectSRF(), ExecPushExprSetupSteps(), ExecQual(), ExecQueryAndProcessResults(), ExecQueryUsingCursor(), ExecReadyInterpretedExpr(), ExecRefreshMatView(), ExecRenameStmt(), ExecReScanCustomScan(), ExecReScanHashJoin(), ExecRunCompiledExpr(), ExecScanFetch(), ExecScanReScan(), ExecScanSubPlan(), ExecSetParamPlan(), ExecSetParamPlanMulti(), ExecSetSlotDescriptor(), ExecSimpleRelationInsert(), ExecSimpleRelationUpdate(), ExecSort(), ExecStoreAllNullTuple(), ExecStoreBufferHeapTuple(), ExecStoreHeapTuple(), ExecStoreMinimalTuple(), ExecStorePinnedBufferHeapTuple(), ExecStoreVirtualTuple(), ExecSupportsMarkRestore(), execTuplesHashPrepare(), ExecTypeSetColNames(), ExecUpdate(), execute_attr_map_slot(), execute_attr_map_tuple(), execute_extension_script(), execute_foreign_modify(), executeAnyItem(), ExecuteCallStmt(), executeItemOptUnwrapResult(), executeItemOptUnwrapTarget(), executeItemUnwrapTargetArray(), executeJsonPath(), executeKeyValueMethod(), executeMetaCommand(), ExecuteRecoveryCommand(), ExecuteTruncateGuts(), ExecutorRewind(), ExecVacuum(), ExecWindowAgg(), ExecWorkTableScan(), ExitParallelMode(), expand_all_col_privileges(), expand_appendrel_subquery(), expand_array(), expand_dynamic_library_name(), expand_function_arguments(), expand_grouping_sets(), expand_groupingset_node(), expand_inherited_rtentry(), expand_partitioned_rtentry(), expand_planner_arrays(), expand_single_inheritance_child(), expand_table(), expand_tuple(), expand_vacuum_rel(), ExpandAllTables(), ExpandColumnRefStar(), ExpandConstraints(), expanded_record_set_field_internal(), expanded_record_set_fields(), expanded_record_set_tuple(), expandNSItemAttrs(), expandNSItemVars(), expandRecordVariable(), ExpandRowReference(), expandRTE(), ExpandSingleTable(), expandTupleDesc(), ExpireTreeKnownAssignedTransactionIds(), ExplainCloseWorker(), ExplainExecuteQuery(), ExplainIndentText(), ExplainJSONLineEnding(), ExplainOnePlan(), ExplainOneUtility(), ExplainOpenWorker(), ExplainPrintPlan(), ExplainQuery(), ExplainTargetRel(), ExplainYAMLLineStarting(), exprCollation(), exprSetCollation(), exprType(), exprTypmod(), ExtendBufferedRelBy(), ExtendBufferedRelLocal(), ExtendBufferedRelShared(), ExtendBufferedRelTo(), extendBufFile(), ExtendCommitTs(), extract_actual_join_clauses(), extract_autovac_opts(), extract_grouping_ops(), extract_lateral_references(), extract_or_clause(), extract_query_dependencies_walker(), extract_restriction_or_clauses(), extract_rollup_sets(), extract_variadic_args(), extractNotNullColumn(), extractRelOptions(), ExtractReplicaIdentity(), fastgetattr(), fasthash_accum(), fasthash_accum_cstring(), fasthash_accum_cstring_aligned(), FastPathGrantRelationLock(), FastPathUnGrantRelationLock(), fetch_fp_info(), fetch_more_data(), fetch_more_data_begin(), fetch_remote_table_info(), fetch_statentries_for_relation(), fetch_table_list(), fetch_tuple_flag(), FetchDynamicTimeZone(), FetchPreparedStatementResultDesc(), FetchStatementTargetList(), file_acquire_sample_rows(), FileClose(), FileFallocate(), FileGetRawDesc(), FileGetRawFlags(), FileGetRawMode(), FilePathName(), FilePrefetch(), FileReadV(), FileSize(), FileSync(), FileTruncate(), FileWriteback(), FileWriteV(), FileZero(), fill_expanded_ranges(), fill_hba_line(), fill_ident_line(), fill_in_constant_lengths(), fill_seq_fork_with_data(), fill_val(), fillJsonbValue(), fillQT(), FillXLogStatsRow(), filter_by_origin_cb_wrapper(), filter_prepare_cb_wrapper(), final_cost_hashjoin(), finalize_aggregates(), finalize_grouping_exprs_walker(), finalize_manifest(), finalize_plan(), find_childrel_parents(), find_cols_walker(), find_dependent_phvs_walker(), find_derived_clause_for_ec_member(), find_in_dynamic_libpath(), find_lateral_references(), find_multixact_start(), find_option(), find_or_make_matching_shared_tupledesc(), find_partition_scheme(), find_placeholder_info(), find_placeholders_in_jointree(), find_simplified_clause(), find_update_path(), find_var_for_subquery_tle(), find_window_functions_walker(), findCollationByOid(), findeq(), findExtensionByOid(), findFuncByOid(), findIndexByOid(), findJsonbValueFromContainer(), FindLockCycleRecurse(), FindLockCycleRecurseMember(), findNamespaceByOid(), findOprByOid(), findoprnd_recurse(), findPublicationByOid(), FindReplTupleInLocalRel(), findSubscriptionByOid(), findTableByOid(), findTypeByOid(), finish_foreign_modify(), FinishPreparedTransaction(), FinishWalRecovery(), finite_interval_mi(), finite_interval_pl(), fix_alternative_subplan(), fix_append_rel_relids(), fix_expr_common(), fix_indexqual_clause(), fix_indexqual_operand(), fix_merged_indexes(), fix_scan_expr_mutator(), fix_scan_expr_walker(), flagInhIndexes(), FlagRWConflict(), FlagSxactUnsafe(), flatCopyTargetEntry(), flatten_join_alias_vars(), flatten_join_alias_vars_mutator(), flatten_set_variable_args(), flatten_simple_union_all(), float_to_shortest_decimal_buf(), FlushOneBuffer(), FlushRelationsAllBuffers(), fmgr_sql(), for_each_from_setup(), forcePartitionRootLoad(), foreign_grouping_ok(), foreign_join_ok(), ForeignNext(), ForgetBackgroundWorker(), ForgetPrivateRefCountEntry(), ForgetUnstartedBackgroundWorkers(), format_numeric_locale(), format_operator_extended(), format_procedure_extended(), FormIndexDatum(), FormPartitionKeyDatum(), free_plperl_function(), FreeCachedExpression(), freeHyperLogLog(), FreePageBtreeAdjustAncestorKeys(), FreePageBtreeCleanup(), FreePageBtreeConsolidate(), FreePageBtreeFindLeftSibling(), FreePageBtreeFindRightSibling(), FreePageBtreeFirstKey(), FreePageBtreeGetRecycled(), FreePageBtreeInsertInternal(), FreePageBtreeInsertLeaf(), FreePageBtreeRemove(), FreePageBtreeRemovePage(), FreePageBtreeSearch(), FreePageBtreeSearchInternal(), FreePageBtreeSearchLeaf(), FreePageBtreeSplitPage(), FreePageBtreeUpdateParentPointers(), FreePageManagerGet(), FreePageManagerGetInternal(), FreePageManagerPut(), FreePageManagerPutInternal(), FreePagePopSpanLeader(), FreeQueryDesc(), FreeSnapshot(), FreeTupleDesc(), FreezeMultiXactId(), from_char_parse_int_len(), fsm_get_avail(), fsm_get_child(), fsm_get_heap_blk(), fsm_get_parent(), fsm_set_avail(), fsm_space_avail_to_cat(), fsm_truncate_avail(), fsm_vacuum_page(), FullTransactionIdFromXidAndCtx(), FullXidRelativeTo(), func_get_detail(), FuncnameGetCandidates(), gather_merge_init(), gather_merge_readnext(), gather_readnext(), gbt_inet_compress(), gbt_inet_consistent(), gbt_num_compress(), gbt_num_fetch(), gen_partprune_steps_internal(), gen_prune_step_op(), gen_prune_steps_from_opexps(), generate_append_tlist(), generate_base_implied_equalities(), generate_base_implied_equalities_const(), generate_base_implied_equalities_no_const(), generate_bitmap_or_paths(), generate_function_name(), generate_implied_equalities_for_column(), generate_join_implied_equalities(), generate_join_implied_equalities_for_ecs(), generate_matching_part_pairs(), generate_mergejoin_paths(), generate_normalized_query(), generate_operator_clause(), generate_orderedappend_paths(), generate_partition_qual(), generate_partitionwise_join_paths(), generate_recursion_path(), generate_setop_grouplist(), generate_setop_tlist(), generate_union_paths(), generateClonedExtStatsStmt(), generateClonedIndexStmt(), GenerateRecoveryConfig(), GenerationAlloc(), GenerationBlockFree(), GenerationContextCreate(), GenerationFree(), GenerationGetChunkContext(), GenerationGetChunkSpace(), GenerationIsEmpty(), GenerationRealloc(), GenerationReset(), GenerationStats(), generator_init(), generic_redo(), geqo_eval(), get_actual_clauses(), get_actual_variable_range(), get_agg_expr_helper(), get_aggregate_argtypes(), get_appendrel_parampathinfo(), get_baserel_parampathinfo(), get_best_segment(), get_catalog_object_by_oid(), get_cheapest_parameterized_child_path(), get_code_decomposition(), get_compress_algorithm_name(), get_configdata(), get_controlfile(), get_db_info(), get_delete_query_def(), get_destination_dir(), get_eclass_for_sort_expr(), get_eclass_indexes_for_relids(), get_ENR(), get_expr_result_type(), get_expr_width(), get_from_clause_coldeflist(), get_func_arg_info(), get_func_result_name(), get_func_signature(), get_func_sql_syntax(), get_function_rows(), get_guc_variables(), get_hash_partition_greatest_modulus(), get_hba_options(), get_index_column_opclass(), get_insert_query_def(), get_join_index_paths(), get_joinrel_parampathinfo(), get_local_synced_slots(), get_loop_count(), get_matching_hash_bounds(), get_matching_list_bounds(), get_matching_part_pairs(), get_matching_partitions(), get_matching_range_bounds(), get_merge_query_def(), get_merged_range_bounds(), get_name_for_var_field(), get_number_of_groups(), get_object_address(), get_object_namespace(), get_op_btree_interpretation(), get_parallel_object_list(), get_partition_for_tuple(), get_path_all(), get_publications_str(), get_qual_for_list(), get_qual_from_partbound(), get_range_partition(), get_range_partition_internal(), get_record_type_from_query(), get_rel_all_updated_cols(), get_rel_data_width(), get_rel_sync_entry(), get_relation_foreign_keys(), get_relation_info(), get_rels_with_domain(), get_replslot_index(), get_returning_data(), get_rewrite_oid(), get_rolespec_oid(), get_rolespec_tuple(), get_row_security_policies(), get_rtable_name(), get_rte_attribute_is_dropped(), get_rule_expr(), get_rule_sortgroupclause(), get_rule_windowspec(), get_segment_by_index(), get_setop_query(), get_singleton_append_subpath(), get_slru_entry(), get_steps_using_prefix(), get_steps_using_prefix_recurse(), get_switched_clauses(), get_tablespace_page_costs(), get_text_array_contents(), get_translated_update_targetlist(), get_update_query_def(), get_update_query_targetlist_def(), get_useful_ecs_for_relation(), get_variable(), get_view_query(), get_visible_ENR_metadata(), get_windowclause_startup_tuples(), get_worker(), GetAccessStrategyWithSize(), GetActiveSnapshot(), GetAfterTriggersTableData(), GetAfterTriggersTransitionTable(), GetAuthenticatedUserId(), GetBackgroundWorkerPid(), getBaseTypeAndTypmod(), GetBlockerStatusData(), GetCachedPlan(), getClosestMatch(), GetConfigOptionResetString(), GetConnection(), GetCTEForRTE(), GetCurrentCommandId(), GetCurrentLSN(), GetCurrentTransactionStopTimestamp(), GetDatabasePath(), GetExistingLocalJoinPath(), getExponentialRand(), GetFileBackupMethod(), GetFlushRecPtr(), GetForeignKeyActionTriggers(), GetForeignKeyCheckTriggers(), getGaussianRand(), getid(), GetIncrementalFilePath(), GetIncrementalFileSize(), GetIndexInputType(), getInsertSelectQuery(), getJsonPathVariable(), getKeyJsonValueFromContainer(), GetLatestSnapshot(), GetLocalBufferStorage(), GetLockmodeName(), GetLocksMethodTable(), GetLockStatusData(), GetLockTagsMethodTable(), GetLWLockIdentifier(), GetMemoryChunkMethodID(), getMessageFromWorker(), getmissingattr(), GetMockAuthenticationNonce(), GetMultiXactIdMembers(), GetNamedDSMSegment(), GetNewOidWithIndex(), GetNewRelFileNumber(), GetNewTransactionId(), GetNSItemByRangeTablePosn(), getObjectDescription(), getObjectIdentityParts(), getObjectTypeDescription(), GetOldestActiveTransactionId(), GetOldestSafeDecodingTransactionId(), GetOperatorFromWellKnownStrategy(), GetOuterUserId(), GetParentPredicateLockTag(), GetPredicateLockStatusData(), GetPrivateRefCount(), GetPrivateRefCountEntry(), GetPubPartitionOptionRelations(), GetRealCmax(), GetRealCmin(), GetRelationPath(), GetRmgrDesc(), getRootTableInfo(), GetRTEByRangeTablePosn(), GetRunningTransactionData(), GetRunningTransactionLocks(), GetSafeSnapshot(), getScalar(), GetSchemaPublicationRelations(), GetSearchPathMatcher(), GetSerializableTransactionSnapshot(), GetSerializableTransactionSnapshotInt(), GetSessionUserId(), GetSlotInvalidationCause(), GetSnapshotData(), GetSnapshotDataReuse(), GetStableLatestTransactionId(), GetStandbyFlushRecPtr(), GetSysCacheOid(), GetSystemIdentifier(), GetTableAmRoutine(), GetTableInfo(), GetTempTablespaces(), GetTempToastNamespace(), gettimeofday(), gettoken_tsvector(), GetTransactionSnapshot(), getTransactionStatus(), GetTupleForTrigger(), GetUserId(), getVariable(), GetVictimBuffer(), GetVirtualXIDsDelayingChkpt(), GetVisibilityMapPins(), GetWaitEventExtensionNames(), GetWALBlockInfo(), GetWALInsertionTimeLine(), GetWALRecordInfo(), GetWALRecordsInfo(), GetXLogBuffer(), GetXLogReceiptTime(), getZipfianRand(), gin_consistent_jsonb(), gin_consistent_jsonb_path(), gin_trgm_triconsistent(), gin_triconsistent_jsonb(), gin_triconsistent_jsonb_path(), ginbeginscan(), ginbulkdelete(), ginCombineData(), ginCompressPostingList(), gincost_pattern(), gincost_scalararrayopexpr(), GinDataPageAddPostingItem(), ginDeletePage(), ginFindLeafPage(), ginFindParents(), ginFinishSplit(), GinFormTuple(), ginGetBAEntry(), ginHeapTupleFastInsert(), ginInsertBAEntries(), ginInsertCleanup(), GinPageDeletePostingItem(), ginPlaceToPage(), ginPostingListDecodeAllSegments(), ginRedoDeleteListPages(), ginRedoDeletePage(), ginRedoInsert(), ginRedoInsertData(), ginRedoInsertEntry(), ginRedoInsertListPage(), ginRedoRecompress(), ginRedoUpdateMetapage(), ginRedoVacuumDataLeafPage(), ginScanToDelete(), gintuple_get_attrnum(), ginvacuumcleanup(), ginVacuumPostingTreeLeaves(), gist_box_picksplit(), gist_point_consistent(), gistbufferinginserttuples(), gistbuild(), gistchoose(), gistdeletepage(), gistdoinsert(), gistFindCorrectParent(), gistFindPath(), gistfinishsplit(), gistfixsplit(), gistGetFakeLSN(), gistGetItupFromPage(), gistindex_keytest(), gistkillitems(), gistMemorizeAllDownlinks(), GistPageGetDeleteXid(), GistPageSetDeleted(), gistPlaceItupToPage(), gistplacetopage(), gistPopItupFromNodeBuffer(), gistProcessItup(), gistprunepage(), gistRedoPageSplitRecord(), gistRedoPageUpdateRecord(), gistRelocateBuildBuffersOnSplit(), gistrescan(), gistScanPage(), gistSplit(), gistSplitByKey(), gistUserPicksplit(), gistvacuum_delete_empty_pages(), GlobalVisHorizonKindForRel(), GlobalVisTestFor(), GlobalVisTestIsRemovableFullXid(), GrantLock(), GrantLockLocal(), group_by_has_partkey(), group_keys_reorder_by_pathkeys(), grouping_planner(), gtsvector_same(), guc_free(), guc_realloc(), GUCArrayAdd(), GUCArrayDelete(), handle_streamed_transaction(), HandleCopyResult(), HandleSlashCmds(), HandleUploadManifestPacket(), HandleWalSndInitStopping(), hash_agg_enter_spill_mode(), hash_array(), hash_array_extended(), hash_create(), hash_destroy(), hash_get_shared_size(), hash_inner_and_outer(), hash_numeric(), hash_numeric_extended(), hash_object_field_end(), hash_record(), hash_record_extended(), hash_scalar(), hash_search_with_hash_value(), hash_xlog_add_ovfl_page(), hash_xlog_init_meta_page(), hash_xlog_move_page_contents(), hash_xlog_squeeze_page(), hashagg_recompile_expressions(), hashagg_spill_tuple(), hashbeginscan(), hashbucketcleanup(), hashbulkdelete(), have_partkey_equi_join(), have_relevant_eclass_joinclause(), HaveNFreeProcs(), HaveVirtualXIDsDelayingChkpt(), heap2_desc(), heap_abort_speculative(), heap_attisnull(), heap_attr_equals(), heap_beginscan(), heap_compare_slots(), heap_create(), heap_create_with_catalog(), heap_delete(), heap_fetch_toast_slice(), heap_fill_tuple(), heap_finish_speculative(), heap_force_common(), heap_freeze_execute_prepared(), heap_get_latest_tid(), heap_get_root_tuples(), heap_getsysattr(), heap_hot_search_buffer(), heap_index_delete_tuples(), heap_insert(), heap_lock_tuple(), heap_lock_updated_tuple_rec(), heap_log_freeze_cmp(), heap_log_freeze_plan(), heap_multi_insert(), heap_page_is_all_visible(), heap_page_prune_execute(), heap_prepare_freeze_tuple(), heap_prepare_insert(), heap_prune_chain(), heap_prune_record_dead(), heap_prune_record_prunable(), heap_prune_record_redirect(), heap_prune_record_unused(), heap_setscanlimits(), heap_toast_delete(), heap_toast_insert_or_update(), heap_tuple_infomask_flags(), heap_tuple_should_freeze(), heap_update(), heap_vacuum_rel(), heap_xlog_insert(), heap_xlog_multi_insert(), heap_xlog_prune(), heap_xlog_update(), heap_xlog_vacuum(), heap_xlog_visible(), heapam_fetch_row_version(), heapam_index_build_range_scan(), heapam_index_fetch_tuple(), heapam_index_validate_scan(), heapam_relation_copy_for_cluster(), heapam_relation_set_new_filelocator(), heapam_scan_analyze_next_tuple(), heapam_scan_bitmap_next_block(), heapam_scan_bitmap_next_tuple(), heapam_scan_sample_next_block(), heapam_scan_sample_next_tuple(), heapam_tuple_lock(), heapam_tuple_satisfies_snapshot(), heapam_tuple_update(), HeapCheckForSerializableConflictOut(), heapgetpage(), heapgettup(), heapgettup_continue_page(), heapgettup_initial_block(), heapgettup_pagemode(), heapgettup_start_page(), HeapTupleHeaderGetCmax(), HeapTupleHeaderGetCmin(), HeapTupleHeaderIsOnlyLocked(), HeapTupleIsSurelyDead(), HeapTupleSatisfiesDirty(), HeapTupleSatisfiesHistoricMVCC(), HeapTupleSatisfiesMVCC(), HeapTupleSatisfiesNonVacuumable(), HeapTupleSatisfiesSelf(), HeapTupleSatisfiesToast(), HeapTupleSatisfiesUpdate(), HeapTupleSatisfiesVacuum(), HeapTupleSatisfiesVacuumHorizon(), hemdist(), histcontrol_hook(), histogram_selectivity(), HistoricSnapshotGetTupleCids(), hk_breadth_search(), HotStandbyActiveInReplay(), hstore_exec_setup(), hstore_from_array(), hstore_from_arrays(), hstore_from_record(), hstore_hash(), hstore_hash_extended(), hstore_subscript_fetch(), hstore_subscript_transform(), hstore_to_array_internal(), htsv_get_valid_status(), hypothetical_dense_rank_final(), hypothetical_rank_common(), identify_join_columns(), ieee_float32_to_uint32(), in_range_numeric_numeric(), inclusion_get_strategy_procinfo(), IncrBufferRefCount(), IncrTupleDescRefCount(), index_beginscan(), index_beginscan_bitmap(), index_beginscan_parallel(), index_build(), index_close(), index_compute_xid_horizon_for_tuples(), index_concurrently_build(), index_constraint_create(), index_create(), index_deform_tuple_internal(), index_delete_check_htid(), index_delete_sort_cmp(), index_drop(), index_form_tuple_context(), index_getattr(), index_getnext_slot(), index_getnext_tid(), index_getprocid(), index_getprocinfo(), index_insert_cleanup(), index_pages_fetched(), index_parallelscan_estimate(), index_parallelscan_initialize(), index_register(), index_reloptions(), index_rescan(), index_restrpos(), index_set_state_flags(), index_store_float8_orderby_distances(), index_truncate_tuple(), index_update_stats(), indexam_property(), IndexGetRelation(), IndexNextWithReorder(), IndexOnlyNext(), IndexSetParentIndex(), inet_gist_consistent(), inet_spg_choose(), inet_spg_inner_consistent(), infobits_desc(), init_params(), init_ps_display(), init_rel_sync_cache(), init_returning_filter(), init_sexpr(), init_span(), init_toast_snapshot(), initArrayResultAny(), InitAuxiliaryProcess(), InitBufferPool(), InitBufferPoolAccess(), InitCatalogCache(), InitCatalogCachePhase2(), InitCatCache(), InitCatCachePhase2(), initClosestMatch(), InitDiscoverCompressFileHandle(), InitFileAccess(), initial_cost_mergejoin(), initialize_mergeclause_eclasses(), initialize_phase(), initialize_reloptions(), InitializeClientEncoding(), InitializeGUCOptions(), InitializeLatchSupport(), InitializeLatchWaitSet(), InitializeMaxBackends(), InitializeOneGUCOption(), InitializeSessionUserId(), InitializeSessionUserIdStandalone(), InitializeSystemUser(), InitializeWalConsistencyChecking(), InitLatch(), InitPartitionPruneContext(), InitPlan(), InitPostgres(), InitPostmasterDeathWatchHandle(), InitPredicateLocks(), InitProcess(), InitProcessPhase2(), InitProcGlobal(), InitRecoveryTransactionEnvironment(), InitShmemAllocation(), InitStandaloneProcess(), initStringInfoFromString(), inittapes(), InitTemporaryFileAccess(), InitTempTableNamespace(), InitWalRecovery(), InitWalSenderSlot(), InitXLogInsert(), inline_set_returning_function(), Insert(), insert_item_into_bucket(), insert_new_cell(), insert_timeout(), InsertOneNull(), InsertOneValue(), InstallXLogFileSegment(), instantiate_empty_record_variable(), int2vectorrecv(), interval_support(), intorel_startup(), intset_add_member(), intset_is_member(), intset_iterate_next(), intset_update_upper(), inv_close(), inv_getsize(), inv_read(), inv_seek(), inv_tell(), inv_truncate(), inv_write(), InvalidateBuffer(), InvalidateConstraintCacheCallBack(), InvalidateObsoleteReplicationSlots(), InvalidateOprCacheCallBack(), InvalidateOprProofCacheCallBack(), InvalidatePossiblyObsoleteSlot(), InvalidateVictimBuffer(), invariant_g_offset(), invariant_l_nontarget_offset(), invariant_l_offset(), invariant_leq_offset(), is_code_in_table(), is_dummy_partition(), is_libpq_option(), is_safe_append_member(), is_simple_union_all_recurse(), is_simple_values(), is_standard_join_alias_expression(), is_strict_saop(), is_subquery_var(), is_valid_ascii(), is_valid_option(), IsAffixFlagInUse(), IsBufferCleanupOK(), IsCheckpointOnSchedule(), IsIndexUsableForReplicaIdentityFull(), IsPostmasterChildWalSender(), issue_xlog_fsync(), IsTidEqualAnyClause(), ItemPointerCopy(), ItemPointerGetBlockNumber(), ItemPointerGetOffsetNumber(), ItemPointerSet(), ItemPointerSetBlockNumber(), ItemPointerSetInvalid(), ItemPointerSetOffsetNumber(), itemptr_to_uint64(), iterate_word_similarity(), IteratorConcat(), iteratorFromContainer(), join_is_removable(), join_search_one_level(), json_agg_finalfn(), json_lex_string(), json_object_agg_finalfn(), jsonb_agg_finalfn(), jsonb_concat(), jsonb_delete(), jsonb_delete_array(), jsonb_delete_idx(), jsonb_delete_path(), jsonb_get_element(), jsonb_in_object_field_start(), jsonb_in_scalar(), jsonb_insert(), jsonb_object_agg_finalfn(), jsonb_set(), jsonb_strip_nulls(), jsonb_subscript_fetch(), jsonb_subscript_transform(), jsonb_to_plpython(), JsonbArraySize(), JsonbDeepContains(), JsonbExtractScalar(), JsonbToCStringWorker(), JsonbType(), JsonbValueToJsonb(), jspGetArg(), jspGetArraySubscript(), jspGetBool(), jspGetLeftArg(), jspGetNext(), jspGetNumeric(), jspGetRightArg(), jspGetString(), jspInit(), JsValueToJsObject(), JumbleQuery(), keyGetItem(), KnownAssignedXidExists(), KnownAssignedXidsAdd(), KnownAssignedXidsCompress(), KnownAssignedXidsRemove(), KnownAssignedXidsRemovePreceding(), KnownAssignedXidsSearch(), label_sort_with_costsize(), LagTrackerRead(), lappend(), lappend_int(), lappend_oid(), lappend_xid(), lastval(), LaunchParallelWorkers(), lazy_cleanup_all_indexes(), lazy_cleanup_one_index(), lazy_scan_heap(), lazy_scan_noprune(), lazy_scan_prune(), lazy_scan_skip(), lazy_vacuum(), lazy_vacuum_all_indexes(), lazy_vacuum_heap_page(), lazy_vacuum_heap_rel(), lazy_vacuum_one_index(), lcons(), lcons_int(), lcons_oid(), LCS_asString(), leader_takeover_tapes(), leafRepackItems(), lengthCompareJsonbStringValue(), libpq_append_conn_error(), libpq_append_error(), libpqrcv_connect(), libpqrcv_get_conninfo(), libpqrcv_get_senderinfo(), libpqrcv_readtimelinehistoryfile(), libpqrcv_startstreaming(), like_fixed_prefix(), like_regex_support(), list_cell_number(), list_concat(), list_concat_copy(), list_concat_unique(), list_concat_unique_int(), list_concat_unique_oid(), list_concat_unique_ptr(), list_copy_deep(), list_deduplicate_oid(), list_delete(), list_delete_int(), list_delete_nth_cell(), list_delete_oid(), list_delete_ptr(), list_difference(), list_difference_int(), list_difference_oid(), list_difference_ptr(), list_free_deep(), list_insert_nth(), list_insert_nth_int(), list_insert_nth_oid(), list_intersection(), list_intersection_int(), list_last_cell(), list_member(), list_member_int(), list_member_oid(), list_member_ptr(), list_member_xid(), list_nth(), list_nth_cell(), list_nth_int(), list_nth_oid(), list_union(), list_union_int(), list_union_oid(), list_union_ptr(), llvm_assert_in_fatal_section(), llvm_build_inline_plan(), llvm_compile_expr(), llvm_execute_inline_plan(), llvm_expand_funcname(), llvm_resolve_symbol(), llvm_shutdown(), llvm_split_symbol_name(), lnext(), lo_get_fragment_internal(), lo_import_internal(), load_hba(), load_ident(), load_relcache_init_file(), load_typcache_tupdesc(), LocalBufferAlloc(), LocalProcessControlFile(), lock_twophase_postcommit(), lock_twophase_recover(), lock_twophase_standby_recover(), LockAcquireExtended(), LockBuffer(), LockBufferForCleanup(), LockBufHdr(), LockCheckConflicts(), LockReassignCurrentOwner(), LockRefindAndRelease(), LockRelease(), LockReleaseAll(), LockWaiterCount(), log10Pow2(), log10Pow5(), log_heap_new_cid(), log_heap_update(), log_heap_visible(), log_newpage_buffer(), logfile_rotate_dest(), logical_heap_rewrite_flush_mappings(), LogicalConfirmReceivedLocation(), LogicalIncreaseRestartDecodingForSlot(), LogicalIncreaseXminForSlot(), logicalmsg_desc(), LogicalOutputWrite(), LogicalParallelApplyLoop(), logicalrep_pa_worker_count(), logicalrep_pa_worker_stop(), logicalrep_read_stream_abort(), logicalrep_read_stream_start(), logicalrep_sync_worker_count(), logicalrep_worker_attach(), logicalrep_worker_cleanup(), logicalrep_worker_find(), logicalrep_worker_launch(), logicalrep_worker_stop(), logicalrep_worker_stop_internal(), logicalrep_worker_wakeup_ptr(), logicalrep_workers_find(), logicalrep_write_commit_prepared(), logicalrep_write_delete(), logicalrep_write_prepare_common(), logicalrep_write_rollback_prepared(), logicalrep_write_stream_abort(), logicalrep_write_stream_commit(), logicalrep_write_stream_start(), logicalrep_write_update(), LogicalReplicationSlotHasPendingWal(), LogicalRepSyncTableStart(), LogicalTapeBackspace(), LogicalTapeFreeze(), LogicalTapeRead(), LogicalTapeRewindForRead(), LogicalTapeSeek(), LogicalTapeTell(), LogicalTapeWrite(), LogLogicalMessage(), LogRecoveryConflict(), LogStandbySnapshot(), lookup_collation_cache(), lookup_proof_cache(), lookup_rowtype_tupdesc_internal(), lookup_ts_config_cache(), lookup_ts_dictionary_cache(), lookup_ts_parser_cache(), lookup_type_cache(), LookupFuncNameInternal(), LookupFuncWithArgs(), LookupGXact(), LookupOpclassInfo(), LookupOperWithArgs(), LookupTupleHashEntry(), LookupTupleHashEntryHash(), LookupTypeNameExtended(), lowerstr_with_len(), lrq_alloc(), lrq_prefetch(), LruDelete(), LruInsert(), ltree_gist_alloc(), ltsGetPreallocBlock(), ltsInitReadBuffer(), LWLockAcquire(), LWLockAcquireOrWait(), LWLockAttemptLock(), LWLockConditionalAcquire(), LWLockDequeueSelf(), LWLockRelease(), LWLockUpdateVar(), LWLockWaitForVar(), LWLockWaitListUnlock(), LWLockWakeup(), main(), MainLoop(), MaintainLatestCompletedXid(), MaintainLatestCompletedXidRecovery(), make_bound_box(), make_bounded_heap(), make_build_data(), make_callstmt_target(), make_datum_param(), make_expanded_record_from_datum(), make_greater_string(), make_inh_translation_list(), make_join_rel(), make_modifytable(), make_new_connection(), make_new_heap(), make_new_segment(), make_one_partition_rbound(), make_one_rel(), make_oper_cache_entry(), make_outerjoininfo(), make_partition_op_expr(), make_partition_pruneinfo(), make_partitionedrel_pruneinfo(), make_pathkeys_for_sortclauses(), make_pathkeys_for_window(), make_recursive_union(), make_restrictinfo(), make_restrictinfo_internal(), make_result_opt_error(), make_ruledef(), make_scalar_key(), make_setop(), make_sort_input_target(), make_subplan(), make_trigrams(), make_tuple_from_result_row(), make_unique_from_pathkeys(), make_unique_from_sortclauses(), make_viewdef(), make_window_input_target(), makeArrayResultArr(), makeCompoundFlags(), makeDependencyGraph(), makeIndexInfo(), makeMdArrayResult(), MakeNewFileSetSegment(), makeObjectName(), makeSublist(), map_sql_identifier_to_xml_name(), map_variable_attnos_mutator(), mark_async_capable_plan(), mark_invalid_subplans_as_finished(), mark_partial_aggref(), mark_rels_nulled_by_join(), MarkAsPrepared(), MarkAsPreparing(), MarkAsPreparingGuts(), MarkBufferDirty(), MarkBufferDirtyHint(), MarkInheritDetached(), MarkLocalBufferDirty(), MarkLockClear(), MarkPortalDone(), MarkPortalFailed(), MarkPostmasterChildActive(), MarkPostmasterChildInactive(), MarkPostmasterChildWalSender(), MarkSubxactTopXidLogged(), markVarForSelectPriv(), match_clause_to_indexcol(), match_clause_to_ordering_op(), match_clause_to_partition_key(), match_eclasses_to_foreign_key_col(), match_expr_to_partition_keys(), match_pattern_prefix(), match_unique_clauses(), match_unsorted_outer(), MatchNamedCall(), materializeResult(), max_parallel_hazard_test(), MaxPredicateChildLocks(), maybe_reread_subscription(), maybe_start_skipping_changes(), mcelem_tsquery_selec(), mcv_get_match_bitmap(), md5_crypt_verify(), mdcreate(), mdextend(), mdnblocks(), mdopenfork(), mdprefetch(), mdreadv(), mdtruncate(), mdwriteback(), mdwritev(), mdzeroextend(), MemoryChunkGetBlock(), MemoryChunkGetValue(), MemoryChunkIsExternal(), MemoryChunkSetHdrMask(), MemoryChunkSetHdrMaskExternal(), MemoryContextAlloc(), MemoryContextAllocAligned(), MemoryContextAllocExtended(), MemoryContextAllocHuge(), MemoryContextAllocZero(), MemoryContextAllowInCriticalSection(), MemoryContextCreate(), MemoryContextDelete(), MemoryContextDeleteChildren(), MemoryContextGetParent(), MemoryContextInit(), MemoryContextIsEmpty(), MemoryContextMemAllocated(), MemoryContextRegisterResetCallback(), MemoryContextReset(), MemoryContextResetChildren(), MemoryContextResetOnly(), MemoryContextSetIdentifier(), MemoryContextSetParent(), MemoryContextStatsInternal(), merge_default_partitions(), merge_fdw_options(), merge_list_bounds(), merge_matching_partitions(), merge_null_partitions(), merge_partition_with_dummy(), merge_range_bounds(), MergeAffix(), MergeAttributes(), MergeAttributesIntoExisting(), MergeCheckConstraint(), MergeConstraintsIntoExisting(), mergejoinscansel(), mergeonerun(), mergeruns(), mergeStates(), MergeWithExistingConstraint(), message_cb_wrapper(), minimal_tuple_from_heap_tuple(), minmax_get_strategy_procinfo(), minmax_multi_get_strategy_procinfo(), minmax_multi_init(), MJExamineQuals(), mod_m(), mode_final(), ModifyWaitEvent(), moveLeafs(), mq_putmessage(), mul_var(), mulShift(), multi_sort_init(), MultiExecParallelHash(), multirange_contains_range_internal(), multirange_get_bounds(), multirange_get_range(), multirange_overleft_range(), multirange_overright_range(), multirange_union_range_equal(), multixact_redo(), multixact_twophase_postcommit(), multixact_twophase_recover(), MultiXactAdvanceOldest(), MultiXactIdCreate(), MultiXactIdExpand(), MultiXactIdGetUpdateXid(), MultiXactShmemInit(), n_choose_k(), NamedTuplestoreScanNext(), NamespaceCreate(), network_abbrev_convert(), network_subset_support(), new_intArrayType(), new_list(), newNode(), NewPrivateRefCountEntry(), NextCopyFrom(), NextCopyFromRawFields(), nextval_internal(), NISortDictionary(), nocache_index_getattr(), nocachegetattr(), NormalTransactionIdOlder(), notification_hash(), notification_match(), NUM_cache_getnew(), numeric_abbrev_convert(), numeric_add_opt_error(), numeric_div_opt_error(), numeric_div_trunc(), numeric_log(), numeric_mul_opt_error(), numeric_power(), numeric_sign(), numeric_sign_internal(), numeric_sub_opt_error(), numeric_support(), numericvar_to_int64(), numericvar_to_uint64(), object_aclmask_ext(), object_ownercheck(), objectNamesToOids(), OffsetVarNodes_walker(), oidvectorrecv(), on_error_rollback_hook(), OnConflict_CheckForSerializationFailure(), open_file_in_directory(), open_none(), open_write_none(), OpenTemporaryFile(), OpernameGetCandidates(), optimize_window_clauses(), ordered_set_startup(), ordered_set_transition_multi(), OwnLatch(), p_isEOF(), p_iswhat(), pa_decr_and_wait_stream_block(), pa_find_worker(), pa_free_worker(), pa_free_worker_info(), pa_get_fileset_state(), pa_send_data(), pa_set_fileset_state(), pa_xact_finish(), packGraph(), page_header(), page_verify_redirects(), PageAddItemExtended(), PageGetItem(), PageIndexMultiDelete(), PageIndexTupleDelete(), PageIndexTupleDeleteNoCompact(), PageIndexTupleOverwrite(), PageInit(), PageRepairFragmentation(), PageSetPageSizeAndVersion(), PageTruncateLinePointerArray(), PageValidateSpecialPointer(), pairingheap_first(), pairingheap_remove(), pairingheap_remove_first(), palloc(), palloc0(), palloc_extended(), parallel_restore(), parallel_vacuum_bulkdel_all_indexes(), parallel_vacuum_cleanup_all_indexes(), parallel_vacuum_end(), parallel_vacuum_init(), parallel_vacuum_main(), parallel_vacuum_process_all_indexes(), parallel_vacuum_process_unsafe_indexes(), ParallelApplyWorkerMain(), ParallelBackupEnd(), ParallelBackupStart(), ParallelQueryMain(), ParallelSlotsGetIdle(), ParallelSlotsSetup(), ParallelWorkerMain(), ParallelWorkerReportLastRecEnd(), parse_analyze_fixedparams(), parse_analyze_varparams(), parse_analyze_withcb(), parse_datetime(), parse_hba_line(), parse_ident_line(), parse_object(), parse_output_parameters(), parse_subscription_options(), parse_tsquery(), parseCheckAggregates(), ParseFraction(), ParseFuncOrColumn(), ParseISO8601Number(), ParseLongOption(), parseNameAndArgTypes(), parseQuery(), parseWorkerCommand(), parseWorkerResponse(), partition_bounds_copy(), partition_bounds_create(), partition_bounds_equal(), partition_bounds_merge(), PartitionDirectoryLookup(), PartitionPruneFixSubPlanMap(), partitions_are_ordered(), partkey_datum_from_expr(), path_inter(), PathNameCreateTemporaryFile(), PathNameOpenTemporaryFile(), patternsel_common(), patternToSQLRegex(), percentile_cont_final_common(), percentile_cont_multi_final_common(), percentile_disc_final(), percentile_disc_multi_final(), perform_base_backup(), perform_pruning_base_step(), perform_pruning_combine_step(), perform_pullup_replace_vars(), perform_work_item(), PerformCursorOpen(), PerformWalRecovery(), PersistHoldablePortal(), pg_atomic_fetch_sub_u32(), pg_atomic_fetch_sub_u64(), pg_atomic_sub_fetch_u32(), pg_atomic_sub_fetch_u64(), pg_b64_decode(), pg_b64_encode(), pg_backup_stop(), pg_blocking_pids(), pg_checksum_block(), pg_checksum_final(), pg_checksum_page(), pg_checksum_type_name(), pg_clean_ascii(), pg_collation_actual_version(), pg_cryptohash_error(), pg_decode_change(), pg_decode_startup(), pg_decode_stream_abort(), pg_encoding_max_length(), pg_encoding_to_char(), pg_file_exists(), pg_fsync(), pg_get_constraintdef_worker(), pg_get_functiondef(), pg_get_indexdef_worker(), pg_get_partkeydef_worker(), pg_get_replication_slots(), pg_get_wal_replay_pause_state(), pg_GSS_read(), pg_GSS_write(), pg_hmac_error(), pg_input_error_info(), pg_isolation_test_session_is_blocked(), pg_leftmost_one_pos32(), pg_leftmost_one_pos64(), pg_lfind32(), pg_log_generic_v(), pg_log_v(), pg_logical_replication_slot_advance(), pg_logical_slot_get_changes_guts(), pg_lsn_in_internal(), pg_newlocale_from_collation(), pg_nextpower2_32(), pg_nextpower2_64(), pg_partition_root(), pg_physical_replication_slot_advance(), pg_plan_query(), pg_pwrite_zeros(), pg_queue_signal(), pg_re_throw(), pg_read_binary_file_common(), pg_read_file_common(), pg_relation_filepath(), pg_replication_origin_progress(), pg_replication_slot_advance(), pg_rightmost_one_pos32(), pg_rightmost_one_pos64(), pg_SASL_init(), pg_saslprep(), pg_settings_get_flags(), pg_stat_get_io(), pg_stat_statements_internal(), pg_stats_ext_mcvlist_items(), pg_strcoll_libc(), pg_strfromd(), pg_strncoll_libc(), pg_strnxfrm_libc(), pg_strxfrm_libc(), pg_timer_thread(), pg_ultostr_zeropad(), pg_utf8_verifystr(), pg_verify_mbstr(), pg_verify_mbstr_len(), pg_visibility_tupdesc(), pg_xact_status(), PgArchiverMain(), pgfdw_finish_abort_cleanup(), pgfdw_finish_pre_commit_cleanup(), pgfdw_finish_pre_subcommit_cleanup(), pgfdw_inval_callback(), pgfdw_subxact_callback(), pgfdw_xact_callback(), pgoutput_change(), pgoutput_commit_txn(), pgoutput_row_filter(), pgoutput_row_filter_exec_expr(), pgoutput_send_begin(), pgoutput_stream_abort(), pgoutput_stream_commit(), pgoutput_stream_prepare_txn(), pgoutput_stream_start(), pgoutput_stream_stop(), PGSemaphoreCreate(), PGSharedMemoryCreate(), PGSharedMemoryNoReAttach(), PGSharedMemoryReAttach(), pgss_store(), pgstat_acquire_entry_ref(), pgstat_assoc_relation(), pgstat_attach_shmem(), pgstat_before_server_shutdown(), pgstat_begin_changecount_write(), pgstat_beinit(), pgstat_bestart(), pgstat_build_snapshot(), pgstat_build_snapshot_fixed(), pgstat_cmp_hash_key(), pgstat_count_heap_update(), pgstat_count_io_op_n(), pgstat_database_flush_cb(), pgstat_delete_pending_entry(), pgstat_detach_shmem(), pgstat_drop_database_and_contents(), pgstat_drop_entry_internal(), pgstat_dsa_init_size(), pgstat_end_changecount_write(), pgstat_fetch_entry(), pgstat_flush_io(), pgstat_flush_pending_entries(), pgstat_flush_wal(), pgstat_gc_entry_refs(), pgstat_get_entry_data(), pgstat_get_entry_ref(), pgstat_get_entry_ref_cached(), pgstat_get_kind_info(), pgstat_get_transactional_drops(), pgstat_hash_hash_key(), pgstat_initialize(), pgstat_need_entry_refs_gc(), pgstat_prep_database_pending(), pgstat_prep_pending_entry(), pgstat_progress_incr_param(), pgstat_progress_update_multi_param(), pgstat_progress_update_param(), pgstat_read_statsfile(), pgstat_reinit_entry(), pgstat_release_all_entry_refs(), pgstat_release_entry_ref(), pgstat_release_matching_entry_refs(), pgstat_report_analyze(), pgstat_report_autovac(), pgstat_report_bgwriter(), pgstat_report_checkpointer(), pgstat_report_recovery_conflict(), pgstat_report_stat(), pgstat_reset(), pgstat_reset_entry(), pgstat_reset_replslot(), pgstat_reset_slru(), pgstat_setup_shared_refs(), pgstat_shutdown_hook(), pgstat_snapshot_fixed(), pgstat_unlink_relation(), pgstat_write_statsfile(), pgtls_verify_peer_name_matches_certificate_guts(), pgwin32_dispatch_queued_signals(), pgwin32_ReserveSharedMemoryRegion(), pgwin32_select(), pgwin32_SharedMemoryDelete(), PhysicalConfirmReceivedLocation(), PinBuffer(), PinBuffer_Locked(), placeChar(), plan_set_operations(), plan_single_revoke(), PlanCacheComputeResultDesc(), PlanCacheObjectCallback(), PlanCacheRelCallback(), plperl_call_perl_func(), plperl_return_next_internal(), plperl_sv_to_datum(), plperl_trigger_handler(), plpgsql_append_source_text(), plpgsql_build_recfield(), plpgsql_destroy_econtext(), plpgsql_exec_trigger(), plpgsql_free_function_memory(), plpgsql_HashTableInit(), plpgsql_inline_handler(), plpgsql_ns_additem(), plpgsql_ns_pop(), plpgsql_param_compile(), plpgsql_param_eval_generic(), plpgsql_param_eval_generic_ro(), plpgsql_param_eval_recfield(), plpgsql_param_eval_var(), plpgsql_param_eval_var_ro(), plpgsql_param_fetch(), plsample_trigger_handler(), pltcl_func_handler(), pltcl_handler(), pltcl_init_tuple_store(), pltcl_trigger_handler(), PLy_abort_open_subtransactions(), PLy_cursor_plan(), PLy_cursor_query(), PLy_exec_function(), PLy_exec_trigger(), PLy_generate_spi_exceptions(), PLy_global_args_pop(), PLy_input_setup_tuple(), PLy_output_setup_record(), PLy_output_setup_tuple(), PLy_procedure_call(), PLy_procedure_create(), PLy_procedure_munge_source(), PLy_spi_prepare(), PLy_traceback(), PLy_trigger_build_args(), PLyDict_FromTuple(), PLyList_FromArray(), PLyMapping_ToComposite(), PLyObject_ToComposite(), PLySequence_ToComposite(), PLySequence_ToJsonbValue(), PLyUnicode_FromJsonbValue(), point_inside(), poly_contain_poly(), poly_overlap_internal(), poly_to_circle(), PopActiveSnapshot(), populate_array(), populate_array_assign_ndims(), populate_array_dim_jsonb(), populate_array_element(), populate_array_element_end(), populate_array_json(), populate_array_object_start(), populate_array_report_expected_array(), populate_array_scalar(), populate_domain(), populate_record_worker(), populate_recordset_object_field_end(), populate_recordset_worker(), populate_scalar(), populate_typ_list(), PortalCleanup(), PortalCreateHoldStore(), PortalDefineQuery(), PortalDrop(), PortalRun(), PortalRunFetch(), PortalRunMulti(), PortalRunSelect(), PortalRunUtility(), PortalStart(), postgres_fdw_get_connections(), postgresAcquireSampleRowsFunc(), postgresBeginForeignInsert(), postgresEndForeignInsert(), postgresExecForeignTruncate(), postgresExplainForeignScan(), postgresForeignAsyncConfigureWait(), postgresForeignAsyncNotify(), postgresGetForeignModifyBatchSize(), postgresGetForeignPaths(), postgresGetForeignPlan(), postgresImportForeignSchema(), postgresIterateDirectModify(), PostgresMain(), postgresPlanDirectModify(), postgresRecheckForeignScan(), PostgresSingleUserMain(), PostmasterMain(), PostmasterStateMachine(), PostPrepare_Locks(), PostPrepare_PgStat(), PostPrepare_PredicateLocks(), postprocess_setop_tlist(), postprocess_sql_command(), postquel_start(), postquel_sub_params(), pow5bits(), pow5Factor(), pq_discardbytes(), pq_endmsgread(), pq_endtypsend(), pq_getbyte(), pq_getbyte_if_available(), pq_getbytes(), pq_getmessage(), pq_init(), pq_peekbyte(), pq_putmessage_v2(), pq_set_parallel_leader(), pq_writeint16(), pq_writeint32(), pq_writeint64(), pq_writeint8(), pq_writestring(), pqAppendCmdQueueEntry(), pqConnectOptions2(), PQconnectPoll(), pqFunctionCall3(), PQgetResult(), pqParseIntParam(), pqPipelineProcessQueue(), pqRecycleCmdQueueEntry(), pqsecure_open_gss(), pqTraceOutputMessage(), PreCommit_CheckForSerializationFailure(), PreCommit_on_commit_actions(), predicate_classify(), predicate_implied_by_recurse(), predicate_implied_by_simple_clause(), predicate_refuted_by_recurse(), predicatelock_hash(), predicatelock_twophase_recover(), PredicateLockPageSplit(), PrefetchBuffer(), PrefetchSharedBuffer(), prefix_selectivity(), prepare_cb_wrapper(), prepare_query_params(), prepare_sort_from_pathkeys(), prepare_vacuum_command(), prepareCommandsInPipeline(), PrepareForIncrementalBackup(), PrepareInvalidationState(), PrepareRedoAdd(), PrepareRedoRemove(), PrepareSortSupportFromGistIndexRel(), PrepareSortSupportFromIndexRel(), PrepareSortSupportFromOrderingOp(), PrepareToInvalidateCacheTuple(), prepareToTerminate(), PrepareTransaction(), PrepareTransactionBlock(), preprocess_aggref(), preprocess_aggrefs_walker(), preprocess_limit(), preprocess_minmax_aggregates(), preprocess_rowmarks(), preprocess_targetlist(), PrescanPreparedTransactions(), print_expr(), print_function_arguments(), printCrosstab(), printJsonPathItem(), printPsetInfo(), printQuery(), PrintResultInCrosstab(), printTypmod(), ProcArrayAdd(), ProcArrayApplyRecoveryInfo(), ProcArrayApplyXidAssignment(), ProcArrayClearTransaction(), ProcArrayEndTransaction(), ProcArrayEndTransactionInternal(), ProcArrayGroupClearXid(), ProcArrayInitRecovery(), ProcArrayInstallImportedXmin(), ProcArrayInstallRestoredXmin(), ProcArrayRemove(), ProcArraySetReplicationSlotXmin(), ProcedureCreate(), process_equivalence(), process_function_rte_ref(), process_implied_equality(), process_inner_partition(), process_ordered_aggregate_single(), process_outer_partition(), process_owned_by(), process_pending_request(), process_pipe_input(), process_pm_child_exit(), process_pm_pmsignal(), process_security_barrier_quals(), process_startup_options(), process_sublinks_mutator(), process_subquery_nestloop_params(), process_syncing_tables_for_apply(), process_target_wal_block_change(), processIndirection(), processPendingPage(), ProcessProcSignalBarrier(), processQueryResult(), ProcessRecords(), ProcessRecoveryConflictInterrupts(), ProcessRepliesIfAny(), ProcessSyncRequests(), ProcessTwoPhaseBuffer(), processTypesSpec(), ProcessUtility(), ProcessUtilitySlow(), ProcKill(), proclist_contains_offset(), proclist_delete_offset(), proclist_pop_head_node_offset(), proclist_push_head_offset(), proclist_push_tail_offset(), proclock_hash(), ProcSignalInit(), ProcSleep(), ProcWakeup(), produce_tuple_asynchronously(), progress_report(), prune_append_rel_partitions(), pset_value_string(), pthread_barrier_wait(), PublicationAddSchemas(), PublicationAddTables(), pull_up_simple_subquery(), pull_up_simple_union_all(), pull_up_simple_values(), pull_up_subqueries(), pull_up_subqueries_recurse(), pull_var_clause(), pull_varattnos_walker(), pullup_replace_vars_callback(), pullup_replace_vars_subquery(), push_old_value(), push_stmt_mcontext(), PushActiveSnapshotWithLevel(), pushJsonbValue(), pushJsonbValueScalar(), pushOperator(), PutMemoryContextsStatsTupleStore(), qc_is_allowed(), qsortCompareItemPointers(), qual_is_pushdown_safe(), query_is_distinct_for(), query_planner(), query_tree_mutator_impl(), query_tree_walker_impl(), QueryRewrite(), QueuePartitionConstraintValidation(), quote_if_needed(), range_add_value(), range_adjacent_multirange_internal(), range_after_multirange_internal(), range_before_multirange_internal(), range_contains_elem_support(), range_contains_multirange_internal(), range_deserialize(), range_gist_class_split(), range_gist_double_sorting_split(), range_gist_picksplit(), range_gist_single_sorting_split(), range_overlaps_multirange_internal(), range_overleft_multirange_internal(), range_overright_multirange_internal(), range_serialize(), rangeTableEntry_used_walker(), RangeVarGetAndCheckCreationNamespace(), RangeVarGetRelidExtended(), rank_up(), raw_heap_insert(), rbt_create(), RE_compile_and_cache(), read_binary_file(), read_client_final_message(), read_dump_filters(), read_quoted_string(), read_relmap_file(), read_restore_filters(), read_seq_tuple(), ReadArrayStr(), ReadBuffer_common(), ReadBufferBI(), ReadCheckpointRecord(), readCommandResponse(), readMessageFromPipe(), ReadPageInternal(), ReadRecentBuffer(), ReadReplicationSlot(), readtup_datum(), rebin_segment(), rebuildInsertSql(), recheck_cast_function_args(), reconsider_full_join_clause(), reconsider_outer_join_clause(), reconstruct_from_incremental_file(), record_cmp(), record_image_cmp(), recordDependencyOnCurrentExtension(), recordExtensionMembership(), RecordKnownAssignedTransactionIds(), RecordNewMultiXact(), recordSharedDependencyOn(), RecordTransactionCommit(), RecordTransactionCommitPrepared(), RecoverPreparedTransactions(), recovery_create_dbdir(), recurse_push_qual(), recurse_pushdown_safe(), recurse_set_operations(), reduce_dependencies(), reduce_expanded_ranges(), reduce_outer_joins_pass2(), reduce_unique_semijoins(), refresh_by_match_merge(), regcomp_auth_token(), regexec_auth_token(), regexp_fixed_prefix(), regexp_match(), register_dirty_segment(), register_ENR(), register_unlink_segment(), RegisterDynamicBackgroundWorker(), RegisterPredicateLockingXid(), RegisterTimeout(), reindex_error_callback(), reindex_one_database(), reindex_relation(), ReindexMultipleInternal(), ReindexMultipleTables(), ReindexPartitions(), ReindexRelationConcurrently(), ReinitializeParallelWorkers(), relation_close(), relation_excluded_by_constraints(), relation_has_unique_index_ext(), relation_is_updatable(), relation_needs_vacanalyze(), relation_open(), RelationAddBlocks(), RelationBuildDesc(), RelationBuildLocalRelation(), RelationBuildPartitionDesc(), RelationBuildPartitionKey(), RelationBuildRuleLock(), RelationBuildTupleDesc(), RelationCacheInitializePhase3(), RelationCacheInvalidate(), RelationClearRelation(), RelationCreateStorage(), RelationDecrementReferenceCount(), RelationDestroyRelation(), RelationFindReplTupleSeq(), RelationForgetRelation(), RelationGetBufferForTuple(), RelationGetDummyIndexExpressions(), RelationGetIdentityKeyBitmap(), RelationGetIndexExpressions(), RelationGetIndexPredicate(), RelationGetNumberOfBlocksInFork(), RelationGetPartitionDesc(), RelationGetPrimaryKeyIndex(), RelationGetReplicaIndex(), RelationIdGetRelation(), RelationIdIsInInitFile(), RelationInitIndexAccessInfo(), RelationInitLockInfo(), RelationInitTableAccessMethod(), RelationMapFinishBootstrap(), RelationPutHeapTuple(), RelationReloadIndexInfo(), RelationReloadNailed(), RelationSetNewRelfilenumber(), RelationTruncate(), ReleaseAndReadBuffer(), ReleaseCachedPlan(), ReleaseCatCacheListWithOwner(), ReleaseCatCacheWithOwner(), ReleaseCurrentSubTransaction(), ReleaseExternalFD(), ReleaseGenericPlan(), ReleaseLockIfHeld(), ReleaseLruFile(), ReleaseManyTestResource(), ReleaseOneSerializableXact(), ReleasePostmasterChildSlot(), ReleasePredicateLocks(), ReleasePredXact(), ReleaseSavepoint(), RelfilenumberMapInvalidateCallback(), RelidByRelfilenumber(), relmap_redo(), relptr_store_eval(), remap_groupColIdx(), RememberAllDependentForRebuilding(), RememberSyncRequest(), RememberToFreeTupleDescAtEOX(), remove_join_clause_from_rels(), remove_leftjoinrel_from_query(), remove_nulling_relids_mutator(), remove_rel_from_eclass(), remove_rel_from_query(), remove_rel_from_restrictinfo(), remove_result_refs(), remove_self_join_rel(), remove_self_joins_one_group(), remove_self_joins_recurse(), remove_target(), remove_temp(), remove_timeout_index(), remove_useless_groupby_columns(), remove_useless_result_rtes(), remove_useless_results_recurse(), RemoveFromWaitQueue(), RemoveGXact(), RemoveLocalLock(), RemoveObjects(), RemoveProcFromArray(), RemoveRelations(), RemoveRoleFromObjectPolicy(), RemoveScratchTarget(), RemoveTargetIfNoLongerUsed(), rename_constraint_internal(), RenameRelationInternal(), RenameTypeInternal(), reorder_function_arguments(), ReorderBufferAddInvalidations(), ReorderBufferAllocate(), ReorderBufferAssignChild(), ReorderBufferBuildTupleCidHash(), ReorderBufferChangeMemoryUpdate(), ReorderBufferCheckMemoryLimit(), ReorderBufferCleanupTXN(), ReorderBufferFinishPrepared(), ReorderBufferForget(), ReorderBufferGetCatalogChangesXacts(), ReorderBufferGetOldestTXN(), ReorderBufferInvalidate(), ReorderBufferIterTXNFinish(), ReorderBufferIterTXNNext(), ReorderBufferLargestStreamableTopTXN(), ReorderBufferLargestTXN(), ReorderBufferPrepare(), ReorderBufferProcessTXN(), ReorderBufferQueueChange(), ReorderBufferQueueMessage(), ReorderBufferReplay(), ReorderBufferRestoreChange(), ReorderBufferRestoreChanges(), ReorderBufferRestoreCleanup(), ReorderBufferSerializeChange(), ReorderBufferSerializeTXN(), ReorderBufferSetBaseSnapshot(), ReorderBufferStreamCommit(), ReorderBufferStreamTXN(), ReorderBufferToastAppendChunk(), ReorderBufferToastInitHash(), ReorderBufferToastReplace(), ReorderBufferTransferSnapToParent(), ReorderBufferTruncateTXN(), ReorderBufferTXNByXid(), repalloc(), repalloc_extended(), replace_nestloop_params_mutator(), replace_outer_agg(), replace_outer_grouping(), replace_outer_placeholdervar(), replace_outer_var(), replace_varno_walker(), replace_vars_in_jointree(), ReplicationSlotAcquire(), ReplicationSlotAlter(), ReplicationSlotCleanup(), ReplicationSlotCreate(), ReplicationSlotDrop(), ReplicationSlotDropAcquired(), ReplicationSlotDropAtPubNode(), ReplicationSlotIndex(), ReplicationSlotMarkDirty(), ReplicationSlotPersist(), ReplicationSlotRelease(), ReplicationSlotReserveWal(), ReplicationSlotSave(), ReplicationSlotsComputeRequiredLSN(), ReplicationSlotsComputeRequiredXmin(), replorigin_advance(), replorigin_by_oid(), replorigin_create(), replorigin_drop_by_name(), replorigin_session_advance(), replorigin_session_get_progress(), replorigin_session_reset(), replorigin_session_setup(), report_json_context(), report_namespace_conflict(), report_parse_error(), ReportBackgroundWorkerExit(), ReportBackgroundWorkerPID(), ReportChangedGUCOptions(), RequestNamedLWLockTranche(), RequestXLogStreaming(), reserve_wal_for_local_slot(), ReservePrivateRefCountEntry(), ReserveXLogInsertLocation(), ReserveXLogSwitch(), ResetBackgroundWorkerCrashTimes(), ResetCatalogCache(), ResetLatch(), ResetPlanCache(), ResetSequence(), resetStringInfo(), ResetUnloggedRelationsInDbspaceDir(), resize(), resize_intArrayType(), resolve_aggregate_transtype(), resolve_column_ref(), ResolveCminCmaxDuringDecoding(), ResolveRecoveryConflictWithBufferPin(), ResolveRecoveryConflictWithLock(), ResolveRecoveryConflictWithSnapshot(), ResolveRecoveryConflictWithVirtualXIDs(), ResourceOwnerAddToHash(), ResourceOwnerDelete(), ResourceOwnerEnlarge(), ResourceOwnerForget(), ResourceOwnerForgetLock(), ResourceOwnerNewParent(), ResourceOwnerReleaseAll(), ResourceOwnerReleaseAllOfKind(), ResourceOwnerReleaseInternal(), ResourceOwnerRemember(), ResourceOwnerRememberLock(), ResourceOwnerSort(), ResOwnerPrintCatCache(), ResOwnerReleaseFile(), ResOwnerReleaseRelation(), ResOwnerReleaseTupleDesc(), ResOwnerReleaseWaitEventSet(), restore_toc_entries_parallel(), RestoreArchive(), RestoreArchivedFile(), RestoreComboCIDState(), RestoreGUCState(), RestorePendingSyncs(), restorePsetInfo(), RestoreReindexState(), RestoreScratchTarget(), RestoreUncommittedEnums(), restriction_is_always_false(), restriction_is_always_true(), ReThrowError(), RetrieveDataDirCreatePerm(), RetrieveWalSegSize(), revalidate_rectypeid(), RevalidateCachedQuery(), revmap_get_buffer(), rewrite_heap_dead_tuple(), rewrite_heap_tuple(), RewriteQuery(), rewriteRuleAction(), rewriteSearchAndCycle(), rewriteTargetView(), rewriteValuesRTE(), ri_Check_Pk_Match(), RI_FKey_fk_upd_check_required(), ri_HashCompareOp(), ri_HashPreparedPlan(), ri_LoadConstraintInfo(), roles_is_member_of(), rollback_prepared_cb_wrapper(), RollbackAndReleaseCurrentSubTransaction(), RollbackToSavepoint(), rot13_passphrase(), round_var(), row_is_in_frame(), run_reindex_command(), run_ssl_passphrase_command(), RunFunctionExecuteHook(), RunFunctionExecuteHookStr(), RunIdentifySystem(), RunNamespaceSearchHook(), RunNamespaceSearchHookStr(), RunObjectDropHook(), RunObjectDropHookStr(), RunObjectPostAlterHook(), RunObjectPostAlterHookStr(), RunObjectPostCreateHook(), RunObjectPostCreateHookStr(), RunObjectTruncateHook(), RunObjectTruncateHookStr(), RWConflictExists(), SaveCachedPlan(), savePsetInfo(), scalararraysel(), scan_file(), scanGetItem(), ScanKeyEntryInitialize(), ScanQueryForLocks(), ScanSourceDatabasePgClassPage(), ScanSourceDatabasePgClassTuple(), ScheduleBufferTagForWriteback(), scram_build_secret(), scram_exchange(), scram_init(), scram_mock_salt(), SearchCatCacheInternal(), SearchCatCacheList(), SearchCatCacheMiss(), SearchSysCache(), SearchSysCache1(), SearchSysCache2(), SearchSysCache3(), SearchSysCache4(), secure_read(), secure_write(), select_active_windows(), select_common_type(), select_common_type_from_oids(), select_outer_pathkeys_for_merge(), selectColorTrigrams(), selectnewtape(), semijoin_target_ok(), SendCopyEnd(), sendFile(), SendRecoveryConflictWithBufferPin(), sepgsql_audit_log(), sepgsql_compute_avd(), sepgsql_compute_create(), sepgsql_fmgr_hook(), sepgsql_get_client_label(), sepgsql_object_access(), sepgsql_relation_setattr_extra(), SerialAdd(), SerialGetMinConflictCommitSeqNo(), SerialInit(), SerializeClientConnectionInfo(), SerializeGUCState(), SerializeLibraryState(), SerializeRelationMap(), SerializeSnapshot(), SerializeTransactionState(), SerializeUncommittedEnums(), SerialSetActiveSerXmin(), ServerLoop(), set_append_references(), set_append_rel_size(), set_authn_id(), set_base_rel_pathlists(), set_base_rel_sizes(), set_baserel_partition_key_exprs(), set_baserel_size_estimates(), set_cheapest(), set_cte_size_estimates(), set_deparse_context_plan(), set_errdata_field(), set_foreign_size_estimates(), set_function_size_estimates(), set_hash_references(), set_indexsafe_procflags(), set_join_column_names(), set_mergeappend_references(), set_namedtuplestore_size_estimates(), set_param_references(), set_plan_refs(), set_ps_display_remove_suffix(), set_ps_display_suffix(), set_ps_display_with_len(), set_rel_consider_parallel(), set_rel_size(), set_rel_width(), set_relation_column_names(), set_relation_partition_info(), set_result_size_estimates(), set_status_by_pages(), set_subquery_pathlist(), set_subquery_size_estimates(), set_tablefunc_size_estimates(), set_using_names(), set_values_size_estimates(), SetCommitTsLimit(), SetConstraintStateAddItem(), SetCurrentStatementStartTimestamp(), SetDatabaseEncoding(), SetDatabasePath(), SetDataDir(), SetMatViewPopulatedState(), SetMessageEncoding(), SetMultiXactIdLimit(), setNamespaceForMergeWhen(), SetNewSxactGlobalXmin(), SetOffsetVacuumLimit(), setop_fill_hash_table(), SetOuterUserId(), SetParallelStartTimestamps(), setPath(), setPathArray(), setPathObject(), SetPossibleUnsafeConflict(), setRedirectionTuple(), SetReindexProcessing(), SetRelationTableSpace(), SetRemoteDestReceiverParams(), SetRWConflict(), SetSerializableTransactionSnapshot(), SetSessionUserId(), SetTempNamespaceState(), SetTempTablespaces(), SetTransactionIdLimit(), SetTransactionSnapshot(), SetTuplestoreDestReceiverParams(), Setup_AF_UNIX(), setup_param_list(), setup_simple_rel_arrays(), setup_test_matches(), SetupApplyOrSyncWorker(), SetupHistoricSnapshot(), SetupLockInTable(), SharedFileSetOnDetach(), SharedInvalBackendInit(), SharedRecordTypmodRegistryAttach(), SharedRecordTypmodRegistryInit(), shell_finish_command(), shell_run_command(), shell_send_data(), shiftList(), shiftright128(), shm_mq_attach(), shm_mq_create(), shm_mq_detach_internal(), shm_mq_inc_bytes_read(), shm_mq_receive(), shm_mq_receive_bytes(), shm_mq_send_bytes(), shm_mq_sendv(), shm_mq_set_handle(), shm_mq_set_receiver(), shm_mq_set_sender(), shm_mq_wait_for_attach(), shm_toc_attach(), shm_toc_create(), shm_toc_freespace(), shm_toc_insert(), ShmemAllocRaw(), ShmemAllocUnlocked(), ShmemInitStruct(), show_context_hook(), show_eval_params(), show_modifytable_info(), shutdown_cb_wrapper(), ShutdownXLOG(), SignalBackends(), simple8b_encode(), SimpleLruInit(), SimpleLruReadPage(), SimpleLruWriteAll(), SimpleLruZeroPage(), SimpleXLogPageRead(), simplify_boolean_equality(), simplify_EXISTS_query(), simplify_function(), SlabAlloc(), SlabBlocklistIndex(), SlabContextCreate(), SlabFree(), SlabGetChunkContext(), SlabGetChunkSpace(), SlabGetNextFreeChunk(), SlabIsEmpty(), SlabReset(), SlabStats(), slist_delete(), slist_head_element_off(), slist_next_node(), slist_pop_head_node(), slot_attisnull(), slot_compile_deform(), slot_fill_defaults(), slot_getattr(), slot_getsomeattrs_int(), slot_getsysattr(), slot_modify_data(), slot_store_data(), SlruFileName(), SlruInternalWritePage(), SlruMayDeleteSegment(), smgr_redo(), smgrdestroy(), smgrDoPendingSyncs(), smgropen(), smgrunpin(), sn_scalar(), SnapBuildAddCommittedTxn(), SnapBuildBuildSnapshot(), SnapBuildCommitTxn(), SnapBuildDistributeNewCatalogSnapshot(), SnapBuildFindSnapshot(), SnapBuildFreeSnapshot(), SnapBuildGetOrBuildSnapshot(), SnapBuildInitialSnapshot(), SnapBuildRestore(), SnapBuildSerialize(), SnapBuildSnapDecRefcount(), socket_putmessage(), socket_putmessage_noblock(), sort_bounded_heap(), sort_expanded_ranges(), sort_inner_and_outer(), spcache_init(), spcache_insert(), SpeculativeInsertionWait(), spg_kd_choose(), spg_kd_inner_consistent(), spg_quad_choose(), spg_quad_inner_consistent(), spg_range_quad_choose(), spg_range_quad_inner_consistent(), spg_text_inner_consistent(), spg_text_leaf_consistent(), spgAddNodeAction(), spgbuild(), spgbuildempty(), spgClearPendingList(), spgDeformLeafTuple(), spgdoinsert(), spgFormDeadTuple(), spgGetCache(), spgInitInnerConsistentIn(), spgInnerTest(), spgist_name_inner_consistent(), spgist_name_leaf_consistent(), SpGistGetBuffer(), SpGistInitBuffer(), SpGistPageAddNewItem(), spgLeafTest(), spgRedoAddLeaf(), spgRedoAddNode(), spgRedoPickSplit(), spgRedoVacuumLeaf(), spgRedoVacuumRedirect(), spgSplitNodeAction(), spgTestLeafTuple(), spgWalk(), SPI_connect_ext(), SPI_cursor_open_internal(), SPI_plan_get_cached_plan(), SPI_plan_get_plan_sources(), SPI_plan_is_valid(), split_array(), split_part(), SplitIdentifierString(), spool_tuples(), sql_fn_post_column_ref(), sqrt_var(), SS_process_ctes(), SSL_CTX_set_max_proto_version(), ssl_external_passwd_cb(), sslVerifyProtocolRange(), standard_ExecutorEnd(), standard_ExecutorFinish(), standard_ExecutorRun(), standard_ExecutorStart(), standard_join_search(), standard_planner(), standby_redo(), StandbyAcquireAccessExclusiveLock(), StandbyRecoverPreparedTransactions(), StandbyReleaseOldLocks(), StandbyReleaseXidEntryLocks(), StandbyTransactionIdIsPrepared(), start_table_sync(), StartChildProcess(), StartLogicalReplication(), StartParallelWorkerTransaction(), StartReplication(), StartTransaction(), StartTransactionCommand(), startup_cb_wrapper(), StartupReplicationOrigin(), StartupXLOG(), statapprox_heap(), statext_compute_stattarget(), statext_dependencies_build(), statext_dependencies_deserialize(), statext_dependencies_serialize(), statext_mcv_build(), statext_mcv_clauselist_selectivity(), statext_mcv_deserialize(), statext_mcv_serialize(), statext_ndistinct_build(), statext_ndistinct_deserialize(), statext_ndistinct_serialize(), StatisticsGetRelation(), StatsShmemInit(), store_expanded_ranges(), storeBitmap(), StoreCatalogInheritance(), storeGettuple(), StoreIndexTuple(), StorePartitionBound(), StorePartitionKey(), storeRow(), StrategyGetBuffer(), StrategyInitialize(), stream_abort_cb_wrapper(), stream_change_cb_wrapper(), stream_close_file(), stream_commit_cb_wrapper(), stream_message_cb_wrapper(), stream_open_and_write_change(), stream_open_file(), stream_prepare_cb_wrapper(), stream_start_cb_wrapper(), stream_stop_cb_wrapper(), stream_stop_internal(), stream_truncate_cb_wrapper(), stream_write_change(), StreamLog(), StrictNamesCheck(), string_agg_deserialize(), string_agg_finalfn(), string_agg_serialize(), string_to_datum(), strip_quotes(), sts_attach(), sts_begin_parallel_scan(), sts_initialize(), sts_puttuple(), sub_abs(), subbuild_joinrel_joinlist(), subbuild_joinrel_restrictlist(), subquery_is_pushdown_safe(), substitute_libpath_macro(), substitute_phv_relids_walker(), SubTransGetParent(), SubTransGetTopmostTransaction(), SubTransSetParent(), subxact_info_add(), subxact_info_read(), subxact_info_write(), summarize_range(), summarizer_read_local_xlog_page(), SummarizeWAL(), swap_relation_files(), SwitchBackToLocalLatch(), SwitchToSharedLatch(), synchronize_one_slot(), synchronize_slots(), SyncRepGetNthLatestSyncRecPtr(), SyncRepQueueInsert(), SyncRepWaitForLSN(), SyncRepWakeQueue(), SyncScanShmemInit(), SysCacheGetAttr(), systable_endscan_ordered(), systable_getnext(), systable_getnext_ordered(), systable_recheck_tuple(), table_beginscan_parallel(), table_parallelscan_estimate(), table_parallelscan_initialize(), table_rescan_tidrange(), table_scan_getnextslot(), table_scan_getnextslot_tidrange(), table_scan_update_snapshot(), table_slot_callbacks(), TableCommandResultHandler(), TablespaceCreateDbspace(), tar_close(), tar_finish(), tar_open_for_write(), tar_sync(), tar_write(), tblspc_redo(), tbm_add_tuples(), tbm_begin_iterate(), tbm_create_pagetable(), tbm_find_pageentry(), tbm_intersect(), tbm_intersect_page(), tbm_iterate(), tbm_lossify(), tbm_page_is_lossy(), tbm_prepare_shared_iterate(), tbm_union(), TemporalSimplify(), TerminateBackgroundWorker(), TerminateBufferIO(), test_enc_conversion(), test_pipelined_insert(), test_predtest(), test_resowner_many(), test_slru_page_readonly(), test_slru_page_write(), text_format(), text_position_next(), text_position_next_internal(), text_position_setup(), tfuncFetchRows(), throttle(), TidExprListCreate(), TidListEval(), TidQualFromRestrictInfoList(), tlist_matches_tupdesc(), to_chars_df(), to_chars_f(), toast_build_flattened_tuple(), toast_compress_datum(), toast_datum_size(), toast_decompress_datum(), toast_decompress_datum_slice(), toast_fetch_datum_slice(), toast_flatten_tuple(), toast_flatten_tuple_to_datum(), toast_open_indexes(), toast_raw_datum_size(), toast_save_datum(), tokenize_auth_file(), tokenize_include_file(), TopoSort(), TParserGet(), TransactionGroupUpdateXidStatus(), TransactionIdGetCommitTsData(), TransactionIdInRecentPast(), TransactionIdIsInProgress(), TransactionIdSetCommitTs(), TransactionIdSetPageStatusInternal(), TransactionIdSetStatusBit(), TransactionIdSetTreeStatus(), TransferExpandedObject(), TransferPredicateLocksToNewTarget(), transformAExprBetween(), transformAggregateCall(), transformArrayExpr(), transformAssignedExpr(), transformAssignmentIndirection(), transformAssignmentSubscripts(), transformCaseExpr(), transformColumnDefinition(), transformColumnRef(), transformCreateStmt(), transformCurrentOfExpr(), transformDistinctOnClause(), transformExpr(), transformFrameOffset(), transformFromClauseItem(), transformFuncCall(), transformGroupClause(), transformGroupingSet(), TransformGUCArray(), transformIndexConstraint(), transformIndexConstraints(), transformIndirection(), transformInsertStmt(), transformJsonReturning(), transformJsonValueExpr(), transformMergeStmt(), transformMultiAssignRef(), transformOfType(), transformOnConflictClause(), transformOptionalSelectInto(), transformPartitionBound(), transformPartitionBoundValue(), transformPartitionCmd(), transformRangeFunction(), transformRangeSubselect(), transformRangeTableFunc(), transformSetOperationStmt(), transformSetOperationTree(), transformSubLink(), transformTargetList(), transformValuesClause(), transformWindowFuncCall(), transformWithClause(), transformXmlExpr(), transientrel_startup(), translate_col_privs_multilevel(), traverse_lacons(), TriggerEnabled(), trivial_subqueryscan(), truncate_cb_wrapper(), truncate_flags_desc(), TruncateMultiXact(), try_nestloop_path(), try_partial_hashjoin_path(), try_partial_mergejoin_path(), try_partial_nestloop_path(), try_partitionwise_join(), try_relation_open(), tryAttachPartitionForeignKey(), TryReuseForeignKey(), TS_execute_locations(), TS_phrase_execute(), TS_phrase_output(), ts_setup_firstcall(), tsmatchsel(), tsqueryrecv(), tstoreStartupReceiver(), tsvector_concat(), tsvector_delete_by_indices(), tsvectorin(), tts_buffer_heap_clear(), tts_buffer_heap_copy_heap_tuple(), tts_buffer_heap_copy_minimal_tuple(), tts_buffer_heap_copyslot(), tts_buffer_heap_get_heap_tuple(), tts_buffer_heap_getsomeattrs(), tts_buffer_heap_getsysattr(), tts_buffer_heap_materialize(), tts_buffer_heap_store_tuple(), tts_heap_copy_heap_tuple(), tts_heap_get_heap_tuple(), tts_heap_getsomeattrs(), tts_heap_getsysattr(), tts_heap_materialize(), tts_minimal_getsomeattrs(), tts_minimal_getsysattr(), tts_minimal_materialize(), tts_minimal_store_tuple(), tts_virtual_copy_heap_tuple(), tts_virtual_copy_minimal_tuple(), tts_virtual_getsysattr(), TupleDescCopyEntry(), TupleDescInitBuiltinEntry(), TupleDescInitEntry(), TupleDescInitEntryCollation(), TupleHashTableMatch(), TupleQueueReaderNext(), tuples_equal(), tuplesort_begin_cluster(), tuplesort_begin_common(), tuplesort_begin_heap(), tuplesort_begin_index_btree(), tuplesort_begin_index_gist(), tuplesort_estimate_shared(), tuplesort_gettuple_common(), tuplesort_heap_insert(), tuplesort_heap_replace_top(), tuplesort_initialize_shared(), tuplesort_markpos(), tuplesort_puttuple_common(), tuplesort_readtup_alloc(), tuplesort_rescan(), tuplesort_restorepos(), tuplesort_set_bound(), tuplesort_skiptuples(), tuplesort_sort_memtuples(), tuplesort_space_type_name(), tuplestore_copy_read_pointer(), tuplestore_gettuple(), tuplestore_puttuple_common(), tuplestore_rescan(), tuplestore_select_read_pointer(), tuplestore_skiptuples(), tuplestore_trim(), TwoPhaseGetGXact(), TwoPhaseGetXidByVirtualXID(), TwoPhaseShmemInit(), TwoPhaseTransactionGid(), TypeCacheRelCallback(), TypeCategory(), TypeShellMake(), typeStringToTypeName(), uint32_hash(), uint64_to_itemptr(), UnGrantLock(), unicode_category(), unicode_category_abbrev(), unicode_category_string(), unicode_is_normalized(), unicode_normalize(), unicode_normalize_func(), unionkey(), uniqueentry(), uniqueifyJsonbObject(), unlink_segment(), UnpinBufferNoOwner(), UnpinLocalBufferNoOwner(), UnregisterSnapshotNoOwner(), update_frameheadpos(), update_frametailpos(), update_grouptailpos(), update_local_synced_slot(), update_mergeclause_eclasses(), update_progress_txn_cb_wrapper(), update_relispartition(), update_relstats_all_indexes(), UpdateActiveSnapshotCommandId(), updateClosestMatch(), UpdateTwoPhaseState(), UpdateXmaxHintBits(), UploadManifest(), UserAbortTransactionBlock(), vac_max_items_to_alloc_size(), vac_open_indexes(), vac_truncate_clog(), vac_update_datfrozenxid(), vacuum(), vacuum_get_cutoffs(), vacuum_is_relation_owner(), vacuum_one_database(), vacuum_open_relation(), vacuum_rel(), vacuum_xid_failsafe_check(), vacuumLeafPage(), vacuumLeafRoot(), vacuumRedirectAndPlaceholder(), VacuumUpdateCosts(), validArcLabel(), validate_remote_info(), validatePartitionedIndex(), validateRecoveryParameters(), ValidXLogRecord(), ValuesNext(), valueTruth(), valueTypeName(), varbit_support(), varchar_support(), VariableHasHook(), varstr_abbrev_abort(), VarsupShmemInit(), vector8_has(), vector8_has_le(), verbosity_hook(), verify_heapam(), verifyBackupPageConsistency(), view_cols_are_auto_updatable(), VirtualXactLock(), VirtualXactLockTableCleanup(), VirtualXactLockTableInsert(), visibilitymap_clear(), visibilitymap_count(), visibilitymap_set(), wait_on_slots(), WaitEventAdjustPoll(), WaitEventExtensionNew(), WaitEventSetWait(), WaitEventSetWaitBlock(), WaitForCommands(), WaitForParallelWorkersToAttach(), WaitForParallelWorkersToFinish(), WaitForProcSignalBarrier(), WaitForTerminatingWorkers(), WaitForWalSummarization(), WaitForWALToBecomeAvailable(), WaitForWorkers(), WaitLatch(), WaitLatchOrSocket(), walkStatEntryTree(), WalRcvDie(), WalRcvWaitForStartPosition(), WALRead(), WALReadFromBuffers(), WalReceiverMain(), WalSndKill(), WalSndSetState(), WalSummarizerMain(), wchar2char(), width_bucket_array_fixed(), width_bucket_array_variable(), window_cume_dist(), window_gettupleslot(), window_percent_rank(), WinGetCurrentPosition(), WinGetFuncArgCurrent(), WinGetFuncArgInFrame(), WinGetFuncArgInPartition(), WinGetPartitionLocalMemory(), WinGetPartitionRowCount(), WinRowsArePeers(), WinSetMarkPosition(), worker_freeze_result_tape(), worker_get_identifier(), worker_nomergeruns(), worker_spi_launch(), WorkTableScanNext(), write_pipe_chunks(), write_relcache_init_file(), write_relmap_file(), WritebackContextInit(), WriteBlockRefTable(), writeFragment(), writeListPage(), WriteRecoveryConfig(), writeTimeLineHistory(), writetup_datum(), xact_redo(), xact_redo_abort(), xact_redo_commit(), xactGetCommittedInvalidationMessages(), XactLockForVirtualXact(), XactLockTableWait(), XactLogAbortRecord(), XactLogCommitRecord(), XidCacheRemoveRunningXids(), XidIsConcurrent(), xidLogicalComparator(), xlog_decode(), xlog_redo(), XLogArchiveNotifySeg(), XLogBeginInsert(), XLogBeginRead(), XLogCompressBackupBlock(), XLogDecodeNextRecord(), XLogEnsureRecordSpace(), XLogFileClose(), XLogFileInit(), XLogFileInitInternal(), XLogFileRead(), XLogFindNextRecord(), XLogInitNewTimeline(), XLogInsertRecord(), XLogNextRecord(), XLogPageRead(), XLogPrefetcherNextBlock(), XLogPrefetcherReadRecord(), XLogPrefetchIncrement(), XLogReadAhead(), XLogReadBufferExtended(), XLogReadBufferForRedoExtended(), XLogReadDetermineTimeline(), XLogReaderSetDecodeBuffer(), XLogReaderValidatePageHeader(), XLogReadRecord(), XLogRecGetBlockRefInfo(), XLogRecGetFullXid(), XLogRecordAssemble(), xlogrecovery_redo(), XLogRecPtrToBytePos(), XLogRecStoreStats(), XLogRegisterBlock(), XLogRegisterBufData(), XLogRegisterBuffer(), XLogRegisterData(), XLogReleasePreviousRecord(), XLogSaveBufferForHint(), XLogSendPhysical(), XLogSetRecordFlags(), XLOGShmemInit(), XLOGShmemSize(), xlogVacuumPage(), XLogWalRcvClose(), XLogWalRcvFlush(), XLogWalRcvWrite(), XLogWrite(), xmldata_root_element_start(), XmlTableGetValue(), XmlTableSetColumnFilter(), and xmltext().

◆ exit()

exit ( )

Referenced by _check_database_version(), add_socket_to_set(), add_typedefs_from_file(), addtype(), adjleap(), adjust_data_dir(), append_database_pattern(), append_relation_pattern_helper(), append_schema_pattern(), appendPsqlMetaConnect(), appendQualifiedRelation(), appendShellString(), associate(), bail_out(), BaseBackup(), bbstreamer_zstd_compressor_new(), bootstrap_template1(), change_directory(), check_input(), check_locale_name(), check_ok(), check_prepare_conn(), check_root(), check_testspec(), CheckConnection(), CheckDataVersion(), checkInitSteps(), close_cur1(), close_file(), cluster_one_database(), compile_database_list(), compile_relation_list_one_db(), connect_slot(), connectToServer(), create_data_directory(), create_xlog_or_symlink(), CreateBackupStreamer(), die_on_query_failure(), digestControlFile(), do_init(), do_kill(), do_logrotate(), do_promote(), do_reload(), do_restart(), do_start(), do_start_bgworker(), do_status(), do_stop(), dolink(), ecpg_filter_source(), ecpg_filter_stderr(), ecpg_start_test(), enlargeStringInfo(), ensureCleanShutdown(), err(), error(), errstart(), errx(), executeCommand(), executeQuery(), executeQueryOrDie(), executeStatement(), exit_nicely(), find_other_exec_or_die(), findBuiltin(), FindStreamingStart(), get_control_dbstate(), get_id(), get_opts(), get_pgpid(), get_record1(), get_restricted_token(), get_su_pwd(), get_user_name_or_exit(), get_var1(), GetConnection(), getfields(), GetTableInfo(), GucInfoMain(), handle_args(), handle_help_version_opts(), HandleStartupProcInterrupts(), infile(), Initialize(), isolation_init(), isolation_start_test(), leapadd(), main(), memory_exhausted(), mkdirs(), newabbr(), open_cur1(), open_walfile(), ParallelBackupStart(), parse_psql_options(), parseCommandLine(), parseServiceFile(), pg_fatal(), pg_log_v(), pg_malloc_internal(), pg_realloc(), pg_strdup(), pg_wcsformat(), pgfdw_get_cleanup_result(), pgwin32_is_admin(), pnstrdup(), postprocess_sql_command(), PQprint(), printTable(), printTableAddCell(), printTableAddHeader(), printTableInit(), proc_exit(), process_backslash_command(), process_directory_recursively(), psql_start_test(), pvsnprintf(), read_controlfile(), read_dumpall_filters(), read_post_opts(), regression_main(), reindex_one_database(), replace_percent_placeholders(), report_backup_error(), report_clusters_compatible(), report_fatal_error(), report_manifest_error(), rewind_parseTimeLineHistory(), rpytime(), rulesub(), run_command(), run_permutation(), run_reindex_command(), runInitSteps(), s_lock_stuck(), save_ps_display_args(), scan_for_existing_tablespaces(), search_directory(), set_mode(), set_option(), set_sig(), setup_data_file_paths(), setup_locale_encoding(), setup_pgdata(), SetWALFileNameForCleanup(), spawn_process(), sql_check(), sql_conn(), sql_exec(), start_postmaster(), StartLogStreamer(), startup_hacks(), StreamLog(), syntax_error(), test_timing(), threadRun(), time_overflow(), TransferPredicateLocksToNewTarget(), try_complete_step(), usage(), vacuum_delay_point(), vacuum_one_database(), WalRcvWaitForStartPosition(), walsummary_error_callback(), and writezone().

◆ exit_nicely()

static void exit_nicely ( PGconn conn)
static

Definition at line 61 of file libpq_pipeline.c.

62 {
63  PQfinish(conn);
64  exit(1);
65 }
void PQfinish(PGconn *conn)
Definition: fe-connect.c:4562
exit(1)
PGconn * conn
Definition: streamutil.c:54

References conn, exit(), and PQfinish().

Referenced by main(), test_nosync(), and test_pipelined_insert().

◆ fflush()

static void const char fflush ( stdout  )

Referenced by adjust_data_dir(), bootstrap_template1(), check_ok(), cluster_all_databases(), create_data_directory(), create_xlog_or_symlink(), do_copy(), do_init(), do_pg_backup_stop(), do_shell(), do_watch(), dumpnfa(), echo_hidden_command(), ecpg_log(), editFile(), emit_tap_output_v(), ensureCleanShutdown(), errfinish(), ExceptionalCondition(), exec_command_print(), exec_command_prompt(), exec_command_write(), exec_prog(), ExecQueryTuples(), ExecQueryUsingCursor(), ExecuteRecoveryCommand(), fork_process(), get_bin_version(), get_control_data(), get_prompt(), get_su_pwd(), gets_interactive(), handleCopyIn(), handleCopyOut(), HandleSlashCmds(), initialize_data_directory(), InteractiveBackend(), log_pre_callback(), main(), MainLoop(), OpenPipeStream(), openQueryOutputFile(), PageOutput(), parallel_exec_prog(), parallel_transfer_all_new_dbs(), ParallelBackupStart(), parse_required_wal(), perform_spin_delay(), pg_log_generic_v(), pg_log_v(), pg_regcomp(), pg_regexec(), pipe_read_line(), plpgsql_dumptree(), popen_check(), pprint(), PQdisplayTuples(), pqFlush(), PQprint(), PQuntrace(), print(), print_filemap(), print_msg(), PrintNotifications(), PrintQueryStatus(), PrintQueryTuples(), printVersion(), psql_end_command(), PSQLexec(), regression_main(), reindex_all_databases(), RestoreArchivedFile(), run_diff(), runPgDump(), runShellCommand(), SendQuery(), setup_config(), shell_archive_file(), simple_prompt_extended(), spawn_process(), start_postmaster(), stop_postmaster(), SysLogger_Start(), test_config_settings(), test_file_descriptor_sync(), test_non_sync(), test_open_sync(), test_specific_config_settings(), test_sync(), vacuum_one_database(), vacuumlo(), and write_stderr().

◆ fprintf() [1/2]

fprintf ( stderr  ,
"\n"   
)

◆ fprintf() [2/2]

◆ main()

int main ( int  argc,
char **  argv 
)

Definition at line 1806 of file libpq_pipeline.c.

1807 {
1808  const char *conninfo = "";
1809  PGconn *conn;
1810  FILE *trace;
1811  char *testname;
1812  int numrows = 10000;
1813  PGresult *res;
1814  int c;
1815 
1816  while ((c = getopt(argc, argv, "r:t:")) != -1)
1817  {
1818  switch (c)
1819  {
1820  case 'r': /* numrows */
1821  errno = 0;
1822  numrows = strtol(optarg, NULL, 10);
1823  if (errno != 0 || numrows <= 0)
1824  {
1825  fprintf(stderr, "couldn't parse \"%s\" as a positive integer\n",
1826  optarg);
1827  exit(1);
1828  }
1829  break;
1830  case 't': /* trace file */
1832  break;
1833  }
1834  }
1835 
1836  if (optind < argc)
1837  {
1838  testname = pg_strdup(argv[optind]);
1839  optind++;
1840  }
1841  else
1842  {
1843  usage(argv[0]);
1844  exit(1);
1845  }
1846 
1847  if (strcmp(testname, "tests") == 0)
1848  {
1849  print_test_list();
1850  exit(0);
1851  }
1852 
1853  if (optind < argc)
1854  {
1855  conninfo = pg_strdup(argv[optind]);
1856  optind++;
1857  }
1858 
1859  /* Make a connection to the database */
1860  conn = PQconnectdb(conninfo);
1861  if (PQstatus(conn) != CONNECTION_OK)
1862  {
1863  fprintf(stderr, "Connection to database failed: %s\n",
1864  PQerrorMessage(conn));
1865  exit_nicely(conn);
1866  }
1867 
1868  res = PQexec(conn, "SET lc_messages TO \"C\"");
1870  pg_fatal("failed to set lc_messages: %s", PQerrorMessage(conn));
1871  res = PQexec(conn, "SET debug_parallel_query = off");
1873  pg_fatal("failed to set debug_parallel_query: %s", PQerrorMessage(conn));
1874 
1875  /* Set the trace file, if requested */
1876  if (tracefile != NULL)
1877  {
1878  if (strcmp(tracefile, "-") == 0)
1879  trace = stdout;
1880  else
1881  trace = fopen(tracefile, "w");
1882  if (trace == NULL)
1883  pg_fatal("could not open file \"%s\": %m", tracefile);
1884 
1885  /* Make it line-buffered */
1886  setvbuf(trace, NULL, PG_IOLBF, 0);
1887 
1888  PQtrace(conn, trace);
1891  }
1892 
1893  if (strcmp(testname, "disallowed_in_pipeline") == 0)
1895  else if (strcmp(testname, "multi_pipelines") == 0)
1897  else if (strcmp(testname, "nosync") == 0)
1898  test_nosync(conn);
1899  else if (strcmp(testname, "pipeline_abort") == 0)
1901  else if (strcmp(testname, "pipeline_idle") == 0)
1903  else if (strcmp(testname, "pipelined_insert") == 0)
1904  test_pipelined_insert(conn, numrows);
1905  else if (strcmp(testname, "prepared") == 0)
1907  else if (strcmp(testname, "simple_pipeline") == 0)
1909  else if (strcmp(testname, "singlerow") == 0)
1911  else if (strcmp(testname, "transaction") == 0)
1913  else if (strcmp(testname, "uniqviol") == 0)
1915  else
1916  {
1917  fprintf(stderr, "\"%s\" is not a recognized test name\n", testname);
1918  exit(1);
1919  }
1920 
1921  /* close the connection to the database and cleanup */
1922  PQfinish(conn);
1923  return 0;
1924 }
char * PQerrorMessage(const PGconn *conn)
Definition: fe-connect.c:6841
ConnStatusType PQstatus(const PGconn *conn)
Definition: fe-connect.c:6788
PGconn * PQconnectdb(const char *conninfo)
Definition: fe-connect.c:724
ExecStatusType PQresultStatus(const PGresult *res)
Definition: fe-exec.c:3371
PGresult * PQexec(PGconn *conn, const char *query)
Definition: fe-exec.c:2224
void PQtrace(PGconn *conn, FILE *debug_port)
Definition: fe-trace.c:35
void PQsetTraceFlags(PGconn *conn, int flags)
Definition: fe-trace.c:64
char * pg_strdup(const char *in)
Definition: fe_memutils.c:85
@ CONNECTION_OK
Definition: libpq-fe.h:60
@ PGRES_COMMAND_OK
Definition: libpq-fe.h:97
#define PQTRACE_SUPPRESS_TIMESTAMPS
Definition: libpq-fe.h:415
#define PQTRACE_REGRESS_MODE
Definition: libpq-fe.h:417
static void usage(const char *progname)
static void print_test_list(void)
static void exit_nicely(PGconn *conn)
static void test_uniqviol(PGconn *conn)
static void test_simple_pipeline(PGconn *conn)
char * tracefile
static void test_multi_pipelines(PGconn *conn)
static void test_pipeline_idle(PGconn *conn)
static void test_nosync(PGconn *conn)
static void test_pipeline_abort(PGconn *conn)
static void test_transaction(PGconn *conn)
static void test_prepared(PGconn *conn)
static void test_singlerowmode(PGconn *conn)
fprintf(stderr, "\n%s:%d: ", progname, line)
#define pg_fatal(...)
static void test_disallowed_in_pipeline(PGconn *conn)
static void test_pipelined_insert(PGconn *conn, int n_rows)
PGDLLIMPORT int optind
Definition: getopt.c:50
int getopt(int nargc, char *const *nargv, const char *ostr)
Definition: getopt.c:71
PGDLLIMPORT char * optarg
Definition: getopt.c:52
#define PG_IOLBF
Definition: port.h:361
char * c

References conn, CONNECTION_OK, exit(), exit_nicely(), fprintf(), getopt(), optarg, optind, pg_fatal, PG_IOLBF, pg_strdup(), PGRES_COMMAND_OK, PQconnectdb(), PQerrorMessage(), PQexec(), PQfinish(), PQresultStatus(), PQsetTraceFlags(), PQstatus(), PQtrace(), PQTRACE_REGRESS_MODE, PQTRACE_SUPPRESS_TIMESTAMPS, print_test_list(), res, generate_unaccent_rules::stdout, test_disallowed_in_pipeline(), test_multi_pipelines(), test_nosync(), test_pipeline_abort(), test_pipeline_idle(), test_pipelined_insert(), test_prepared(), test_simple_pipeline(), test_singlerowmode(), test_transaction(), test_uniqviol(), tracefile, and usage().

◆ notice_processor()

static void notice_processor ( void *  arg,
const char *  message 
)
static

Definition at line 1094 of file libpq_pipeline.c.

1095 {
1096  int *n_notices = (int *) arg;
1097 
1098  (*n_notices)++;
1099  fprintf(stderr, "NOTICE %d: %s", *n_notices, message);
1100 }
void * arg

References arg, and fprintf().

Referenced by test_pipeline_idle().

◆ pg_attribute_noreturn()

static void pg_attribute_noreturn ( )
static

◆ pg_attribute_printf()

static void const char pg_attribute_printf ( ,
 
)

◆ print_test_list()

static void print_test_list ( void  )
static

Definition at line 1790 of file libpq_pipeline.c.

1791 {
1792  printf("disallowed_in_pipeline\n");
1793  printf("multi_pipelines\n");
1794  printf("nosync\n");
1795  printf("pipeline_abort\n");
1796  printf("pipeline_idle\n");
1797  printf("pipelined_insert\n");
1798  printf("prepared\n");
1799  printf("simple_pipeline\n");
1800  printf("singlerow\n");
1801  printf("transaction\n");
1802  printf("uniqviol\n");
1803 }
#define printf(...)
Definition: port.h:244

References printf.

Referenced by main().

◆ process_result()

static bool process_result ( PGconn conn,
PGresult res,
int  results,
int  numsent 
)
static

Definition at line 1730 of file libpq_pipeline.c.

1731 {
1732  PGresult *res2;
1733  bool got_error = false;
1734 
1735  if (res == NULL)
1736  pg_fatal("got unexpected NULL");
1737 
1738  switch (PQresultStatus(res))
1739  {
1740  case PGRES_FATAL_ERROR:
1741  got_error = true;
1742  fprintf(stderr, "result %d/%d (error): %s\n", results, numsent, PQerrorMessage(conn));
1743  PQclear(res);
1744 
1745  res2 = PQgetResult(conn);
1746  if (res2 != NULL)
1747  pg_fatal("expected NULL, got %s",
1748  PQresStatus(PQresultStatus(res2)));
1749  break;
1750 
1751  case PGRES_TUPLES_OK:
1752  fprintf(stderr, "result %d/%d: %s\n", results, numsent, PQgetvalue(res, 0, 0));
1753  PQclear(res);
1754 
1755  res2 = PQgetResult(conn);
1756  if (res2 != NULL)
1757  pg_fatal("expected NULL, got %s",
1758  PQresStatus(PQresultStatus(res2)));
1759  break;
1760 
1762  fprintf(stderr, "result %d/%d: pipeline aborted\n", results, numsent);
1763  res2 = PQgetResult(conn);
1764  if (res2 != NULL)
1765  pg_fatal("expected NULL, got %s",
1766  PQresStatus(PQresultStatus(res2)));
1767  break;
1768 
1769  default:
1770  pg_fatal("got unexpected %s", PQresStatus(PQresultStatus(res)));
1771  }
1772 
1773  return got_error;
1774 }
char * PQgetvalue(const PGresult *res, int tup_num, int field_num)
Definition: fe-exec.c:3836
char * PQresStatus(ExecStatusType status)
Definition: fe-exec.c:3379
PGresult * PQgetResult(PGconn *conn)
Definition: fe-exec.c:2038
@ PGRES_FATAL_ERROR
Definition: libpq-fe.h:108
@ PGRES_PIPELINE_ABORTED
Definition: libpq-fe.h:112
@ PGRES_TUPLES_OK
Definition: libpq-fe.h:100

References conn, fprintf(), pg_fatal, PGRES_FATAL_ERROR, PGRES_PIPELINE_ABORTED, PGRES_TUPLES_OK, PQclear(), PQerrorMessage(), PQgetResult(), PQgetvalue(), PQresStatus(), PQresultStatus(), and res.

Referenced by test_uniqviol().

◆ test_disallowed_in_pipeline()

static void test_disallowed_in_pipeline ( PGconn conn)
static

Definition at line 90 of file libpq_pipeline.c.

91 {
92  PGresult *res = NULL;
93 
94  fprintf(stderr, "test error cases... ");
95 
96  if (PQisnonblocking(conn))
97  pg_fatal("Expected blocking connection mode");
98 
99  if (PQenterPipelineMode(conn) != 1)
100  pg_fatal("Unable to enter pipeline mode");
101 
103  pg_fatal("Pipeline mode not activated properly");
104 
105  /* PQexec should fail in pipeline mode */
106  res = PQexec(conn, "SELECT 1");
108  pg_fatal("PQexec should fail in pipeline mode but succeeded");
109  if (strcmp(PQerrorMessage(conn),
110  "synchronous command execution functions are not allowed in pipeline mode\n") != 0)
111  pg_fatal("did not get expected error message; got: \"%s\"",
113 
114  /* PQsendQuery should fail in pipeline mode */
115  if (PQsendQuery(conn, "SELECT 1") != 0)
116  pg_fatal("PQsendQuery should fail in pipeline mode but succeeded");
117  if (strcmp(PQerrorMessage(conn),
118  "PQsendQuery not allowed in pipeline mode\n") != 0)
119  pg_fatal("did not get expected error message; got: \"%s\"",
121 
122  /* Entering pipeline mode when already in pipeline mode is OK */
123  if (PQenterPipelineMode(conn) != 1)
124  pg_fatal("re-entering pipeline mode should be a no-op but failed");
125 
126  if (PQisBusy(conn) != 0)
127  pg_fatal("PQisBusy should return 0 when idle in pipeline mode, returned 1");
128 
129  /* ok, back to normal command mode */
130  if (PQexitPipelineMode(conn) != 1)
131  pg_fatal("couldn't exit idle empty pipeline mode");
132 
134  pg_fatal("Pipeline mode not terminated properly");
135 
136  /* exiting pipeline mode when not in pipeline mode should be a no-op */
137  if (PQexitPipelineMode(conn) != 1)
138  pg_fatal("pipeline mode exit when not in pipeline mode should succeed but failed");
139 
140  /* can now PQexec again */
141  res = PQexec(conn, "SELECT 1");
143  pg_fatal("PQexec should succeed after exiting pipeline mode but failed with: %s",
145 
146  fprintf(stderr, "ok\n");
147 }
PGpipelineStatus PQpipelineStatus(const PGconn *conn)
Definition: fe-connect.c:6883
int PQexitPipelineMode(PGconn *conn)
Definition: fe-exec.c:3035
int PQenterPipelineMode(PGconn *conn)
Definition: fe-exec.c:3004
int PQsendQuery(PGconn *conn, const char *query)
Definition: fe-exec.c:1425
int PQisBusy(PGconn *conn)
Definition: fe-exec.c:2007
int PQisnonblocking(const PGconn *conn)
Definition: fe-exec.c:3943
@ PQ_PIPELINE_OFF
Definition: libpq-fe.h:158

References conn, fprintf(), pg_fatal, PGRES_FATAL_ERROR, PGRES_TUPLES_OK, PQ_PIPELINE_OFF, PQenterPipelineMode(), PQerrorMessage(), PQexec(), PQexitPipelineMode(), PQisBusy(), PQisnonblocking(), PQpipelineStatus(), PQresultStatus(), PQsendQuery(), and res.

Referenced by main().

◆ test_multi_pipelines()

static void test_multi_pipelines ( PGconn conn)
static

Definition at line 150 of file libpq_pipeline.c.

151 {
152  PGresult *res = NULL;
153  const char *dummy_params[1] = {"1"};
154  Oid dummy_param_oids[1] = {INT4OID};
155 
156  fprintf(stderr, "multi pipeline... ");
157 
158  /*
159  * Queue up a couple of small pipelines and process each without returning
160  * to command mode first.
161  */
162  if (PQenterPipelineMode(conn) != 1)
163  pg_fatal("failed to enter pipeline mode: %s", PQerrorMessage(conn));
164 
165  /* first pipeline */
166  if (PQsendQueryParams(conn, "SELECT $1", 1, dummy_param_oids,
167  dummy_params, NULL, NULL, 0) != 1)
168  pg_fatal("dispatching first SELECT failed: %s", PQerrorMessage(conn));
169 
170  if (PQpipelineSync(conn) != 1)
171  pg_fatal("Pipeline sync failed: %s", PQerrorMessage(conn));
172 
173  /* second pipeline */
174  if (PQsendQueryParams(conn, "SELECT $1", 1, dummy_param_oids,
175  dummy_params, NULL, NULL, 0) != 1)
176  pg_fatal("dispatching second SELECT failed: %s", PQerrorMessage(conn));
177 
178  /* Skip flushing once. */
179  if (PQsendPipelineSync(conn) != 1)
180  pg_fatal("Pipeline sync failed: %s", PQerrorMessage(conn));
181 
182  /* third pipeline */
183  if (PQsendQueryParams(conn, "SELECT $1", 1, dummy_param_oids,
184  dummy_params, NULL, NULL, 0) != 1)
185  pg_fatal("dispatching third SELECT failed: %s", PQerrorMessage(conn));
186 
187  if (PQpipelineSync(conn) != 1)
188  pg_fatal("pipeline sync failed: %s", PQerrorMessage(conn));
189 
190  /* OK, start processing the results */
191 
192  /* first pipeline */
193 
194  res = PQgetResult(conn);
195  if (res == NULL)
196  pg_fatal("PQgetResult returned null when there's a pipeline item: %s",
198 
200  pg_fatal("Unexpected result code %s from first pipeline item",
202  PQclear(res);
203  res = NULL;
204 
205  if (PQgetResult(conn) != NULL)
206  pg_fatal("PQgetResult returned something extra after first result");
207 
208  if (PQexitPipelineMode(conn) != 0)
209  pg_fatal("exiting pipeline mode after query but before sync succeeded incorrectly");
210 
211  res = PQgetResult(conn);
212  if (res == NULL)
213  pg_fatal("PQgetResult returned null when sync result expected: %s",
215 
217  pg_fatal("Unexpected result code %s instead of sync result, error: %s",
219  PQclear(res);
220 
221  /* second pipeline */
222 
223  res = PQgetResult(conn);
224  if (res == NULL)
225  pg_fatal("PQgetResult returned null when there's a pipeline item: %s",
227 
229  pg_fatal("Unexpected result code %s from second pipeline item",
231  PQclear(res);
232  res = NULL;
233 
234  if (PQgetResult(conn) != NULL)
235  pg_fatal("PQgetResult returned something extra after first result");
236 
237  if (PQexitPipelineMode(conn) != 0)
238  pg_fatal("exiting pipeline mode after query but before sync succeeded incorrectly");
239 
240  res = PQgetResult(conn);
241  if (res == NULL)
242  pg_fatal("PQgetResult returned null when sync result expected: %s",
244 
246  pg_fatal("Unexpected result code %s instead of sync result, error: %s",
248  PQclear(res);
249 
250  /* third pipeline */
251 
252  res = PQgetResult(conn);
253  if (res == NULL)
254  pg_fatal("PQgetResult returned null when there's a pipeline item: %s",
256 
258  pg_fatal("Unexpected result code %s from third pipeline item",
260 
261  res = PQgetResult(conn);
262  if (res != NULL)
263  pg_fatal("Expected null result, got %s",
265 
266  res = PQgetResult(conn);
267  if (res == NULL)
268  pg_fatal("PQgetResult returned null when there's a pipeline item: %s",
270 
272  pg_fatal("Unexpected result code %s from second pipeline sync",
274 
275  /* We're still in pipeline mode ... */
277  pg_fatal("Fell out of pipeline mode somehow");
278 
279  /* until we end it, which we can safely do now */
280  if (PQexitPipelineMode(conn) != 1)
281  pg_fatal("attempt to exit pipeline mode failed when it should've succeeded: %s",
283 
285  pg_fatal("exiting pipeline mode didn't seem to work");
286 
287  fprintf(stderr, "ok\n");
288 }
int PQsendQueryParams(PGconn *conn, const char *command, int nParams, const Oid *paramTypes, const char *const *paramValues, const int *paramLengths, const int *paramFormats, int resultFormat)
Definition: fe-exec.c:1501
int PQsendPipelineSync(PGconn *conn)
Definition: fe-exec.c:3242
int PQpipelineSync(PGconn *conn)
Definition: fe-exec.c:3232
@ PGRES_PIPELINE_SYNC
Definition: libpq-fe.h:111
unsigned int Oid
Definition: postgres_ext.h:31

References conn, fprintf(), pg_fatal, PGRES_PIPELINE_SYNC, PGRES_TUPLES_OK, PQ_PIPELINE_OFF, PQclear(), PQenterPipelineMode(), PQerrorMessage(), PQexitPipelineMode(), PQgetResult(), PQpipelineStatus(), PQpipelineSync(), PQresStatus(), PQresultStatus(), PQsendPipelineSync(), PQsendQueryParams(), and res.

Referenced by main().

◆ test_nosync()

static void test_nosync ( PGconn conn)
static

Definition at line 295 of file libpq_pipeline.c.

296 {
297  int numqueries = 10;
298  int results = 0;
299  int sock = PQsocket(conn);
300 
301  fprintf(stderr, "nosync... ");
302 
303  if (sock < 0)
304  pg_fatal("invalid socket");
305 
306  if (PQenterPipelineMode(conn) != 1)
307  pg_fatal("could not enter pipeline mode");
308  for (int i = 0; i < numqueries; i++)
309  {
310  fd_set input_mask;
311  struct timeval tv;
312 
313  if (PQsendQueryParams(conn, "SELECT repeat('xyzxz', 12)",
314  0, NULL, NULL, NULL, NULL, 0) != 1)
315  pg_fatal("error sending select: %s", PQerrorMessage(conn));
316  PQflush(conn);
317 
318  /*
319  * If the server has written anything to us, read (some of) it now.
320  */
321  FD_ZERO(&input_mask);
322  FD_SET(sock, &input_mask);
323  tv.tv_sec = 0;
324  tv.tv_usec = 0;
325  if (select(sock + 1, &input_mask, NULL, NULL, &tv) < 0)
326  {
327  fprintf(stderr, "select() failed: %s\n", strerror(errno));
328  exit_nicely(conn);
329  }
330  if (FD_ISSET(sock, &input_mask) && PQconsumeInput(conn) != 1)
331  pg_fatal("failed to read from server: %s", PQerrorMessage(conn));
332  }
333 
334  /* tell server to flush its output buffer */
335  if (PQsendFlushRequest(conn) != 1)
336  pg_fatal("failed to send flush request");
337  PQflush(conn);
338 
339  /* Now read all results */
340  for (;;)
341  {
342  PGresult *res;
343 
344  res = PQgetResult(conn);
345 
346  /* NULL results are only expected after TUPLES_OK */
347  if (res == NULL)
348  pg_fatal("got unexpected NULL result after %d results", results);
349 
350  /* We expect exactly one TUPLES_OK result for each query we sent */
352  {
353  PGresult *res2;
354 
355  /* and one NULL result should follow each */
356  res2 = PQgetResult(conn);
357  if (res2 != NULL)
358  pg_fatal("expected NULL, got %s",
359  PQresStatus(PQresultStatus(res2)));
360  PQclear(res);
361  results++;
362 
363  /* if we're done, we're done */
364  if (results == numqueries)
365  break;
366 
367  continue;
368  }
369 
370  /* anything else is unexpected */
371  pg_fatal("got unexpected %s\n", PQresStatus(PQresultStatus(res)));
372  }
373 
374  fprintf(stderr, "ok\n");
375 }
int PQsocket(const PGconn *conn)
Definition: fe-connect.c:6867
int PQflush(PGconn *conn)
Definition: fe-exec.c:3960
int PQconsumeInput(PGconn *conn)
Definition: fe-exec.c:1960
int PQsendFlushRequest(PGconn *conn)
Definition: fe-exec.c:3331
int i
Definition: isn.c:73
#define strerror
Definition: port.h:251
#define select(n, r, w, e, timeout)
Definition: win32_port.h:495

References conn, exit_nicely(), fprintf(), i, pg_fatal, PGRES_TUPLES_OK, PQclear(), PQconsumeInput(), PQenterPipelineMode(), PQerrorMessage(), PQflush(), PQgetResult(), PQresStatus(), PQresultStatus(), PQsendFlushRequest(), PQsendQueryParams(), PQsocket(), res, select, and strerror.

Referenced by main().

◆ test_pipeline_abort()

static void test_pipeline_abort ( PGconn conn)
static

Definition at line 387 of file libpq_pipeline.c.

388 {
389  PGresult *res = NULL;
390  const char *dummy_params[1] = {"1"};
391  Oid dummy_param_oids[1] = {INT4OID};
392  int i;
393  int gotrows;
394  bool goterror;
395 
396  fprintf(stderr, "aborted pipeline... ");
397 
400  pg_fatal("dispatching DROP TABLE failed: %s", PQerrorMessage(conn));
401 
404  pg_fatal("dispatching CREATE TABLE failed: %s", PQerrorMessage(conn));
405 
406  /*
407  * Queue up a couple of small pipelines and process each without returning
408  * to command mode first. Make sure the second operation in the first
409  * pipeline ERRORs.
410  */
411  if (PQenterPipelineMode(conn) != 1)
412  pg_fatal("failed to enter pipeline mode: %s", PQerrorMessage(conn));
413 
414  dummy_params[0] = "1";
415  if (PQsendQueryParams(conn, insert_sql, 1, dummy_param_oids,
416  dummy_params, NULL, NULL, 0) != 1)
417  pg_fatal("dispatching first insert failed: %s", PQerrorMessage(conn));
418 
419  if (PQsendQueryParams(conn, "SELECT no_such_function($1)",
420  1, dummy_param_oids, dummy_params,
421  NULL, NULL, 0) != 1)
422  pg_fatal("dispatching error select failed: %s", PQerrorMessage(conn));
423 
424  dummy_params[0] = "2";
425  if (PQsendQueryParams(conn, insert_sql, 1, dummy_param_oids,
426  dummy_params, NULL, NULL, 0) != 1)
427  pg_fatal("dispatching second insert failed: %s", PQerrorMessage(conn));
428 
429  if (PQpipelineSync(conn) != 1)
430  pg_fatal("pipeline sync failed: %s", PQerrorMessage(conn));
431 
432  dummy_params[0] = "3";
433  if (PQsendQueryParams(conn, insert_sql, 1, dummy_param_oids,
434  dummy_params, NULL, NULL, 0) != 1)
435  pg_fatal("dispatching second-pipeline insert failed: %s",
437 
438  if (PQpipelineSync(conn) != 1)
439  pg_fatal("pipeline sync failed: %s", PQerrorMessage(conn));
440 
441  /*
442  * OK, start processing the pipeline results.
443  *
444  * We should get a command-ok for the first query, then a fatal error and
445  * a pipeline aborted message for the second insert, a pipeline-end, then
446  * a command-ok and a pipeline-ok for the second pipeline operation.
447  */
448  res = PQgetResult(conn);
449  if (res == NULL)
450  pg_fatal("Unexpected NULL result: %s", PQerrorMessage(conn));
452  pg_fatal("Unexpected result status %s: %s",
455  PQclear(res);
456 
457  /* NULL result to signal end-of-results for this command */
458  if ((res = PQgetResult(conn)) != NULL)
459  pg_fatal("Expected null result, got %s",
461 
462  /* Second query caused error, so we expect an error next */
463  res = PQgetResult(conn);
464  if (res == NULL)
465  pg_fatal("Unexpected NULL result: %s", PQerrorMessage(conn));
467  pg_fatal("Unexpected result code -- expected PGRES_FATAL_ERROR, got %s",
469  PQclear(res);
470 
471  /* NULL result to signal end-of-results for this command */
472  if ((res = PQgetResult(conn)) != NULL)
473  pg_fatal("Expected null result, got %s",
475 
476  /*
477  * pipeline should now be aborted.
478  *
479  * Note that we could still queue more queries at this point if we wanted;
480  * they'd get added to a new third pipeline since we've already sent a
481  * second. The aborted flag relates only to the pipeline being received.
482  */
484  pg_fatal("pipeline should be flagged as aborted but isn't");
485 
486  /* third query in pipeline, the second insert */
487  res = PQgetResult(conn);
488  if (res == NULL)
489  pg_fatal("Unexpected NULL result: %s", PQerrorMessage(conn));
491  pg_fatal("Unexpected result code -- expected PGRES_PIPELINE_ABORTED, got %s",
493  PQclear(res);
494 
495  /* NULL result to signal end-of-results for this command */
496  if ((res = PQgetResult(conn)) != NULL)
497  pg_fatal("Expected null result, got %s", PQresStatus(PQresultStatus(res)));
498 
500  pg_fatal("pipeline should be flagged as aborted but isn't");
501 
502  /* Ensure we're still in pipeline */
504  pg_fatal("Fell out of pipeline mode somehow");
505 
506  /*
507  * The end of a failed pipeline is a PGRES_PIPELINE_SYNC.
508  *
509  * (This is so clients know to start processing results normally again and
510  * can tell the difference between skipped commands and the sync.)
511  */
512  res = PQgetResult(conn);
513  if (res == NULL)
514  pg_fatal("Unexpected NULL result: %s", PQerrorMessage(conn));
516  pg_fatal("Unexpected result code from first pipeline sync\n"
517  "Expected PGRES_PIPELINE_SYNC, got %s",
519  PQclear(res);
520 
522  pg_fatal("sync should've cleared the aborted flag but didn't");
523 
524  /* We're still in pipeline mode... */
526  pg_fatal("Fell out of pipeline mode somehow");
527 
528  /* the insert from the second pipeline */
529  res = PQgetResult(conn);
530  if (res == NULL)
531  pg_fatal("Unexpected NULL result: %s", PQerrorMessage(conn));
533  pg_fatal("Unexpected result code %s from first item in second pipeline",
535  PQclear(res);
536 
537  /* Read the NULL result at the end of the command */
538  if ((res = PQgetResult(conn)) != NULL)
539  pg_fatal("Expected null result, got %s", PQresStatus(PQresultStatus(res)));
540 
541  /* the second pipeline sync */
542  if ((res = PQgetResult(conn)) == NULL)
543  pg_fatal("Unexpected NULL result: %s", PQerrorMessage(conn));
545  pg_fatal("Unexpected result code %s from second pipeline sync",
547  PQclear(res);
548 
549  if ((res = PQgetResult(conn)) != NULL)
550  pg_fatal("Expected null result, got %s: %s",
553 
554  /* Try to send two queries in one command */
555  if (PQsendQueryParams(conn, "SELECT 1; SELECT 2", 0, NULL, NULL, NULL, NULL, 0) != 1)
556  pg_fatal("failed to send query: %s", PQerrorMessage(conn));
557  if (PQpipelineSync(conn) != 1)
558  pg_fatal("pipeline sync failed: %s", PQerrorMessage(conn));
559  goterror = false;
560  while ((res = PQgetResult(conn)) != NULL)
561  {
562  switch (PQresultStatus(res))
563  {
564  case PGRES_FATAL_ERROR:
565  if (strcmp(PQresultErrorField(res, PG_DIAG_SQLSTATE), "42601") != 0)
566  pg_fatal("expected error about multiple commands, got %s",
568  printf("got expected %s", PQerrorMessage(conn));
569  goterror = true;
570  break;
571  default:
572  pg_fatal("got unexpected status %s", PQresStatus(PQresultStatus(res)));
573  break;
574  }
575  }
576  if (!goterror)
577  pg_fatal("did not get cannot-insert-multiple-commands error");
578  res = PQgetResult(conn);
579  if (res == NULL)
580  pg_fatal("got NULL result");
582  pg_fatal("Unexpected result code %s from pipeline sync",
584  fprintf(stderr, "ok\n");
585 
586  /* Test single-row mode with an error partways */
587  if (PQsendQueryParams(conn, "SELECT 1.0/g FROM generate_series(3, -1, -1) g",
588  0, NULL, NULL, NULL, NULL, 0) != 1)
589  pg_fatal("failed to send query: %s", PQerrorMessage(conn));
590  if (PQpipelineSync(conn) != 1)
591  pg_fatal("pipeline sync failed: %s", PQerrorMessage(conn));
593  goterror = false;
594  gotrows = 0;
595  while ((res = PQgetResult(conn)) != NULL)
596  {
597  switch (PQresultStatus(res))
598  {
599  case PGRES_SINGLE_TUPLE:
600  printf("got row: %s\n", PQgetvalue(res, 0, 0));
601  gotrows++;
602  break;
603  case PGRES_FATAL_ERROR:
604  if (strcmp(PQresultErrorField(res, PG_DIAG_SQLSTATE), "22012") != 0)
605  pg_fatal("expected division-by-zero, got: %s (%s)",
608  printf("got expected division-by-zero\n");
609  goterror = true;
610  break;
611  default:
612  pg_fatal("got unexpected result %s", PQresStatus(PQresultStatus(res)));
613  }
614  PQclear(res);
615  }
616  if (!goterror)
617  pg_fatal("did not get division-by-zero error");
618  if (gotrows != 3)
619  pg_fatal("did not get three rows");
620  /* the third pipeline sync */
621  if ((res = PQgetResult(conn)) == NULL)
622  pg_fatal("Unexpected NULL result: %s", PQerrorMessage(conn));
624  pg_fatal("Unexpected result code %s from third pipeline sync",
626  PQclear(res);
627 
628  /* We're still in pipeline mode... */
630  pg_fatal("Fell out of pipeline mode somehow");
631 
632  /* until we end it, which we can safely do now */
633  if (PQexitPipelineMode(conn) != 1)
634  pg_fatal("attempt to exit pipeline mode failed when it should've succeeded: %s",
636 
638  pg_fatal("exiting pipeline mode didn't seem to work");
639 
640  /*-
641  * Since we fired the pipelines off without a surrounding xact, the results
642  * should be:
643  *
644  * - Implicit xact started by server around 1st pipeline
645  * - First insert applied
646  * - Second statement aborted xact
647  * - Third insert skipped
648  * - Sync rolled back first implicit xact
649  * - Implicit xact created by server around 2nd pipeline
650  * - insert applied from 2nd pipeline
651  * - Sync commits 2nd xact
652  *
653  * So we should only have the value 3 that we inserted.
654  */
655  res = PQexec(conn, "SELECT itemno FROM pq_pipeline_demo");
656 
658  pg_fatal("Expected tuples, got %s: %s",
660  if (PQntuples(res) != 1)
661  pg_fatal("expected 1 result, got %d", PQntuples(res));
662  for (i = 0; i < PQntuples(res); i++)
663  {
664  const char *val = PQgetvalue(res, i, 0);
665 
666  if (strcmp(val, "3") != 0)
667  pg_fatal("expected only insert with value 3, got %s", val);
668  }
669 
670  PQclear(res);
671 
672  fprintf(stderr, "ok\n");
673 }
int PQsetSingleRowMode(PGconn *conn)
Definition: fe-exec.c:1932
char * PQresultErrorMessage(const PGresult *res)
Definition: fe-exec.c:3387
int PQntuples(const PGresult *res)
Definition: fe-exec.c:3441
char * PQresultErrorField(const PGresult *res, int fieldcode)
Definition: fe-exec.c:3426
long val
Definition: informix.c:664
@ PGRES_SINGLE_TUPLE
Definition: libpq-fe.h:110
@ PQ_PIPELINE_ABORTED
Definition: libpq-fe.h:160
static const char *const create_table_sql
static const char *const insert_sql
static const char *const drop_table_sql
#define PG_DIAG_SQLSTATE
Definition: postgres_ext.h:56

References conn, create_table_sql, drop_table_sql, fprintf(), i, insert_sql, PG_DIAG_SQLSTATE, pg_fatal, PGRES_COMMAND_OK, PGRES_FATAL_ERROR, PGRES_PIPELINE_ABORTED, PGRES_PIPELINE_SYNC, PGRES_SINGLE_TUPLE, PGRES_TUPLES_OK, PQ_PIPELINE_ABORTED, PQ_PIPELINE_OFF, PQclear(), PQenterPipelineMode(), PQerrorMessage(), PQexec(), PQexitPipelineMode(), PQgetResult(), PQgetvalue(), PQntuples(), PQpipelineStatus(), PQpipelineSync(), PQresStatus(), PQresultErrorField(), PQresultErrorMessage(), PQresultStatus(), PQsendQueryParams(), PQsetSingleRowMode(), printf, res, and val.

Referenced by main().

◆ test_pipeline_idle()

static void test_pipeline_idle ( PGconn conn)
static

Definition at line 1104 of file libpq_pipeline.c.

1105 {
1106  PGresult *res;
1107  int n_notices = 0;
1108 
1109  fprintf(stderr, "\npipeline idle...\n");
1110 
1112 
1113  /* Try to exit pipeline mode in pipeline-idle state */
1114  if (PQenterPipelineMode(conn) != 1)
1115  pg_fatal("failed to enter pipeline mode: %s", PQerrorMessage(conn));
1116  if (PQsendQueryParams(conn, "SELECT 1", 0, NULL, NULL, NULL, NULL, 0) != 1)
1117  pg_fatal("failed to send query: %s", PQerrorMessage(conn));
1119  res = PQgetResult(conn);
1120  if (res == NULL)
1121  pg_fatal("PQgetResult returned null when there's a pipeline item: %s",
1122  PQerrorMessage(conn));
1124  pg_fatal("unexpected result code %s from first pipeline item",
1126  PQclear(res);
1127  res = PQgetResult(conn);
1128  if (res != NULL)
1129  pg_fatal("did not receive terminating NULL");
1130  if (PQsendQueryParams(conn, "SELECT 2", 0, NULL, NULL, NULL, NULL, 0) != 1)
1131  pg_fatal("failed to send query: %s", PQerrorMessage(conn));
1132  if (PQexitPipelineMode(conn) == 1)
1133  pg_fatal("exiting pipeline succeeded when it shouldn't");
1134  if (strncmp(PQerrorMessage(conn), "cannot exit pipeline mode",
1135  strlen("cannot exit pipeline mode")) != 0)
1136  pg_fatal("did not get expected error; got: %s",
1137  PQerrorMessage(conn));
1139  res = PQgetResult(conn);
1141  pg_fatal("unexpected result code %s from second pipeline item",
1143  PQclear(res);
1144  res = PQgetResult(conn);
1145  if (res != NULL)
1146  pg_fatal("did not receive terminating NULL");
1147  if (PQexitPipelineMode(conn) != 1)
1148  pg_fatal("exiting pipeline failed: %s", PQerrorMessage(conn));
1149 
1150  if (n_notices > 0)
1151  pg_fatal("got %d notice(s)", n_notices);
1152  fprintf(stderr, "ok - 1\n");
1153 
1154  /* Have a WARNING in the middle of a resultset */
1155  if (PQenterPipelineMode(conn) != 1)
1156  pg_fatal("entering pipeline mode failed: %s", PQerrorMessage(conn));
1157  if (PQsendQueryParams(conn, "SELECT pg_catalog.pg_advisory_unlock(1,1)", 0, NULL, NULL, NULL, NULL, 0) != 1)
1158  pg_fatal("failed to send query: %s", PQerrorMessage(conn));
1160  res = PQgetResult(conn);
1161  if (res == NULL)
1162  pg_fatal("unexpected NULL result received");
1164  pg_fatal("unexpected result code %s", PQresStatus(PQresultStatus(res)));
1165  if (PQexitPipelineMode(conn) != 1)
1166  pg_fatal("failed to exit pipeline mode: %s", PQerrorMessage(conn));
1167  fprintf(stderr, "ok - 2\n");
1168 }
PQnoticeProcessor PQsetNoticeProcessor(PGconn *conn, PQnoticeProcessor proc, void *arg)
Definition: fe-connect.c:7020
static void notice_processor(void *arg, const char *message)

References conn, fprintf(), notice_processor(), pg_fatal, PGRES_TUPLES_OK, PQclear(), PQenterPipelineMode(), PQerrorMessage(), PQexitPipelineMode(), PQgetResult(), PQresStatus(), PQresultStatus(), PQsendFlushRequest(), PQsendQueryParams(), PQsetNoticeProcessor(), and res.

Referenced by main().

◆ test_pipelined_insert()

static void test_pipelined_insert ( PGconn conn,
int  n_rows 
)
static

Definition at line 689 of file libpq_pipeline.c.

690 {
691  Oid insert_param_oids[2] = {INT4OID, INT8OID};
692  const char *insert_params[2];
693  char insert_param_0[MAXINTLEN];
694  char insert_param_1[MAXINT8LEN];
695  enum PipelineInsertStep send_step = BI_BEGIN_TX,
696  recv_step = BI_BEGIN_TX;
697  int rows_to_send,
698  rows_to_receive;
699 
700  insert_params[0] = insert_param_0;
701  insert_params[1] = insert_param_1;
702 
703  rows_to_send = rows_to_receive = n_rows;
704 
705  /*
706  * Do a pipelined insert into a table created at the start of the pipeline
707  */
708  if (PQenterPipelineMode(conn) != 1)
709  pg_fatal("failed to enter pipeline mode: %s", PQerrorMessage(conn));
710 
711  while (send_step != BI_PREPARE)
712  {
713  const char *sql;
714 
715  switch (send_step)
716  {
717  case BI_BEGIN_TX:
718  sql = "BEGIN TRANSACTION";
719  send_step = BI_DROP_TABLE;
720  break;
721 
722  case BI_DROP_TABLE:
723  sql = drop_table_sql;
724  send_step = BI_CREATE_TABLE;
725  break;
726 
727  case BI_CREATE_TABLE:
728  sql = create_table_sql;
729  send_step = BI_PREPARE;
730  break;
731 
732  default:
733  pg_fatal("invalid state");
734  sql = NULL; /* keep compiler quiet */
735  }
736 
737  pg_debug("sending: %s\n", sql);
738  if (PQsendQueryParams(conn, sql,
739  0, NULL, NULL, NULL, NULL, 0) != 1)
740  pg_fatal("dispatching %s failed: %s", sql, PQerrorMessage(conn));
741  }
742 
743  Assert(send_step == BI_PREPARE);
744  pg_debug("sending: %s\n", insert_sql2);
745  if (PQsendPrepare(conn, "my_insert", insert_sql2, 2, insert_param_oids) != 1)
746  pg_fatal("dispatching PREPARE failed: %s", PQerrorMessage(conn));
747  send_step = BI_INSERT_ROWS;
748 
749  /*
750  * Now we start inserting. We'll be sending enough data that we could fill
751  * our output buffer, so to avoid deadlocking we need to enter nonblocking
752  * mode and consume input while we send more output. As results of each
753  * query are processed we should pop them to allow processing of the next
754  * query. There's no need to finish the pipeline before processing
755  * results.
756  */
757  if (PQsetnonblocking(conn, 1) != 0)
758  pg_fatal("failed to set nonblocking mode: %s", PQerrorMessage(conn));
759 
760  while (recv_step != BI_DONE)
761  {
762  int sock;
763  fd_set input_mask;
764  fd_set output_mask;
765 
766  sock = PQsocket(conn);
767 
768  if (sock < 0)
769  break; /* shouldn't happen */
770 
771  FD_ZERO(&input_mask);
772  FD_SET(sock, &input_mask);
773  FD_ZERO(&output_mask);
774  FD_SET(sock, &output_mask);
775 
776  if (select(sock + 1, &input_mask, &output_mask, NULL, NULL) < 0)
777  {
778  fprintf(stderr, "select() failed: %s\n", strerror(errno));
779  exit_nicely(conn);
780  }
781 
782  /*
783  * Process any results, so we keep the server's output buffer free
784  * flowing and it can continue to process input
785  */
786  if (FD_ISSET(sock, &input_mask))
787  {
789 
790  /* Read until we'd block if we tried to read */
791  while (!PQisBusy(conn) && recv_step < BI_DONE)
792  {
793  PGresult *res;
794  const char *cmdtag = "";
795  const char *description = "";
796  int status;
797 
798  /*
799  * Read next result. If no more results from this query,
800  * advance to the next query
801  */
802  res = PQgetResult(conn);
803  if (res == NULL)
804  continue;
805 
806  status = PGRES_COMMAND_OK;
807  switch (recv_step)
808  {
809  case BI_BEGIN_TX:
810  cmdtag = "BEGIN";
811  recv_step++;
812  break;
813  case BI_DROP_TABLE:
814  cmdtag = "DROP TABLE";
815  recv_step++;
816  break;
817  case BI_CREATE_TABLE:
818  cmdtag = "CREATE TABLE";
819  recv_step++;
820  break;
821  case BI_PREPARE:
822  cmdtag = "";
823  description = "PREPARE";
824  recv_step++;
825  break;
826  case BI_INSERT_ROWS:
827  cmdtag = "INSERT";
828  rows_to_receive--;
829  if (rows_to_receive == 0)
830  recv_step++;
831  break;
832  case BI_COMMIT_TX:
833  cmdtag = "COMMIT";
834  recv_step++;
835  break;
836  case BI_SYNC:
837  cmdtag = "";
838  description = "SYNC";
839  status = PGRES_PIPELINE_SYNC;
840  recv_step++;
841  break;
842  case BI_DONE:
843  /* unreachable */
844  pg_fatal("unreachable state");
845  }
846 
847  if (PQresultStatus(res) != status)
848  pg_fatal("%s reported status %s, expected %s\n"
849  "Error message: \"%s\"",
851  PQresStatus(status), PQerrorMessage(conn));
852 
853  if (strncmp(PQcmdStatus(res), cmdtag, strlen(cmdtag)) != 0)
854  pg_fatal("%s expected command tag '%s', got '%s'",
855  description, cmdtag, PQcmdStatus(res));
856 
857  pg_debug("Got %s OK\n", cmdtag[0] != '\0' ? cmdtag : description);
858 
859  PQclear(res);
860  }
861  }
862 
863  /* Write more rows and/or the end pipeline message, if needed */
864  if (FD_ISSET(sock, &output_mask))
865  {
866  PQflush(conn);
867 
868  if (send_step == BI_INSERT_ROWS)
869  {
870  snprintf(insert_param_0, MAXINTLEN, "%d", rows_to_send);
871  /* use up some buffer space with a wide value */
872  snprintf(insert_param_1, MAXINT8LEN, "%lld", 1LL << 62);
873 
874  if (PQsendQueryPrepared(conn, "my_insert",
875  2, insert_params, NULL, NULL, 0) == 1)
876  {
877  pg_debug("sent row %d\n", rows_to_send);
878 
879  rows_to_send--;
880  if (rows_to_send == 0)
881  send_step++;
882  }
883  else
884  {
885  /*
886  * in nonblocking mode, so it's OK for an insert to fail
887  * to send
888  */
889  fprintf(stderr, "WARNING: failed to send insert #%d: %s\n",
890  rows_to_send, PQerrorMessage(conn));
891  }
892  }
893  else if (send_step == BI_COMMIT_TX)
894  {
895  if (PQsendQueryParams(conn, "COMMIT",
896  0, NULL, NULL, NULL, NULL, 0) == 1)
897  {
898  pg_debug("sent COMMIT\n");
899  send_step++;
900  }
901  else
902  {
903  fprintf(stderr, "WARNING: failed to send commit: %s\n",
905  }
906  }
907  else if (send_step == BI_SYNC)
908  {
909  if (PQpipelineSync(conn) == 1)
910  {
911  fprintf(stdout, "pipeline sync sent\n");
912  send_step++;
913  }
914  else
915  {
916  fprintf(stderr, "WARNING: pipeline sync failed: %s\n",
918  }
919  }
920  }
921  }
922 
923  /* We've got the sync message and the pipeline should be done */
924  if (PQexitPipelineMode(conn) != 1)
925  pg_fatal("attempt to exit pipeline mode failed when it should've succeeded: %s",
927 
928  if (PQsetnonblocking(conn, 0) != 0)
929  pg_fatal("failed to clear nonblocking mode: %s", PQerrorMessage(conn));
930 
931  fprintf(stderr, "ok\n");
932 }
char * PQcmdStatus(PGresult *res)
Definition: fe-exec.c:3712
int PQsetnonblocking(PGconn *conn, int arg)
Definition: fe-exec.c:3904
int PQsendPrepare(PGconn *conn, const char *stmtName, const char *query, int nParams, const Oid *paramTypes)
Definition: fe-exec.c:1545
int PQsendQueryPrepared(PGconn *conn, const char *stmtName, int nParams, const char *const *paramValues, const int *paramLengths, const int *paramFormats, int resultFormat)
Definition: fe-exec.c:1642
#define MAXINT8LEN
static const char *const insert_sql2
#define MAXINTLEN
Assert(fmt[strlen(fmt) - 1] !='\n')
#define pg_debug(...)
PipelineInsertStep
#define snprintf
Definition: port.h:238
const char * description

References Assert(), BI_BEGIN_TX, BI_COMMIT_TX, BI_CREATE_TABLE, BI_DONE, BI_DROP_TABLE, BI_INSERT_ROWS, BI_PREPARE, BI_SYNC, conn, create_table_sql, description, drop_table_sql, exit_nicely(), fprintf(), insert_sql2, MAXINT8LEN, MAXINTLEN, pg_debug, pg_fatal, PGRES_COMMAND_OK, PGRES_PIPELINE_SYNC, PQclear(), PQcmdStatus(), PQconsumeInput(), PQenterPipelineMode(), PQerrorMessage(), PQexitPipelineMode(), PQflush(), PQgetResult(), PQisBusy(), PQpipelineSync(), PQresStatus(), PQresultStatus(), PQsendPrepare(), PQsendQueryParams(), PQsendQueryPrepared(), PQsetnonblocking(), PQsocket(), res, select, snprintf, generate_unaccent_rules::stdout, and strerror.

Referenced by main().

◆ test_prepared()

static void test_prepared ( PGconn conn)
static

Definition at line 935 of file libpq_pipeline.c.

936 {
937  PGresult *res = NULL;
938  Oid param_oids[1] = {INT4OID};
939  Oid expected_oids[4];
940  Oid typ;
941 
942  fprintf(stderr, "prepared... ");
943 
944  if (PQenterPipelineMode(conn) != 1)
945  pg_fatal("failed to enter pipeline mode: %s", PQerrorMessage(conn));
946  if (PQsendPrepare(conn, "select_one", "SELECT $1, '42', $1::numeric, "
947  "interval '1 sec'",
948  1, param_oids) != 1)
949  pg_fatal("preparing query failed: %s", PQerrorMessage(conn));
950  expected_oids[0] = INT4OID;
951  expected_oids[1] = TEXTOID;
952  expected_oids[2] = NUMERICOID;
953  expected_oids[3] = INTERVALOID;
954  if (PQsendDescribePrepared(conn, "select_one") != 1)
955  pg_fatal("failed to send describePrepared: %s", PQerrorMessage(conn));
956  if (PQpipelineSync(conn) != 1)
957  pg_fatal("pipeline sync failed: %s", PQerrorMessage(conn));
958 
959  res = PQgetResult(conn);
960  if (res == NULL)
961  pg_fatal("PQgetResult returned null");
963  pg_fatal("expected COMMAND_OK, got %s", PQresStatus(PQresultStatus(res)));
964  PQclear(res);
965  res = PQgetResult(conn);
966  if (res != NULL)
967  pg_fatal("expected NULL result");
968 
969  res = PQgetResult(conn);
970  if (res == NULL)
971  pg_fatal("PQgetResult returned NULL");
973  pg_fatal("expected COMMAND_OK, got %s", PQresStatus(PQresultStatus(res)));
974  if (PQnfields(res) != lengthof(expected_oids))
975  pg_fatal("expected %zu columns, got %d",
976  lengthof(expected_oids), PQnfields(res));
977  for (int i = 0; i < PQnfields(res); i++)
978  {
979  typ = PQftype(res, i);
980  if (typ != expected_oids[i])
981  pg_fatal("field %d: expected type %u, got %u",
982  i, expected_oids[i], typ);
983  }
984  PQclear(res);
985  res = PQgetResult(conn);
986  if (res != NULL)
987  pg_fatal("expected NULL result");
988 
989  res = PQgetResult(conn);
991  pg_fatal("expected PGRES_PIPELINE_SYNC, got %s", PQresStatus(PQresultStatus(res)));
992 
993  fprintf(stderr, "closing statement..");
994  if (PQsendClosePrepared(conn, "select_one") != 1)
995  pg_fatal("PQsendClosePrepared failed: %s", PQerrorMessage(conn));
996  if (PQpipelineSync(conn) != 1)
997  pg_fatal("pipeline sync failed: %s", PQerrorMessage(conn));
998 
999  res = PQgetResult(conn);
1000  if (res == NULL)
1001  pg_fatal("expected non-NULL result");
1003  pg_fatal("expected COMMAND_OK, got %s", PQresStatus(PQresultStatus(res)));
1004  PQclear(res);
1005  res = PQgetResult(conn);
1006  if (res != NULL)
1007  pg_fatal("expected NULL result");
1008  res = PQgetResult(conn);
1010  pg_fatal("expected PGRES_PIPELINE_SYNC, got %s", PQresStatus(PQresultStatus(res)));
1011 
1012  if (PQexitPipelineMode(conn) != 1)
1013  pg_fatal("could not exit pipeline mode: %s", PQerrorMessage(conn));
1014 
1015  /* Now that it's closed we should get an error when describing */
1016  res = PQdescribePrepared(conn, "select_one");
1018  pg_fatal("expected FATAL_ERROR, got %s", PQresStatus(PQresultStatus(res)));
1019 
1020  /*
1021  * Also test the blocking close, this should not fail since closing a
1022  * non-existent prepared statement is a no-op
1023  */
1024  res = PQclosePrepared(conn, "select_one");
1026  pg_fatal("expected COMMAND_OK, got %s", PQresStatus(PQresultStatus(res)));
1027 
1028  fprintf(stderr, "creating portal... ");
1029  PQexec(conn, "BEGIN");
1030  PQexec(conn, "DECLARE cursor_one CURSOR FOR SELECT 1");
1032  if (PQsendDescribePortal(conn, "cursor_one") != 1)
1033  pg_fatal("PQsendDescribePortal failed: %s", PQerrorMessage(conn));
1034  if (PQpipelineSync(conn) != 1)
1035  pg_fatal("pipeline sync failed: %s", PQerrorMessage(conn));
1036  res = PQgetResult(conn);
1037  if (res == NULL)
1038  pg_fatal("PQgetResult returned null");
1040  pg_fatal("expected COMMAND_OK, got %s", PQresStatus(PQresultStatus(res)));
1041 
1042  typ = PQftype(res, 0);
1043  if (typ != INT4OID)
1044  pg_fatal("portal: expected type %u, got %u",
1045  INT4OID, typ);
1046  PQclear(res);
1047  res = PQgetResult(conn);
1048  if (res != NULL)
1049  pg_fatal("expected NULL result");
1050  res = PQgetResult(conn);
1052  pg_fatal("expected PGRES_PIPELINE_SYNC, got %s", PQresStatus(PQresultStatus(res)));
1053 
1054  fprintf(stderr, "closing portal... ");
1055  if (PQsendClosePortal(conn, "cursor_one") != 1)
1056  pg_fatal("PQsendClosePortal failed: %s", PQerrorMessage(conn));
1057  if (PQpipelineSync(conn) != 1)
1058  pg_fatal("pipeline sync failed: %s", PQerrorMessage(conn));
1059 
1060  res = PQgetResult(conn);
1061  if (res == NULL)
1062  pg_fatal("expected non-NULL result");
1064  pg_fatal("expected COMMAND_OK, got %s", PQresStatus(PQresultStatus(res)));
1065  PQclear(res);
1066  res = PQgetResult(conn);
1067  if (res != NULL)
1068  pg_fatal("expected NULL result");
1069  res = PQgetResult(conn);
1071  pg_fatal("expected PGRES_PIPELINE_SYNC, got %s", PQresStatus(PQresultStatus(res)));
1072 
1073  if (PQexitPipelineMode(conn) != 1)
1074  pg_fatal("could not exit pipeline mode: %s", PQerrorMessage(conn));
1075 
1076  /* Now that it's closed we should get an error when describing */
1077  res = PQdescribePortal(conn, "cursor_one");
1079  pg_fatal("expected FATAL_ERROR, got %s", PQresStatus(PQresultStatus(res)));
1080 
1081  /*
1082  * Also test the blocking close, this should not fail since closing a
1083  * non-existent portal is a no-op
1084  */
1085  res = PQclosePortal(conn, "cursor_one");
1087  pg_fatal("expected COMMAND_OK, got %s", PQresStatus(PQresultStatus(res)));
1088 
1089  fprintf(stderr, "ok\n");
1090 }
#define lengthof(array)
Definition: c.h:777
Oid PQftype(const PGresult *res, int field_num)
Definition: fe-exec.c:3679
int PQsendClosePortal(PGconn *conn, const char *portal)
Definition: fe-exec.c:2531
PGresult * PQdescribePrepared(PGconn *conn, const char *stmt)
Definition: fe-exec.c:2417
int PQsendClosePrepared(PGconn *conn, const char *stmt)
Definition: fe-exec.c:2518
PGresult * PQclosePortal(PGconn *conn, const char *portal)
Definition: fe-exec.c:2501
PGresult * PQdescribePortal(PGconn *conn, const char *portal)
Definition: fe-exec.c:2436
int PQsendDescribePrepared(PGconn *conn, const char *stmt)
Definition: fe-exec.c:2453
int PQsendDescribePortal(PGconn *conn, const char *portal)
Definition: fe-exec.c:2466
PGresult * PQclosePrepared(PGconn *conn, const char *stmt)
Definition: fe-exec.c:2483
int PQnfields(const PGresult *res)
Definition: fe-exec.c:3449

References conn, fprintf(), i, lengthof, pg_fatal, PGRES_COMMAND_OK, PGRES_FATAL_ERROR, PGRES_PIPELINE_SYNC, PQclear(), PQclosePortal(), PQclosePrepared(), PQdescribePortal(), PQdescribePrepared(), PQenterPipelineMode(), PQerrorMessage(), PQexec(), PQexitPipelineMode(), PQftype(), PQgetResult(), PQnfields(), PQpipelineSync(), PQresStatus(), PQresultStatus(), PQsendClosePortal(), PQsendClosePrepared(), PQsendDescribePortal(), PQsendDescribePrepared(), PQsendPrepare(), and res.

Referenced by main().

◆ test_simple_pipeline()

static void test_simple_pipeline ( PGconn conn)
static

Definition at line 1171 of file libpq_pipeline.c.

1172 {
1173  PGresult *res = NULL;
1174  const char *dummy_params[1] = {"1"};
1175  Oid dummy_param_oids[1] = {INT4OID};
1176 
1177  fprintf(stderr, "simple pipeline... ");
1178 
1179  /*
1180  * Enter pipeline mode and dispatch a set of operations, which we'll then
1181  * process the results of as they come in.
1182  *
1183  * For a simple case we should be able to do this without interim
1184  * processing of results since our output buffer will give us enough slush
1185  * to work with and we won't block on sending. So blocking mode is fine.
1186  */
1187  if (PQisnonblocking(conn))
1188  pg_fatal("Expected blocking connection mode");
1189 
1190  if (PQenterPipelineMode(conn) != 1)
1191  pg_fatal("failed to enter pipeline mode: %s", PQerrorMessage(conn));
1192 
1193  if (PQsendQueryParams(conn, "SELECT $1",
1194  1, dummy_param_oids, dummy_params,
1195  NULL, NULL, 0) != 1)
1196  pg_fatal("dispatching SELECT failed: %s", PQerrorMessage(conn));
1197 
1198  if (PQexitPipelineMode(conn) != 0)
1199  pg_fatal("exiting pipeline mode with work in progress should fail, but succeeded");
1200 
1201  if (PQpipelineSync(conn) != 1)
1202  pg_fatal("pipeline sync failed: %s", PQerrorMessage(conn));
1203 
1204  res = PQgetResult(conn);
1205  if (res == NULL)
1206  pg_fatal("PQgetResult returned null when there's a pipeline item: %s",
1207  PQerrorMessage(conn));
1208 
1210  pg_fatal("Unexpected result code %s from first pipeline item",
1212 
1213  PQclear(res);
1214  res = NULL;
1215 
1216  if (PQgetResult(conn) != NULL)
1217  pg_fatal("PQgetResult returned something extra after first query result.");
1218 
1219  /*
1220  * Even though we've processed the result there's still a sync to come and
1221  * we can't exit pipeline mode yet
1222  */
1223  if (PQexitPipelineMode(conn) != 0)
1224  pg_fatal("exiting pipeline mode after query but before sync succeeded incorrectly");
1225 
1226  res = PQgetResult(conn);
1227  if (res == NULL)
1228  pg_fatal("PQgetResult returned null when sync result PGRES_PIPELINE_SYNC expected: %s",
1229  PQerrorMessage(conn));
1230 
1232  pg_fatal("Unexpected result code %s instead of PGRES_PIPELINE_SYNC, error: %s",
1234 
1235  PQclear(res);
1236  res = NULL;
1237 
1238  if (PQgetResult(conn) != NULL)
1239  pg_fatal("PQgetResult returned something extra after pipeline end: %s",
1241 
1242  /* We're still in pipeline mode... */
1244  pg_fatal("Fell out of pipeline mode somehow");
1245 
1246  /* ... until we end it, which we can safely do now */
1247  if (PQexitPipelineMode(conn) != 1)
1248  pg_fatal("attempt to exit pipeline mode failed when it should've succeeded: %s",
1249  PQerrorMessage(conn));
1250 
1252  pg_fatal("Exiting pipeline mode didn't seem to work");
1253 
1254  fprintf(stderr, "ok\n");
1255 }

References conn, fprintf(), pg_fatal, PGRES_PIPELINE_SYNC, PGRES_TUPLES_OK, PQ_PIPELINE_OFF, PQclear(), PQenterPipelineMode(), PQerrorMessage(), PQexitPipelineMode(), PQgetResult(), PQisnonblocking(), PQpipelineStatus(), PQpipelineSync(), PQresStatus(), PQresultStatus(), PQsendQueryParams(), and res.

Referenced by main().

◆ test_singlerowmode()

static void test_singlerowmode ( PGconn conn)
static

Definition at line 1258 of file libpq_pipeline.c.

1259 {
1260  PGresult *res;
1261  int i;
1262  bool pipeline_ended = false;
1263 
1264  if (PQenterPipelineMode(conn) != 1)
1265  pg_fatal("failed to enter pipeline mode: %s",
1266  PQerrorMessage(conn));
1267 
1268  /* One series of three commands, using single-row mode for the first two. */
1269  for (i = 0; i < 3; i++)
1270  {
1271  char *param[1];
1272 
1273  param[0] = psprintf("%d", 44 + i);
1274 
1275  if (PQsendQueryParams(conn,
1276  "SELECT generate_series(42, $1)",
1277  1,
1278  NULL,
1279  (const char **) param,
1280  NULL,
1281  NULL,
1282  0) != 1)
1283  pg_fatal("failed to send query: %s",
1284  PQerrorMessage(conn));
1285  pfree(param[0]);
1286  }
1287  if (PQpipelineSync(conn) != 1)
1288  pg_fatal("pipeline sync failed: %s", PQerrorMessage(conn));
1289 
1290  for (i = 0; !pipeline_ended; i++)
1291  {
1292  bool first = true;
1293  bool saw_ending_tuplesok;
1294  bool isSingleTuple = false;
1295 
1296  /* Set single row mode for only first 2 SELECT queries */
1297  if (i < 2)
1298  {
1299  if (PQsetSingleRowMode(conn) != 1)
1300  pg_fatal("PQsetSingleRowMode() failed for i=%d", i);
1301  }
1302 
1303  /* Consume rows for this query */
1304  saw_ending_tuplesok = false;
1305  while ((res = PQgetResult(conn)) != NULL)
1306  {
1308 
1309  if (est == PGRES_PIPELINE_SYNC)
1310  {
1311  fprintf(stderr, "end of pipeline reached\n");
1312  pipeline_ended = true;
1313  PQclear(res);
1314  if (i != 3)
1315  pg_fatal("Expected three results, got %d", i);
1316  break;
1317  }
1318 
1319  /* Expect SINGLE_TUPLE for queries 0 and 1, TUPLES_OK for 2 */
1320  if (first)
1321  {
1322  if (i <= 1 && est != PGRES_SINGLE_TUPLE)
1323  pg_fatal("Expected PGRES_SINGLE_TUPLE for query %d, got %s",
1324  i, PQresStatus(est));
1325  if (i >= 2 && est != PGRES_TUPLES_OK)
1326  pg_fatal("Expected PGRES_TUPLES_OK for query %d, got %s",
1327  i, PQresStatus(est));
1328  first = false;
1329  }
1330 
1331  fprintf(stderr, "Result status %s for query %d", PQresStatus(est), i);
1332  switch (est)
1333  {
1334  case PGRES_TUPLES_OK:
1335  fprintf(stderr, ", tuples: %d\n", PQntuples(res));
1336  saw_ending_tuplesok = true;
1337  if (isSingleTuple)
1338  {
1339  if (PQntuples(res) == 0)
1340  fprintf(stderr, "all tuples received in query %d\n", i);
1341  else
1342  pg_fatal("Expected to follow PGRES_SINGLE_TUPLE, but received PGRES_TUPLES_OK directly instead");
1343  }
1344  break;
1345 
1346  case PGRES_SINGLE_TUPLE:
1347  isSingleTuple = true;
1348  fprintf(stderr, ", %d tuple: %s\n", PQntuples(res), PQgetvalue(res, 0, 0));
1349  break;
1350 
1351  default:
1352  pg_fatal("unexpected");
1353  }
1354  PQclear(res);
1355  }
1356  if (!pipeline_ended && !saw_ending_tuplesok)
1357  pg_fatal("didn't get expected terminating TUPLES_OK");
1358  }
1359 
1360  /*
1361  * Now issue one command, get its results in with single-row mode, then
1362  * issue another command, and get its results in normal mode; make sure
1363  * the single-row mode flag is reset as expected.
1364  */
1365  if (PQsendQueryParams(conn, "SELECT generate_series(0, 0)",
1366  0, NULL, NULL, NULL, NULL, 0) != 1)
1367  pg_fatal("failed to send query: %s",
1368  PQerrorMessage(conn));
1369  if (PQsendFlushRequest(conn) != 1)
1370  pg_fatal("failed to send flush request");
1371  if (PQsetSingleRowMode(conn) != 1)
1372  pg_fatal("PQsetSingleRowMode() failed");
1373  res = PQgetResult(conn);
1374  if (res == NULL)
1375  pg_fatal("unexpected NULL");
1377  pg_fatal("Expected PGRES_SINGLE_TUPLE, got %s",
1379  res = PQgetResult(conn);
1380  if (res == NULL)
1381  pg_fatal("unexpected NULL");
1383  pg_fatal("Expected PGRES_TUPLES_OK, got %s",
1385  if (PQgetResult(conn) != NULL)
1386  pg_fatal("expected NULL result");
1387 
1388  if (PQsendQueryParams(conn, "SELECT 1",
1389  0, NULL, NULL, NULL, NULL, 0) != 1)
1390  pg_fatal("failed to send query: %s",
1391  PQerrorMessage(conn));
1392  if (PQsendFlushRequest(conn) != 1)
1393  pg_fatal("failed to send flush request");
1394  res = PQgetResult(conn);
1395  if (res == NULL)
1396  pg_fatal("unexpected NULL");
1398  pg_fatal("Expected PGRES_TUPLES_OK, got %s",
1400  if (PQgetResult(conn) != NULL)
1401  pg_fatal("expected NULL result");
1402 
1403  if (PQexitPipelineMode(conn) != 1)
1404  pg_fatal("failed to end pipeline mode: %s", PQerrorMessage(conn));
1405 
1406  fprintf(stderr, "ok\n");
1407 }
ExecStatusType
Definition: libpq-fe.h:95
void pfree(void *pointer)
Definition: mcxt.c:1431
char * psprintf(const char *fmt,...)
Definition: psprintf.c:46

References conn, fprintf(), i, pfree(), pg_fatal, PGRES_PIPELINE_SYNC, PGRES_SINGLE_TUPLE, PGRES_TUPLES_OK, PQclear(), PQenterPipelineMode(), PQerrorMessage(), PQexitPipelineMode(), PQgetResult(), PQgetvalue(), PQntuples(), PQpipelineSync(), PQresStatus(), PQresultStatus(), PQsendFlushRequest(), PQsendQueryParams(), PQsetSingleRowMode(), psprintf(), and res.

Referenced by main().

◆ test_transaction()

static void test_transaction ( PGconn conn)
static

Definition at line 1414 of file libpq_pipeline.c.

1415 {
1416  PGresult *res;
1417  bool expect_null;
1418  int num_syncs = 0;
1419 
1420  res = PQexec(conn, "DROP TABLE IF EXISTS pq_pipeline_tst;"
1421  "CREATE TABLE pq_pipeline_tst (id int)");
1423  pg_fatal("failed to create test table: %s",
1424  PQerrorMessage(conn));
1425  PQclear(res);
1426 
1427  if (PQenterPipelineMode(conn) != 1)
1428  pg_fatal("failed to enter pipeline mode: %s",
1429  PQerrorMessage(conn));
1430  if (PQsendPrepare(conn, "rollback", "ROLLBACK", 0, NULL) != 1)
1431  pg_fatal("could not send prepare on pipeline: %s",
1432  PQerrorMessage(conn));
1433 
1434  if (PQsendQueryParams(conn,
1435  "BEGIN",
1436  0, NULL, NULL, NULL, NULL, 0) != 1)
1437  pg_fatal("failed to send query: %s",
1438  PQerrorMessage(conn));
1439  if (PQsendQueryParams(conn,
1440  "SELECT 0/0",
1441  0, NULL, NULL, NULL, NULL, 0) != 1)
1442  pg_fatal("failed to send query: %s",
1443  PQerrorMessage(conn));
1444 
1445  /*
1446  * send a ROLLBACK using a prepared stmt. Doesn't work because we need to
1447  * get out of the pipeline-aborted state first.
1448  */
1449  if (PQsendQueryPrepared(conn, "rollback", 0, NULL, NULL, NULL, 1) != 1)
1450  pg_fatal("failed to execute prepared: %s",
1451  PQerrorMessage(conn));
1452 
1453  /* This insert fails because we're in pipeline-aborted state */
1454  if (PQsendQueryParams(conn,
1455  "INSERT INTO pq_pipeline_tst VALUES (1)",
1456  0, NULL, NULL, NULL, NULL, 0) != 1)
1457  pg_fatal("failed to send query: %s",
1458  PQerrorMessage(conn));
1459  if (PQpipelineSync(conn) != 1)
1460  pg_fatal("pipeline sync failed: %s", PQerrorMessage(conn));
1461  num_syncs++;
1462 
1463  /*
1464  * This insert fails even though the pipeline got a SYNC, because we're in
1465  * an aborted transaction
1466  */
1467  if (PQsendQueryParams(conn,
1468  "INSERT INTO pq_pipeline_tst VALUES (2)",
1469  0, NULL, NULL, NULL, NULL, 0) != 1)
1470  pg_fatal("failed to send query: %s",
1471  PQerrorMessage(conn));
1472  if (PQpipelineSync(conn) != 1)
1473  pg_fatal("pipeline sync failed: %s", PQerrorMessage(conn));
1474  num_syncs++;
1475 
1476  /*
1477  * Send ROLLBACK using prepared stmt. This one works because we just did
1478  * PQpipelineSync above.
1479  */
1480  if (PQsendQueryPrepared(conn, "rollback", 0, NULL, NULL, NULL, 1) != 1)
1481  pg_fatal("failed to execute prepared: %s",
1482  PQerrorMessage(conn));
1483 
1484  /*
1485  * Now that we're out of a transaction and in pipeline-good mode, this
1486  * insert works
1487  */
1488  if (PQsendQueryParams(conn,
1489  "INSERT INTO pq_pipeline_tst VALUES (3)",
1490  0, NULL, NULL, NULL, NULL, 0) != 1)
1491  pg_fatal("failed to send query: %s",
1492  PQerrorMessage(conn));
1493  /* Send two syncs now -- match up to SYNC messages below */
1494  if (PQpipelineSync(conn) != 1)
1495  pg_fatal("pipeline sync failed: %s", PQerrorMessage(conn));
1496  num_syncs++;
1497  if (PQpipelineSync(conn) != 1)
1498  pg_fatal("pipeline sync failed: %s", PQerrorMessage(conn));
1499  num_syncs++;
1500 
1501  expect_null = false;
1502  for (int i = 0;; i++)
1503  {
1504  ExecStatusType restype;
1505 
1506  res = PQgetResult(conn);
1507  if (res == NULL)
1508  {
1509  printf("%d: got NULL result\n", i);
1510  if (!expect_null)
1511  pg_fatal("did not expect NULL here");
1512  expect_null = false;
1513  continue;
1514  }
1515  restype = PQresultStatus(res);
1516  printf("%d: got status %s", i, PQresStatus(restype));
1517  if (expect_null)
1518  pg_fatal("expected NULL");
1519  if (restype == PGRES_FATAL_ERROR)
1520  printf("; error: %s", PQerrorMessage(conn));
1521  else if (restype == PGRES_PIPELINE_ABORTED)
1522  {
1523  printf(": command didn't run because pipeline aborted\n");
1524  }
1525  else
1526  printf("\n");
1527  PQclear(res);
1528 
1529  if (restype == PGRES_PIPELINE_SYNC)
1530  num_syncs--;
1531  else
1532  expect_null = true;
1533  if (num_syncs <= 0)
1534  break;
1535  }
1536  if (PQgetResult(conn) != NULL)
1537  pg_fatal("returned something extra after all the syncs: %s",
1539 
1540  if (PQexitPipelineMode(conn) != 1)
1541  pg_fatal("failed to end pipeline mode: %s", PQerrorMessage(conn));
1542 
1543  /* We expect to find one tuple containing the value "3" */
1544  res = PQexec(conn, "SELECT * FROM pq_pipeline_tst");
1546  pg_fatal("failed to obtain result: %s", PQerrorMessage(conn));
1547  if (PQntuples(res) != 1)
1548  pg_fatal("did not get 1 tuple");
1549  if (strcmp(PQgetvalue(res, 0, 0), "3") != 0)
1550  pg_fatal("did not get expected tuple");
1551  PQclear(res);
1552 
1553  fprintf(stderr, "ok\n");
1554 }

References conn, fprintf(), i, pg_fatal, PGRES_COMMAND_OK, PGRES_FATAL_ERROR, PGRES_PIPELINE_ABORTED, PGRES_PIPELINE_SYNC, PGRES_TUPLES_OK, PQclear(), PQenterPipelineMode(), PQerrorMessage(), PQexec(), PQexitPipelineMode(), PQgetResult(), PQgetvalue(), PQntuples(), PQpipelineSync(), PQresStatus(), PQresultStatus(), PQsendPrepare(), PQsendQueryParams(), PQsendQueryPrepared(), printf, and res.

Referenced by main().

◆ test_uniqviol()

static void test_uniqviol ( PGconn conn)
static

Definition at line 1562 of file libpq_pipeline.c.

1563 {
1564  int sock = PQsocket(conn);
1565  PGresult *res;
1566  Oid paramTypes[2] = {INT8OID, INT8OID};
1567  const char *paramValues[2];
1568  char paramValue0[MAXINT8LEN];
1569  char paramValue1[MAXINT8LEN];
1570  int ctr = 0;
1571  int numsent = 0;
1572  int results = 0;
1573  bool read_done = false;
1574  bool write_done = false;
1575  bool error_sent = false;
1576  bool got_error = false;
1577  int switched = 0;
1578  int socketful = 0;
1579  fd_set in_fds;
1580  fd_set out_fds;
1581 
1582  fprintf(stderr, "uniqviol ...");
1583 
1584  PQsetnonblocking(conn, 1);
1585 
1586  paramValues[0] = paramValue0;
1587  paramValues[1] = paramValue1;
1588  sprintf(paramValue1, "42");
1589 
1590  res = PQexec(conn, "drop table if exists ppln_uniqviol;"
1591  "create table ppln_uniqviol(id bigint primary key, idata bigint)");
1593  pg_fatal("failed to create table: %s", PQerrorMessage(conn));
1594 
1595  res = PQexec(conn, "begin");
1597  pg_fatal("failed to begin transaction: %s", PQerrorMessage(conn));
1598 
1599  res = PQprepare(conn, "insertion",
1600  "insert into ppln_uniqviol values ($1, $2) returning id",
1601  2, paramTypes);
1602  if (res == NULL || PQresultStatus(res) != PGRES_COMMAND_OK)
1603  pg_fatal("failed to prepare query: %s", PQerrorMessage(conn));
1604 
1605  if (PQenterPipelineMode(conn) != 1)
1606  pg_fatal("failed to enter pipeline mode");
1607 
1608  while (!read_done)
1609  {
1610  /*
1611  * Avoid deadlocks by reading everything the server has sent before
1612  * sending anything. (Special precaution is needed here to process
1613  * PQisBusy before testing the socket for read-readiness, because the
1614  * socket does not turn read-ready after "sending" queries in aborted
1615  * pipeline mode.)
1616  */
1617  while (PQisBusy(conn) == 0)
1618  {
1619  bool new_error;
1620 
1621  if (results >= numsent)
1622  {
1623  if (write_done)
1624  read_done = true;
1625  break;
1626  }
1627 
1628  res = PQgetResult(conn);
1629  new_error = process_result(conn, res, results, numsent);
1630  if (new_error && got_error)
1631  pg_fatal("got two errors");
1632  got_error |= new_error;
1633  if (results++ >= numsent - 1)
1634  {
1635  if (write_done)
1636  read_done = true;
1637  break;
1638  }
1639  }
1640 
1641  if (read_done)
1642  break;
1643 
1644  FD_ZERO(&out_fds);
1645  FD_SET(sock, &out_fds);
1646 
1647  FD_ZERO(&in_fds);
1648  FD_SET(sock, &in_fds);
1649 
1650  if (select(sock + 1, &in_fds, write_done ? NULL : &out_fds, NULL, NULL) == -1)
1651  {
1652  if (errno == EINTR)
1653  continue;
1654  pg_fatal("select() failed: %m");
1655  }
1656 
1657  if (FD_ISSET(sock, &in_fds) && PQconsumeInput(conn) == 0)
1658  pg_fatal("PQconsumeInput failed: %s", PQerrorMessage(conn));
1659 
1660  /*
1661  * If the socket is writable and we haven't finished sending queries,
1662  * send some.
1663  */
1664  if (!write_done && FD_ISSET(sock, &out_fds))
1665  {
1666  for (;;)
1667  {
1668  int flush;
1669 
1670  /*
1671  * provoke uniqueness violation exactly once after having
1672  * switched to read mode.
1673  */
1674  if (switched >= 1 && !error_sent && ctr % socketful >= socketful / 2)
1675  {
1676  sprintf(paramValue0, "%d", numsent / 2);
1677  fprintf(stderr, "E");
1678  error_sent = true;
1679  }
1680  else
1681  {
1682  fprintf(stderr, ".");
1683  sprintf(paramValue0, "%d", ctr++);
1684  }
1685 
1686  if (PQsendQueryPrepared(conn, "insertion", 2, paramValues, NULL, NULL, 0) != 1)
1687  pg_fatal("failed to execute prepared query: %s", PQerrorMessage(conn));
1688  numsent++;
1689 
1690  /* Are we done writing? */
1691  if (socketful != 0 && numsent % socketful == 42 && error_sent)
1692  {
1693  if (PQsendFlushRequest(conn) != 1)
1694  pg_fatal("failed to send flush request");
1695  write_done = true;
1696  fprintf(stderr, "\ndone writing\n");
1697  PQflush(conn);
1698  break;
1699  }
1700 
1701  /* is the outgoing socket full? */
1702  flush = PQflush(conn);
1703  if (flush == -1)
1704  pg_fatal("failed to flush: %s", PQerrorMessage(conn));
1705  if (flush == 1)
1706  {
1707  if (socketful == 0)
1708  socketful = numsent;
1709  fprintf(stderr, "\nswitch to reading\n");
1710  switched++;
1711  break;
1712  }
1713  }
1714  }
1715  }
1716 
1717  if (!got_error)
1718  pg_fatal("did not get expected error");
1719 
1720  fprintf(stderr, "ok\n");
1721 }
PGresult * PQprepare(PGconn *conn, const char *stmtName, const char *query, int nParams, const Oid *paramTypes)
Definition: fe-exec.c:2268
static bool process_result(PGconn *conn, PGresult *res, int results, int numsent)
#define sprintf
Definition: port.h:240
#define EINTR
Definition: win32_port.h:374

References conn, EINTR, fprintf(), MAXINT8LEN, pg_fatal, PGRES_COMMAND_OK, PQconsumeInput(), PQenterPipelineMode(), PQerrorMessage(), PQexec(), PQflush(), PQgetResult(), PQisBusy(), PQprepare(), PQresultStatus(), PQsendFlushRequest(), PQsendQueryPrepared(), PQsetnonblocking(), PQsocket(), process_result(), res, select, and sprintf.

Referenced by main().

◆ usage()

static void usage ( const char *  progname)
static

Definition at line 1778 of file libpq_pipeline.c.

1779 {
1780  fprintf(stderr, "%s tests libpq's pipeline mode.\n\n", progname);
1781  fprintf(stderr, "Usage:\n");
1782  fprintf(stderr, " %s [OPTION] tests\n", progname);
1783  fprintf(stderr, " %s [OPTION] TESTNAME [CONNINFO]\n", progname);
1784  fprintf(stderr, "\nOptions:\n");
1785  fprintf(stderr, " -t TRACEFILE generate a libpq trace to TRACEFILE\n");
1786  fprintf(stderr, " -r NUMROWS use NUMROWS as the test size\n");
1787 }
const char *const progname

References fprintf(), and progname.

Referenced by main().

◆ va_end()

◆ va_start()

◆ vfprintf()

vfprintf ( stderr  ,
fmt  ,
args   
)

Variable Documentation

◆ create_table_sql

const char* const create_table_sql
static
Initial value:
=
"CREATE UNLOGGED TABLE pq_pipeline_demo(id serial primary key, itemno integer,"
"int8filler int8);"

Definition at line 48 of file libpq_pipeline.c.

Referenced by test_pipeline_abort(), and test_pipelined_insert().

◆ drop_table_sql

const char* const drop_table_sql
static
Initial value:
=
"DROP TABLE IF EXISTS pq_pipeline_demo"

Definition at line 46 of file libpq_pipeline.c.

Referenced by test_pipeline_abort(), and test_pipelined_insert().

◆ fmt

static void const char * fmt

Definition at line 29 of file libpq_pipeline.c.

Referenced by _allocAH(), ahprintf(), appendJSONKeyValueFmt(), appendPQExpBuffer(), appendPQExpBufferVA(), appendStringInfo(), appendStringInfoVA(), archprintf(), bail_out(), CreateArchive(), date_test_defmt(), date_test_fmt(), datetime_to_char_body(), dblink_res_error(), do_pset(), do_serialize(), do_to_timestamp(), dttofmtasc_replace(), ecpg_log(), emit_tap_output(), emit_tap_output_v(), err(), errmsg(), errmsg_internal(), errx(), exec_prog(), executeQueryOrDie(), find_end_token(), float4_to_char(), float8_to_char(), fmtfloat(), fmtlong(), format_elog_string(), int4_to_char(), int8_to_char(), interval_to_char(), libpq_append_conn_error(), libpq_append_error(), log_error(), main(), manifest_report_error(), my_strftime(), numeric_to_char(), numeric_to_number(), OpenArchive(), parallel_exec_prog(), parse_datetime(), pg_fatal(), pg_fprintf(), pg_log(), pg_log_filter_error(), pg_log_generic(), pg_log_generic_v(), pg_log_v(), pg_printf(), pg_snprintf(), pg_sprintf(), pg_strfromd(), pg_vfprintf(), pg_vprintf(), pg_vsnprintf(), pg_vsprintf(), PGTYPESdate_defmt_asc(), PGTYPEStimestamp_defmt_asc(), PGTYPEStimestamp_defmt_scan(), PLy_elog_impl(), PLy_exception_set(), pqInternalNotice(), prep_status(), prep_status_progress(), print_lo_result(), printfPQExpBuffer(), ProcessCopyOptions(), psprintf(), pvsnprintf(), px_debug(), rdefmtdate(), ReadHead(), report_backup_error(), report_fatal_error(), report_invalid_record(), report_manifest_error(), report_status(), ReportWalSummaryError(), rfmtdate(), rfmtlong(), tarPrintf(), text_format(), timestamp_to_char(), timestamptz_to_char(), to_date(), to_timestamp(), walsummary_error_callback(), warn_or_exit_horribly(), and write_stderr().

◆ insert_sql

const char* const insert_sql
static
Initial value:
=
"INSERT INTO pq_pipeline_demo(itemno) VALUES ($1)"

Definition at line 51 of file libpq_pipeline.c.

Referenced by test_pipeline_abort().

◆ insert_sql2

const char* const insert_sql2
static
Initial value:
=
"INSERT INTO pq_pipeline_demo(itemno,int8filler) VALUES ($1, $2)"

Definition at line 53 of file libpq_pipeline.c.

Referenced by test_pipelined_insert().

◆ progname

const char* const progname = "libpq_pipeline"

Definition at line 34 of file libpq_pipeline.c.

Referenced by usage().

◆ tracefile

char* tracefile = NULL

Definition at line 37 of file libpq_pipeline.c.

Referenced by main().