diff --git a/src/backend/distributed/commands/multi_copy.c b/src/backend/distributed/commands/multi_copy.c index 57d3024cd..6969e7206 100644 --- a/src/backend/distributed/commands/multi_copy.c +++ b/src/backend/distributed/commands/multi_copy.c @@ -72,6 +72,7 @@ #include "distributed/commands/utility_hook.h" #include "distributed/intermediate_results.h" #include "distributed/local_executor.h" +#include "distributed/log_utils.h" #include "distributed/master_protocol.h" #include "distributed/metadata_cache.h" #include "distributed/multi_partitioning_utils.h" diff --git a/src/backend/distributed/connection/connection_management.c b/src/backend/distributed/connection/connection_management.c index b31195171..9679c064c 100644 --- a/src/backend/distributed/connection/connection_management.c +++ b/src/backend/distributed/connection/connection_management.c @@ -19,6 +19,7 @@ #include "commands/dbcommands.h" #include "distributed/connection_management.h" #include "distributed/errormessage.h" +#include "distributed/log_utils.h" #include "distributed/memutils.h" #include "distributed/metadata_cache.h" #include "distributed/hash_helpers.h" diff --git a/src/backend/distributed/connection/remote_commands.c b/src/backend/distributed/connection/remote_commands.c index 8666d6079..b7c4bc7a0 100644 --- a/src/backend/distributed/connection/remote_commands.c +++ b/src/backend/distributed/connection/remote_commands.c @@ -15,6 +15,7 @@ #include "distributed/connection_management.h" #include "distributed/errormessage.h" +#include "distributed/log_utils.h" #include "distributed/remote_commands.h" #include "lib/stringinfo.h" #include "miscadmin.h" diff --git a/src/backend/distributed/executor/multi_server_executor.c b/src/backend/distributed/executor/multi_server_executor.c index 73876be3f..53f7f8aac 100644 --- a/src/backend/distributed/executor/multi_server_executor.c +++ b/src/backend/distributed/executor/multi_server_executor.c @@ -26,6 +26,7 @@ #include "distributed/multi_server_executor.h" #include "distributed/subplan_execution.h" #include "distributed/worker_protocol.h" +#include "distributed/log_utils.h" #include "utils/lsyscache.h" int RemoteTaskCheckInterval = 100; /* per cycle sleep interval in millisecs */ @@ -51,7 +52,7 @@ JobExecutorType(DistributedPlan *distributedPlan) /* debug distribution column value */ if (routerExecutablePlan) { - if (log_min_messages <= DEBUG2 || client_min_messages <= DEBUG2) + if (IsLoggableLevel(DEBUG2)) { Const *partitionValueConst = job->partitionKeyValue; diff --git a/src/backend/distributed/planner/insert_select_planner.c b/src/backend/distributed/planner/insert_select_planner.c index 025ddd58e..95fabdfd0 100644 --- a/src/backend/distributed/planner/insert_select_planner.c +++ b/src/backend/distributed/planner/insert_select_planner.c @@ -15,6 +15,7 @@ #include "distributed/citus_ruleutils.h" #include "distributed/colocation_utils.h" #include "distributed/errormessage.h" +#include "distributed/log_utils.h" #include "distributed/insert_select_planner.h" #include "distributed/metadata_cache.h" #include "distributed/multi_executor.h" diff --git a/src/backend/distributed/planner/multi_physical_planner.c b/src/backend/distributed/planner/multi_physical_planner.c index 9da71ec31..64fbe015a 100644 --- a/src/backend/distributed/planner/multi_physical_planner.c +++ b/src/backend/distributed/planner/multi_physical_planner.c @@ -43,6 +43,7 @@ #include "distributed/multi_logical_optimizer.h" #include "distributed/multi_logical_planner.h" #include "distributed/multi_physical_planner.h" +#include "distributed/log_utils.h" #include "distributed/pg_dist_partition.h" #include "distributed/pg_dist_shard.h" #include "distributed/query_pushdown_planning.h" @@ -3834,7 +3835,7 @@ JoinPrunable(RangeTableFragment *leftFragment, RangeTableFragment *rightFragment overlap = ShardIntervalsOverlap(leftFragmentInterval, rightFragmentInterval); if (!overlap) { - if (log_min_messages <= DEBUG2 || client_min_messages <= DEBUG2) + if (IsLoggableLevel(DEBUG2)) { StringInfo leftString = FragmentIntervalString(leftFragmentInterval); StringInfo rightString = FragmentIntervalString(rightFragmentInterval); diff --git a/src/backend/distributed/planner/multi_router_planner.c b/src/backend/distributed/planner/multi_router_planner.c index a3855b6f3..acabc48cd 100644 --- a/src/backend/distributed/planner/multi_router_planner.c +++ b/src/backend/distributed/planner/multi_router_planner.c @@ -25,6 +25,7 @@ #include "distributed/deparse_shard_query.h" #include "distributed/distribution_column.h" #include "distributed/errormessage.h" +#include "distributed/log_utils.h" #include "distributed/insert_select_planner.h" #include "distributed/master_metadata_utility.h" #include "distributed/master_protocol.h" diff --git a/src/backend/distributed/planner/recursive_planning.c b/src/backend/distributed/planner/recursive_planning.c index 367b947b4..bed395bb9 100644 --- a/src/backend/distributed/planner/recursive_planning.c +++ b/src/backend/distributed/planner/recursive_planning.c @@ -59,6 +59,7 @@ #include "distributed/commands/multi_copy.h" #include "distributed/distributed_planner.h" #include "distributed/errormessage.h" +#include "distributed/log_utils.h" #include "distributed/metadata_cache.h" #include "distributed/multi_logical_planner.h" #include "distributed/multi_router_planner.h" @@ -68,6 +69,7 @@ #include "distributed/query_pushdown_planning.h" #include "distributed/recursive_planning.h" #include "distributed/relation_restriction_equivalence.h" +#include "distributed/log_utils.h" #include "distributed/version_compat.h" #include "lib/stringinfo.h" #include "optimizer/planner.h" @@ -222,8 +224,7 @@ GenerateSubplansForSubqueriesAndCTEs(uint64 planId, Query *originalQuery, RaiseDeferredError(error, ERROR); } - if (context.subPlanList && (log_min_messages <= DEBUG1 || client_min_messages <= - DEBUG1)) + if (context.subPlanList && IsLoggableLevel(DEBUG1)) { StringInfo subPlanString = makeStringInfo(); pg_get_query_def(originalQuery, subPlanString); @@ -730,7 +731,7 @@ RecursivelyPlanCTEs(Query *query, RecursivePlanningContext *planningContext) subPlanId = list_length(planningContext->subPlanList) + 1; - if (log_min_messages <= DEBUG1 || client_min_messages <= DEBUG1) + if (IsLoggableLevel(DEBUG1)) { StringInfo subPlanString = makeStringInfo(); pg_get_query_def(subquery, subPlanString); @@ -1129,7 +1130,7 @@ RecursivelyPlanSubquery(Query *subquery, RecursivePlanningContext *planningConte * Subquery will go through the standard planner, thus to properly deparse it * we keep its copy: debugQuery. */ - if (log_min_messages <= DEBUG1 || client_min_messages <= DEBUG1) + if (IsLoggableLevel(DEBUG1)) { debugQuery = copyObject(subquery); } @@ -1151,7 +1152,7 @@ RecursivelyPlanSubquery(Query *subquery, RecursivePlanningContext *planningConte */ resultQuery = BuildSubPlanResultQuery(subquery->targetList, NIL, resultId); - if (log_min_messages <= DEBUG1 || client_min_messages <= DEBUG1) + if (IsLoggableLevel(DEBUG1)) { StringInfo subqueryString = makeStringInfo(); @@ -1446,6 +1447,7 @@ TransformFunctionRTE(RangeTblEntry *rangeTblEntry) subquery->targetList = lappend(subquery->targetList, targetEntry); } } + /* * If tupleDesc is NULL we have 2 different cases: * @@ -1496,6 +1498,7 @@ TransformFunctionRTE(RangeTblEntry *rangeTblEntry) columnType = list_nth_oid(rangeTblFunction->funccoltypes, targetColumnIndex); } + /* use the types in the function definition otherwise */ else { diff --git a/src/backend/distributed/transaction/distributed_deadlock_detection.c b/src/backend/distributed/transaction/distributed_deadlock_detection.c index 93451f057..1e968140f 100644 --- a/src/backend/distributed/transaction/distributed_deadlock_detection.c +++ b/src/backend/distributed/transaction/distributed_deadlock_detection.c @@ -18,6 +18,7 @@ #include "distributed/backend_data.h" #include "distributed/distributed_deadlock_detection.h" #include "distributed/errormessage.h" +#include "distributed/log_utils.h" #include "distributed/hash_helpers.h" #include "distributed/listutils.h" #include "distributed/lock_graph.h" diff --git a/src/backend/distributed/utils/citus_nodefuncs.c b/src/backend/distributed/utils/citus_nodefuncs.c index d947eec3f..a58686493 100644 --- a/src/backend/distributed/utils/citus_nodefuncs.c +++ b/src/backend/distributed/utils/citus_nodefuncs.c @@ -14,6 +14,7 @@ #include "distributed/citus_nodes.h" #include "distributed/citus_nodefuncs.h" #include "distributed/errormessage.h" +#include "distributed/log_utils.h" #include "distributed/metadata_cache.h" #include "distributed/distributed_planner.h" #include "distributed/multi_router_planner.h" diff --git a/src/backend/distributed/utils/citus_outfuncs.c b/src/backend/distributed/utils/citus_outfuncs.c index d293e2a00..364a3ffb7 100644 --- a/src/backend/distributed/utils/citus_outfuncs.c +++ b/src/backend/distributed/utils/citus_outfuncs.c @@ -23,6 +23,7 @@ #include "distributed/citus_nodefuncs.h" #include "distributed/citus_nodes.h" #include "distributed/errormessage.h" +#include "distributed/log_utils.h" #include "distributed/multi_logical_planner.h" #include "distributed/multi_physical_planner.h" #include "distributed/distributed_planner.h" diff --git a/src/backend/distributed/utils/citus_readfuncs.c b/src/backend/distributed/utils/citus_readfuncs.c index bea14e73f..f5d1a3862 100644 --- a/src/backend/distributed/utils/citus_readfuncs.c +++ b/src/backend/distributed/utils/citus_readfuncs.c @@ -15,6 +15,7 @@ #include "distributed/citus_nodefuncs.h" #include "distributed/errormessage.h" +#include "distributed/log_utils.h" #include "distributed/distributed_planner.h" #include "distributed/multi_server_executor.h" #include "nodes/parsenodes.h" diff --git a/src/backend/distributed/utils/errormessage.c b/src/backend/distributed/utils/errormessage.c index f7529dd3f..62520555d 100644 --- a/src/backend/distributed/utils/errormessage.c +++ b/src/backend/distributed/utils/errormessage.c @@ -10,17 +10,7 @@ #include "distributed/citus_nodes.h" #include "distributed/errormessage.h" - - -/* - * ApplyLogRedaction is only supported in Citus Enterprise - */ -char * -ApplyLogRedaction(const char *logText) -{ - return (char *) logText; -} - +#include "distributed/log_utils.h" /* * DeferredErrorInternal is a helper function for DeferredError(). diff --git a/src/backend/distributed/utils/log_utils.c b/src/backend/distributed/utils/log_utils.c new file mode 100644 index 000000000..ac4ba2805 --- /dev/null +++ b/src/backend/distributed/utils/log_utils.c @@ -0,0 +1,35 @@ +/*------------------------------------------------------------------------- + * + * log_utils.c + * Utilities regarding logs + * + * Copyright (c) Citus Data, Inc. + *------------------------------------------------------------------------- + */ + +#include "postgres.h" + +#include "utils/guc.h" +#include "distributed/log_utils.h" + + +/* + * IsLoggableLevel returns true if either of client or server log guc is configured to + * log the given log level. + * In postgres, log can be configured differently for clients and servers. + */ +bool +IsLoggableLevel(int logLevel) +{ + return log_min_messages <= logLevel || client_min_messages <= logLevel; +} + + +/* + * ApplyLogRedaction is only supported in Citus Enterprise + */ +char * +ApplyLogRedaction(const char *logText) +{ + return (char *) logText; +} diff --git a/src/include/distributed/distributed_planner.h b/src/include/distributed/distributed_planner.h index 4bc7314ce..1d54a901b 100644 --- a/src/include/distributed/distributed_planner.h +++ b/src/include/distributed/distributed_planner.h @@ -22,6 +22,7 @@ #include "distributed/citus_nodes.h" #include "distributed/errormessage.h" +#include "distributed/log_utils.h" /* values used by jobs and tasks which do not require identifiers */ diff --git a/src/include/distributed/errormessage.h b/src/include/distributed/errormessage.h index f20f0f3b3..87992deb1 100644 --- a/src/include/distributed/errormessage.h +++ b/src/include/distributed/errormessage.h @@ -72,5 +72,3 @@ DeferredErrorMessage * DeferredErrorInternal(int code, const char *message, cons void RaiseDeferredErrorInternal(DeferredErrorMessage *error, int elevel); #endif - -extern char * ApplyLogRedaction(const char *text); diff --git a/src/include/distributed/log_utils.h b/src/include/distributed/log_utils.h new file mode 100644 index 000000000..004f00831 --- /dev/null +++ b/src/include/distributed/log_utils.h @@ -0,0 +1,15 @@ +/*------------------------------------------------------------------------- + * log_utils.h + * + * Copyright (c) Citus Data, Inc. + * + *------------------------------------------------------------------------- + */ + +#ifndef LOG_UTILS_H +#define LOG_UTILS_H + +extern bool IsLoggableLevel(int logLevel); +extern char * ApplyLogRedaction(const char *text); + +#endif /* LOG_UTILS_H */ diff --git a/src/include/distributed/multi_logical_planner.h b/src/include/distributed/multi_logical_planner.h index a159ce284..a1ede5dab 100644 --- a/src/include/distributed/multi_logical_planner.h +++ b/src/include/distributed/multi_logical_planner.h @@ -16,6 +16,7 @@ #include "distributed/citus_nodes.h" #include "distributed/errormessage.h" +#include "distributed/log_utils.h" #include "distributed/multi_join_order.h" #include "distributed/relation_restriction_equivalence.h" #include "nodes/nodes.h" diff --git a/src/include/distributed/multi_physical_planner.h b/src/include/distributed/multi_physical_planner.h index a3ddd1a94..f44609b6b 100644 --- a/src/include/distributed/multi_physical_planner.h +++ b/src/include/distributed/multi_physical_planner.h @@ -20,6 +20,7 @@ #include "datatype/timestamp.h" #include "distributed/citus_nodes.h" #include "distributed/errormessage.h" +#include "distributed/log_utils.h" #include "distributed/master_metadata_utility.h" #include "distributed/multi_logical_planner.h" #include "distributed/distributed_planner.h" diff --git a/src/include/distributed/multi_router_planner.h b/src/include/distributed/multi_router_planner.h index a6f169bc9..8ad6e57e7 100644 --- a/src/include/distributed/multi_router_planner.h +++ b/src/include/distributed/multi_router_planner.h @@ -15,6 +15,7 @@ #include "c.h" #include "distributed/errormessage.h" +#include "distributed/log_utils.h" #include "distributed/multi_logical_planner.h" #include "distributed/multi_physical_planner.h" #include "distributed/distributed_planner.h" diff --git a/src/include/distributed/query_pushdown_planning.h b/src/include/distributed/query_pushdown_planning.h index 1317a40cc..8ba3341fb 100644 --- a/src/include/distributed/query_pushdown_planning.h +++ b/src/include/distributed/query_pushdown_planning.h @@ -16,6 +16,7 @@ #include "distributed/multi_logical_planner.h" #include "distributed/multi_physical_planner.h" #include "distributed/errormessage.h" +#include "distributed/log_utils.h" /* Config variables managed via guc.c */ diff --git a/src/include/distributed/recursive_planning.h b/src/include/distributed/recursive_planning.h index 7b7c477af..99081c66f 100644 --- a/src/include/distributed/recursive_planning.h +++ b/src/include/distributed/recursive_planning.h @@ -12,6 +12,7 @@ #include "distributed/errormessage.h" +#include "distributed/log_utils.h" #include "distributed/relation_restriction_equivalence.h" #include "nodes/pg_list.h" #include "nodes/primnodes.h"