summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Lane <tgl@sss.pgh.pa.us>2022-08-17 11:12:35 -0400
committerTom Lane <tgl@sss.pgh.pa.us>2022-08-17 11:12:35 -0400
commitefd0c16becbf45e3b0215e124fde75fee8fcbce4 (patch)
tree4583c8e845ce18ae4a6c6b4c008a4989c514b3cb
parent4a319fce7671ffbe2a730f79529b7a2ef3794d41 (diff)
downloadpostgresql-efd0c16becbf45e3b0215e124fde75fee8fcbce4.tar.gz
Avoid using list_length() to test for empty list.
The standard way to check for list emptiness is to compare the List pointer to NIL; our list code goes out of its way to ensure that that is the only representation of an empty list. (An acceptable alternative is a plain boolean test for non-null pointer, but explicit mention of NIL is usually preferable.) Various places didn't get that memo and expressed the condition with list_length(), which might not be so bad except that there were such a variety of ways to check it exactly: equal to zero, less than or equal to zero, less than one, yadda yadda. In the name of code readability, let's standardize all those spellings as "list == NIL" or "list != NIL". (There's probably some microscopic efficiency gain too, though few of these look to be at all performance-critical.) A very small number of cases were left as-is because they seemed more consistent with other adjacent list_length tests that way. Peter Smith, with bikeshedding from a number of us Discussion: https://postgr.es/m/CAHut+PtQYe+ENX5KrONMfugf0q6NHg4hR5dAhqEXEc2eefFeig@mail.gmail.com
-rw-r--r--src/backend/catalog/objectaddress.c2
-rw-r--r--src/backend/catalog/pg_depend.c2
-rw-r--r--src/backend/commands/event_trigger.c8
-rw-r--r--src/backend/commands/functioncmds.c4
-rw-r--r--src/backend/commands/publicationcmds.c6
-rw-r--r--src/backend/commands/statscmds.c4
-rw-r--r--src/backend/commands/subscriptioncmds.c2
-rw-r--r--src/backend/commands/tablecmds.c8
-rw-r--r--src/backend/commands/typecmds.c2
-rw-r--r--src/backend/executor/execPartition.c2
-rw-r--r--src/backend/libpq/auth.c4
-rw-r--r--src/backend/libpq/hba.c4
-rw-r--r--src/backend/optimizer/path/costsize.c2
-rw-r--r--src/backend/optimizer/plan/createplan.c2
-rw-r--r--src/backend/optimizer/plan/planner.c12
-rw-r--r--src/backend/partitioning/partprune.c2
-rw-r--r--src/backend/replication/logical/tablesync.c8
-rw-r--r--src/backend/replication/pgoutput/pgoutput.c2
-rw-r--r--src/backend/rewrite/rewriteDefine.c2
-rw-r--r--src/backend/statistics/mcv.c1
-rw-r--r--src/backend/storage/lmgr/lmgr.c2
-rw-r--r--src/backend/utils/adt/jsonb_gin.c2
-rw-r--r--src/backend/utils/adt/jsonpath_exec.c2
-rw-r--r--src/backend/utils/adt/jsonpath_gram.y2
-rw-r--r--src/backend/utils/adt/ruleutils.c2
-rw-r--r--src/backend/utils/adt/selfuncs.c2
-rw-r--r--src/backend/utils/adt/tsquery.c2
-rw-r--r--src/test/modules/test_ddl_deparse/test_ddl_deparse.c2
28 files changed, 47 insertions, 48 deletions
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 6080ff8f5f..dab375f2b2 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -2186,7 +2186,7 @@ pg_get_object_address(PG_FUNCTION_ARGS)
else
{
name = textarray_to_strvaluelist(namearr);
- if (list_length(name) < 1)
+ if (name == NIL)
ereport(ERROR,
(errcode(ERRCODE_INVALID_PARAMETER_VALUE),
errmsg("name list length must be at least %d", 1)));
diff --git a/src/backend/catalog/pg_depend.c b/src/backend/catalog/pg_depend.c
index 89bbb5c9e4..0eff255160 100644
--- a/src/backend/catalog/pg_depend.c
+++ b/src/backend/catalog/pg_depend.c
@@ -947,7 +947,7 @@ getIdentitySequence(Oid relid, AttrNumber attnum, bool missing_ok)
if (list_length(seqlist) > 1)
elog(ERROR, "more than one owned sequence found");
- else if (list_length(seqlist) < 1)
+ else if (seqlist == NIL)
{
if (missing_ok)
return InvalidOid;
diff --git a/src/backend/commands/event_trigger.c b/src/backend/commands/event_trigger.c
index eef3e5d56e..9f8fee7c16 100644
--- a/src/backend/commands/event_trigger.c
+++ b/src/backend/commands/event_trigger.c
@@ -1143,9 +1143,9 @@ trackDroppedObjectsNeeded(void)
* true if any sql_drop, table_rewrite, ddl_command_end event trigger
* exists
*/
- return list_length(EventCacheLookup(EVT_SQLDrop)) > 0 ||
- list_length(EventCacheLookup(EVT_TableRewrite)) > 0 ||
- list_length(EventCacheLookup(EVT_DDLCommandEnd)) > 0;
+ return (EventCacheLookup(EVT_SQLDrop) != NIL) ||
+ (EventCacheLookup(EVT_TableRewrite) != NIL) ||
+ (EventCacheLookup(EVT_DDLCommandEnd) != NIL);
}
/*
@@ -1616,7 +1616,7 @@ EventTriggerAlterTableEnd(void)
parent = currentEventTriggerState->currentCommand->parent;
/* If no subcommands, don't collect */
- if (list_length(currentEventTriggerState->currentCommand->d.alterTable.subcmds) != 0)
+ if (currentEventTriggerState->currentCommand->d.alterTable.subcmds != NIL)
{
MemoryContext oldcxt;
diff --git a/src/backend/commands/functioncmds.c b/src/backend/commands/functioncmds.c
index 59e3af626f..e7e37146f6 100644
--- a/src/backend/commands/functioncmds.c
+++ b/src/backend/commands/functioncmds.c
@@ -419,7 +419,7 @@ interpret_function_parameter_list(ParseState *pstate,
* Make sure no variables are referred to (this is probably dead
* code now that add_missing_from is history).
*/
- if (list_length(pstate->p_rtable) != 0 ||
+ if (pstate->p_rtable != NIL ||
contain_var_clause(def))
ereport(ERROR,
(errcode(ERRCODE_INVALID_COLUMN_REFERENCE),
@@ -1209,7 +1209,7 @@ CreateFunction(ParseState *pstate, CreateFunctionStmt *stmt)
returnsSet = false;
}
- if (list_length(trftypes_list) > 0)
+ if (trftypes_list != NIL)
{
ListCell *lc;
Datum *arr;
diff --git a/src/backend/commands/publicationcmds.c b/src/backend/commands/publicationcmds.c
index 89a005540f..8b574b86c4 100644
--- a/src/backend/commands/publicationcmds.c
+++ b/src/backend/commands/publicationcmds.c
@@ -848,12 +848,12 @@ CreatePublication(ParseState *pstate, CreatePublicationStmt *stmt)
&schemaidlist);
/* FOR ALL TABLES IN SCHEMA requires superuser */
- if (list_length(schemaidlist) > 0 && !superuser())
+ if (schemaidlist != NIL && !superuser())
ereport(ERROR,
errcode(ERRCODE_INSUFFICIENT_PRIVILEGE),
errmsg("must be superuser to create FOR ALL TABLES IN SCHEMA publication"));
- if (list_length(relations) > 0)
+ if (relations != NIL)
{
List *rels;
@@ -871,7 +871,7 @@ CreatePublication(ParseState *pstate, CreatePublicationStmt *stmt)
CloseTableList(rels);
}
- if (list_length(schemaidlist) > 0)
+ if (schemaidlist != NIL)
{
/*
* Schema lock is held until the publication is created to prevent
diff --git a/src/backend/commands/statscmds.c b/src/backend/commands/statscmds.c
index 7c62bebfd2..55216d2891 100644
--- a/src/backend/commands/statscmds.c
+++ b/src/backend/commands/statscmds.c
@@ -339,7 +339,7 @@ CreateStatistics(CreateStatsStmt *stmt)
if ((list_length(stmt->exprs) == 1) && (list_length(stxexprs) == 1))
{
/* statistics kinds not specified */
- if (list_length(stmt->stat_types) > 0)
+ if (stmt->stat_types != NIL)
ereport(ERROR,
(errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
errmsg("when building statistics on a single expression, statistics kinds may not be specified")));
@@ -391,7 +391,7 @@ CreateStatistics(CreateStatsStmt *stmt)
* automatically. This allows calculating good estimates for stats that
* consider per-clause estimates (e.g. functional dependencies).
*/
- build_expressions = (list_length(stxexprs) > 0);
+ build_expressions = (stxexprs != NIL);
/*
* Check that at least two columns were specified in the statement, or
diff --git a/src/backend/commands/subscriptioncmds.c b/src/backend/commands/subscriptioncmds.c
index f73dfb6067..670b219c8d 100644
--- a/src/backend/commands/subscriptioncmds.c
+++ b/src/backend/commands/subscriptioncmds.c
@@ -410,7 +410,7 @@ get_publications_str(List *publications, StringInfo dest, bool quote_literal)
ListCell *lc;
bool first = true;
- Assert(list_length(publications) > 0);
+ Assert(publications != NIL);
foreach(lc, publications)
{
diff --git a/src/backend/commands/tablecmds.c b/src/backend/commands/tablecmds.c
index 70b94bbb39..8d7c68b8b3 100644
--- a/src/backend/commands/tablecmds.c
+++ b/src/backend/commands/tablecmds.c
@@ -2097,7 +2097,7 @@ ExecuteTruncateGuts(List *explicit_rels,
* Assemble an array of relids so we can write a single WAL record for the
* whole action.
*/
- if (list_length(relids_logged) > 0)
+ if (relids_logged != NIL)
{
xl_heap_truncate xlrec;
int i = 0;
@@ -16264,11 +16264,11 @@ ATPrepChangePersistence(Relation rel, bool toLogged)
}
/*
- * Check that the table is not part any publication when changing to
- * UNLOGGED as UNLOGGED tables can't be published.
+ * Check that the table is not part of any publication when changing to
+ * UNLOGGED, as UNLOGGED tables can't be published.
*/
if (!toLogged &&
- list_length(GetRelationPublications(RelationGetRelid(rel))) > 0)
+ GetRelationPublications(RelationGetRelid(rel)) != NIL)
ereport(ERROR,
(errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
errmsg("cannot change table \"%s\" to unlogged because it is part of a publication",
diff --git a/src/backend/commands/typecmds.c b/src/backend/commands/typecmds.c
index d0d87a1184..33b64fd279 100644
--- a/src/backend/commands/typecmds.c
+++ b/src/backend/commands/typecmds.c
@@ -3503,7 +3503,7 @@ domainAddConstraint(Oid domainOid, Oid domainNamespace, Oid baseTypeOid,
* Domains don't allow variables (this is probably dead code now that
* add_missing_from is history, but let's be sure).
*/
- if (list_length(pstate->p_rtable) != 0 ||
+ if (pstate->p_rtable != NIL ||
contain_var_clause(expr))
ereport(ERROR,
(errcode(ERRCODE_INVALID_COLUMN_REFERENCE),
diff --git a/src/backend/executor/execPartition.c b/src/backend/executor/execPartition.c
index eb49106102..ac03271882 100644
--- a/src/backend/executor/execPartition.c
+++ b/src/backend/executor/execPartition.c
@@ -685,7 +685,7 @@ ExecInitPartitionInfo(ModifyTableState *mtstate, EState *estate,
* list and searching for ancestry relationships to each index in the
* ancestor table.
*/
- if (list_length(rootResultRelInfo->ri_onConflictArbiterIndexes) > 0)
+ if (rootResultRelInfo->ri_onConflictArbiterIndexes != NIL)
{
List *childIdxs;
diff --git a/src/backend/libpq/auth.c b/src/backend/libpq/auth.c
index 290eb17325..1545ff9f16 100644
--- a/src/backend/libpq/auth.c
+++ b/src/backend/libpq/auth.c
@@ -2915,14 +2915,14 @@ CheckRADIUSAuth(Port *port)
Assert(offsetof(radius_packet, vector) == 4);
/* Verify parameters */
- if (list_length(port->hba->radiusservers) < 1)
+ if (port->hba->radiusservers == NIL)
{
ereport(LOG,
(errmsg("RADIUS server not specified")));
return STATUS_ERROR;
}
- if (list_length(port->hba->radiussecrets) < 1)
+ if (port->hba->radiussecrets == NIL)
{
ereport(LOG,
(errmsg("RADIUS secret not specified")));
diff --git a/src/backend/libpq/hba.c b/src/backend/libpq/hba.c
index 857b9e5eb2..1447588c4a 100644
--- a/src/backend/libpq/hba.c
+++ b/src/backend/libpq/hba.c
@@ -1564,7 +1564,7 @@ parse_hba_line(TokenizedAuthLine *tok_line, int elevel)
MANDATORY_AUTH_ARG(parsedline->radiusservers, "radiusservers", "radius");
MANDATORY_AUTH_ARG(parsedline->radiussecrets, "radiussecrets", "radius");
- if (list_length(parsedline->radiusservers) < 1)
+ if (parsedline->radiusservers == NIL)
{
ereport(elevel,
(errcode(ERRCODE_CONFIG_FILE_ERROR),
@@ -1575,7 +1575,7 @@ parse_hba_line(TokenizedAuthLine *tok_line, int elevel)
return NULL;
}
- if (list_length(parsedline->radiussecrets) < 1)
+ if (parsedline->radiussecrets == NIL)
{
ereport(elevel,
(errcode(ERRCODE_CONFIG_FILE_ERROR),
diff --git a/src/backend/optimizer/path/costsize.c b/src/backend/optimizer/path/costsize.c
index fb28e6411a..7292d68dbc 100644
--- a/src/backend/optimizer/path/costsize.c
+++ b/src/backend/optimizer/path/costsize.c
@@ -1957,7 +1957,7 @@ compute_cpu_sort_cost(PlannerInfo *root, List *pathkeys, int nPresortedKeys,
List *cache_varinfos = NIL;
/* fallback if pathkeys is unknown */
- if (list_length(pathkeys) == 0)
+ if (pathkeys == NIL)
{
/*
* If we'll use a bounded heap-sort keeping just K tuples in memory,
diff --git a/src/backend/optimizer/plan/createplan.c b/src/backend/optimizer/plan/createplan.c
index e37f2933eb..aa9d4e51b9 100644
--- a/src/backend/optimizer/plan/createplan.c
+++ b/src/backend/optimizer/plan/createplan.c
@@ -2462,7 +2462,7 @@ create_groupingsets_plan(PlannerInfo *root, GroupingSetsPath *best_path)
if (rollup->is_hashed)
strat = AGG_HASHED;
- else if (list_length(linitial(rollup->gsets)) == 0)
+ else if (linitial(rollup->gsets) == NIL)
strat = AGG_PLAIN;
else
strat = AGG_SORTED;
diff --git a/src/backend/optimizer/plan/planner.c b/src/backend/optimizer/plan/planner.c
index 64632db73c..e636596b57 100644
--- a/src/backend/optimizer/plan/planner.c
+++ b/src/backend/optimizer/plan/planner.c
@@ -3097,7 +3097,7 @@ reorder_grouping_sets(List *groupingsets, List *sortclause)
GroupingSetData *gs = makeNode(GroupingSetData);
while (list_length(sortclause) > list_length(previous) &&
- list_length(new_elems) > 0)
+ new_elems != NIL)
{
SortGroupClause *sc = list_nth(sortclause, list_length(previous));
int ref = sc->tleSortGroupRef;
@@ -4120,7 +4120,7 @@ consider_groupingsets_paths(PlannerInfo *root,
/*
* If we have sorted input but nothing we can do with it, bail.
*/
- if (list_length(gd->rollups) == 0)
+ if (gd->rollups == NIL)
return;
/*
@@ -6477,7 +6477,7 @@ add_paths_to_grouping_rel(PlannerInfo *root, RelOptInfo *input_rel,
group_clauses,
orderAggPathkeys);
- Assert(list_length(pathkey_orderings) > 0);
+ Assert(pathkey_orderings != NIL);
/* process all potentially interesting grouping reorderings */
foreach(lc2, pathkey_orderings)
@@ -6650,7 +6650,7 @@ add_paths_to_grouping_rel(PlannerInfo *root, RelOptInfo *input_rel,
group_clauses,
orderAggPathkeys);
- Assert(list_length(pathkey_orderings) > 0);
+ Assert(pathkey_orderings != NIL);
/* process all potentially interesting grouping reorderings */
foreach(lc2, pathkey_orderings)
@@ -6994,7 +6994,7 @@ create_partial_grouping_paths(PlannerInfo *root,
group_clauses,
orderAggPathkeys);
- Assert(list_length(pathkey_orderings) > 0);
+ Assert(pathkey_orderings != NIL);
/* process all potentially interesting grouping reorderings */
foreach(lc2, pathkey_orderings)
@@ -7145,7 +7145,7 @@ create_partial_grouping_paths(PlannerInfo *root,
group_clauses,
orderAggPathkeys);
- Assert(list_length(pathkey_orderings) > 0);
+ Assert(pathkey_orderings != NIL);
/* process all potentially interesting grouping reorderings */
foreach(lc2, pathkey_orderings)
diff --git a/src/backend/partitioning/partprune.c b/src/backend/partitioning/partprune.c
index 9d3c05aed3..fc19232c7b 100644
--- a/src/backend/partitioning/partprune.c
+++ b/src/backend/partitioning/partprune.c
@@ -2383,7 +2383,7 @@ get_steps_using_prefix(GeneratePruningStepsContext *context,
context->rel->part_scheme->strategy == PARTITION_STRATEGY_HASH);
/* Quick exit if there are no values to prefix with. */
- if (list_length(prefix) == 0)
+ if (prefix == NIL)
{
PartitionPruneStep *step;
diff --git a/src/backend/replication/logical/tablesync.c b/src/backend/replication/logical/tablesync.c
index 6a01ffd273..bfcb80b495 100644
--- a/src/backend/replication/logical/tablesync.c
+++ b/src/backend/replication/logical/tablesync.c
@@ -383,7 +383,7 @@ process_syncing_tables_for_apply(XLogRecPtr current_lsn)
* immediate restarts. We don't need it if there are no tables that need
* syncing.
*/
- if (table_states_not_ready && !last_start_times)
+ if (table_states_not_ready != NIL && !last_start_times)
{
HASHCTL ctl;
@@ -397,7 +397,7 @@ process_syncing_tables_for_apply(XLogRecPtr current_lsn)
* Clean up the hash table when we're done with all tables (just to
* release the bit of memory).
*/
- else if (!table_states_not_ready && last_start_times)
+ else if (table_states_not_ready == NIL && last_start_times)
{
hash_destroy(last_start_times);
last_start_times = NULL;
@@ -1498,7 +1498,7 @@ FetchTableStates(bool *started_tx)
* if table_state_not_ready was empty we still need to check again to
* see if there are 0 tables.
*/
- has_subrels = (list_length(table_states_not_ready) > 0) ||
+ has_subrels = (table_states_not_ready != NIL) ||
HasSubscriptionRelations(MySubscription->oid);
table_states_valid = true;
@@ -1534,7 +1534,7 @@ AllTablesyncsReady(void)
* Return false when there are no tables in subscription or not all tables
* are in ready state; true otherwise.
*/
- return has_subrels && list_length(table_states_not_ready) == 0;
+ return has_subrels && (table_states_not_ready == NIL);
}
/*
diff --git a/src/backend/replication/pgoutput/pgoutput.c b/src/backend/replication/pgoutput/pgoutput.c
index a3c1ba8a40..62e0ffecd8 100644
--- a/src/backend/replication/pgoutput/pgoutput.c
+++ b/src/backend/replication/pgoutput/pgoutput.c
@@ -450,7 +450,7 @@ pgoutput_startup(LogicalDecodingContext *ctx, OutputPluginOptions *opt,
errmsg("client sent proto_version=%d but we only support protocol %d or higher",
data->protocol_version, LOGICALREP_PROTO_MIN_VERSION_NUM)));
- if (list_length(data->publication_names) < 1)
+ if (data->publication_names == NIL)
ereport(ERROR,
(errcode(ERRCODE_INVALID_PARAMETER_VALUE),
errmsg("publication_names parameter missing")));
diff --git a/src/backend/rewrite/rewriteDefine.c b/src/backend/rewrite/rewriteDefine.c
index a5a1fb887f..213eabfbb9 100644
--- a/src/backend/rewrite/rewriteDefine.c
+++ b/src/backend/rewrite/rewriteDefine.c
@@ -313,7 +313,7 @@ DefineQueryRewrite(const char *rulename,
*
* So there cannot be INSTEAD NOTHING, ...
*/
- if (list_length(action) == 0)
+ if (action == NIL)
ereport(ERROR,
(errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
errmsg("INSTEAD NOTHING rules on SELECT are not implemented"),
diff --git a/src/backend/statistics/mcv.c b/src/backend/statistics/mcv.c
index 6d9a098479..5410a68bc9 100644
--- a/src/backend/statistics/mcv.c
+++ b/src/backend/statistics/mcv.c
@@ -1610,7 +1610,6 @@ mcv_get_match_bitmap(PlannerInfo *root, List *clauses,
/* The bitmap may be partially built. */
Assert(clauses != NIL);
- Assert(list_length(clauses) >= 1);
Assert(mcvlist != NULL);
Assert(mcvlist->nitems > 0);
Assert(mcvlist->nitems <= STATS_MCVLIST_MAX_ITEMS);
diff --git a/src/backend/storage/lmgr/lmgr.c b/src/backend/storage/lmgr/lmgr.c
index 1543da6162..1043068bac 100644
--- a/src/backend/storage/lmgr/lmgr.c
+++ b/src/backend/storage/lmgr/lmgr.c
@@ -913,7 +913,7 @@ WaitForLockersMultiple(List *locktags, LOCKMODE lockmode, bool progress)
int done = 0;
/* Done if no locks to wait for */
- if (list_length(locktags) == 0)
+ if (locktags == NIL)
return;
/* Collect the transactions we need to wait on */
diff --git a/src/backend/utils/adt/jsonb_gin.c b/src/backend/utils/adt/jsonb_gin.c
index c5325acde4..731eb018d4 100644
--- a/src/backend/utils/adt/jsonb_gin.c
+++ b/src/backend/utils/adt/jsonb_gin.c
@@ -567,7 +567,7 @@ extract_jsp_path_expr(JsonPathGinContext *cxt, JsonPathGinPath path,
/* extract a list of nodes to be AND-ed */
List *nodes = extract_jsp_path_expr_nodes(cxt, path, jsp, scalar);
- if (list_length(nodes) <= 0)
+ if (nodes == NIL)
/* no nodes were extracted => full scan is needed for this path */
return NULL;
diff --git a/src/backend/utils/adt/jsonpath_exec.c b/src/backend/utils/adt/jsonpath_exec.c
index 10c7e64aab..5b6a480572 100644
--- a/src/backend/utils/adt/jsonpath_exec.c
+++ b/src/backend/utils/adt/jsonpath_exec.c
@@ -2552,7 +2552,7 @@ JsonValueListLength(const JsonValueList *jvl)
static bool
JsonValueListIsEmpty(JsonValueList *jvl)
{
- return !jvl->singleton && list_length(jvl->list) <= 0;
+ return !jvl->singleton && (jvl->list == NIL);
}
static JsonbValue *
diff --git a/src/backend/utils/adt/jsonpath_gram.y b/src/backend/utils/adt/jsonpath_gram.y
index f903dba3e3..ce5d5af891 100644
--- a/src/backend/utils/adt/jsonpath_gram.y
+++ b/src/backend/utils/adt/jsonpath_gram.y
@@ -459,7 +459,7 @@ makeIndexArray(List *list)
ListCell *cell;
int i = 0;
- Assert(list_length(list) > 0);
+ Assert(list != NIL);
v->value.array.nelems = list_length(list);
v->value.array.elems = palloc(sizeof(v->value.array.elems[0]) *
diff --git a/src/backend/utils/adt/ruleutils.c b/src/backend/utils/adt/ruleutils.c
index d575aa0066..8964f73b92 100644
--- a/src/backend/utils/adt/ruleutils.c
+++ b/src/backend/utils/adt/ruleutils.c
@@ -8114,7 +8114,7 @@ get_parameter(Param *param, deparse_context *context)
{
deparse_namespace *dpns = lfirst(lc);
- if (list_length(dpns->rtable_names) > 0)
+ if (dpns->rtable_names != NIL)
{
should_qualify = true;
break;
diff --git a/src/backend/utils/adt/selfuncs.c b/src/backend/utils/adt/selfuncs.c
index d35e5605de..50b588e3d0 100644
--- a/src/backend/utils/adt/selfuncs.c
+++ b/src/backend/utils/adt/selfuncs.c
@@ -3408,7 +3408,7 @@ estimate_num_groups_incremental(PlannerInfo *root, List *groupExprs,
* for normal cases with GROUP BY or DISTINCT, but it is possible for
* corner cases with set operations.)
*/
- if (groupExprs == NIL || (pgset && list_length(*pgset) < 1))
+ if (groupExprs == NIL || (pgset && *pgset == NIL))
return 1.0;
/*
diff --git a/src/backend/utils/adt/tsquery.c b/src/backend/utils/adt/tsquery.c
index f54f298814..f49e6bb157 100644
--- a/src/backend/utils/adt/tsquery.c
+++ b/src/backend/utils/adt/tsquery.c
@@ -829,7 +829,7 @@ parse_tsquery(char *buf,
close_tsvector_parser(state.valstate);
- if (list_length(state.polstr) == 0)
+ if (state.polstr == NIL)
{
ereport(NOTICE,
(errmsg("text-search query doesn't contain lexemes: \"%s\"",
diff --git a/src/test/modules/test_ddl_deparse/test_ddl_deparse.c b/src/test/modules/test_ddl_deparse/test_ddl_deparse.c
index bdbe05ceeb..133594999b 100644
--- a/src/test/modules/test_ddl_deparse/test_ddl_deparse.c
+++ b/src/test/modules/test_ddl_deparse/test_ddl_deparse.c
@@ -95,7 +95,7 @@ get_altertable_subcmdinfo(PG_FUNCTION_ARGS)
SetSingleFuncCall(fcinfo, 0);
- if (list_length(cmd->d.alterTable.subcmds) == 0)
+ if (cmd->d.alterTable.subcmds == NIL)
elog(ERROR, "empty alter table subcommand list");
foreach(cell, cmd->d.alterTable.subcmds)