| From: | Lucas Jeffrey <luquijeffrey(at)gmail(dot)com> |
|---|---|
| To: | pgsql-hackers(at)lists(dot)postgresql(dot)org |
| Cc: | Lucas Jeffrey <luquijeffrey(at)gmail(dot)com> |
| Subject: | [PATCH] Optimization: avoid repeated strlen() calls in function CreateTriggerFiringOn when parsing trigger arguments |
| Date: | 2026-09-09 00:00:31 |
| Message-ID: | 20260909000031.1538080-1-luquijeffrey@gmail.com |
| Views: | Whole Thread | Raw Message | Download mbox | Resend email |
| Thread: | |
| Lists: | pgsql-hackers |
Signed-off-by: Lucas Jeffrey <luquijeffrey(at)gmail(dot)com>
---
src/backend/commands/trigger.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/src/backend/commands/trigger.c b/src/backend/commands/trigger.c
index 1d10fb1c13c..fe447f6df68 100644
--- a/src/backend/commands/trigger.c
+++ b/src/backend/commands/trigger.c
@@ -899,6 +899,7 @@ CreateTriggerFiringOn(const CreateTrigStmt *stmt, const char *queryString,
char *args;
int nargs = list_length(stmt->args);
int len = 0;
+ char *d;
Assert(nargs >= 0);
if (nargs > PG_INT16_MAX)
@@ -922,10 +923,10 @@ CreateTriggerFiringOn(const CreateTrigStmt *stmt, const char *queryString,
}
args = (char *) palloc(len + 1);
args[0] = '\0';
+ d = args;
foreach(le, stmt->args)
{
char *s = strVal(lfirst(le));
- char *d = args + strlen(args);
while (*s)
{
@@ -934,6 +935,7 @@ CreateTriggerFiringOn(const CreateTrigStmt *stmt, const char *queryString,
*d++ = *s++;
}
strcpy(d, "\\000");
+ d += 4;
}
values[Anum_pg_trigger_tgnargs - 1] = Int16GetDatum(nargs);
values[Anum_pg_trigger_tgargs - 1] = DirectFunctionCall1(byteain,
--
2.43.0
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Michael Paquier | 2026-09-09 00:03:46 | Re: ExecForceStoreHeapTuple() loses tts_tid, so ORDER BY-op index scans project an invalid ctid |
| Previous Message | surya poondla | 2026-09-08 23:57:21 | Re: Fix XLogFileReadAnyTLI silently applying divergent WAL from wrong timeline |