agora inbox for [email protected]help / color / mirror / Atom feed
Strand COPY from problem 1609+ messages / 2 participants [nested] [flat]
* Strand COPY from problem @ 2004-01-09 12:54 [email protected] 0 siblings, 0 replies; 1609+ messages in thread From: [email protected] @ 2004-01-09 12:54 UTC (permalink / raw) To: pgsql-hackers Hi every one and Happy new year (this is my first post since 2004) I wanted to upgrade my system from 7.3.4 to 7.4. and fell on this: One of the databases I host doesn't load correctly. Let me explain: I first pg_dumpall (with the 7.4.1 version) using the 7.3.4 port; that works fine. The psql -f all.sql template1 on the 741 version to recreate every thing. 2 copy don't work. those tables both contain a large text column with text containing lots of \r\n ' " . What's stange is that copy from stdin; obviously don't work but if I copy table to '/tmp/xxx.dat' in 7.3.4 and copy table from 'xxx.dat' in 7.4.1, it works fine... Could there but something wrong with from stdin? TIA for your help... -- Olivier PRENANT Tel: +33-5-61-50-97-00 (Work) 6, Chemin d'Harraud Turrou +33-5-61-50-97-01 (Fax) 31190 AUTERIVE +33-6-07-63-80-64 (GSM) FRANCE Email: [email protected] ------------------------------------------------------------------------------ Make your life a dream, make your dream a reality. (St Exupery) ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1609+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1609+ messages in thread
end of thread, other threads:[~2024-09-11 04:21 UTC | newest] Thread overview: 1609+ messages (download: mbox mbox.gz follow: Atom feed) -- links below jump to the message on this page -- 2004-01-09 12:54 Strand COPY from problem [email protected] 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]> 2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
This inbox is served by agora; see mirroring instructions for how to clone and mirror all data and code used for this inbox